From cd0818d63316c5a9418c5eb0eb8b05a823e831f2 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Mon, 19 Feb 2024 19:59:50 +0200 Subject: [PATCH 01/59] build(yarn): Upgrade TypeScript to 5.2.2 --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 5e54d204e..9cca460b8 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "prettier": "^2.6.2", "ts-jest": "^28.0.5", "ts-node": "^10.9.1", - "typescript": "^4.7.4" + "typescript": "5.2.2" }, "scripts": { "clean": "yarn clean:normal", diff --git a/yarn.lock b/yarn.lock index dec44c87d..d4379b8ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3282,7 +3282,7 @@ __metadata: snarkjs: "github:metacraft-labs/snarkjs" ts-jest: ^28.0.5 ts-node: ^10.9.1 - typescript: ^4.7.4 + typescript: 5.2.2 uuid: ^9.0.0 winston: ^3.10.0 yargs: ^17.7.1 @@ -12920,23 +12920,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.7.4": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" +"typescript@npm:5.2.2": + version: 5.2.2 + resolution: "typescript@npm:5.2.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db + checksum: 7912821dac4d962d315c36800fe387cdc0a6298dba7ec171b350b4a6e988b51d7b8f051317786db1094bd7431d526b648aba7da8236607febb26cf5b871d2d3c languageName: node linkType: hard -"typescript@patch:typescript@^4.7.4#~builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=7ad353" +"typescript@patch:typescript@5.2.2#~builtin": + version: 5.2.2 + resolution: "typescript@patch:typescript@npm%3A5.2.2#~builtin::version=5.2.2&hash=7ad353" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 2eee5c37cad4390385db5db5a8e81470e42e8f1401b0358d7390095d6f681b410f2c4a0c496c6ff9ebd775423c7785cdace7bcdad76c7bee283df3d9718c0f20 + checksum: 07106822b4305de3f22835cbba949a2b35451cad50888759b6818421290ff95d522b38ef7919e70fb381c5fe9c1c643d7dea22c8b31652a717ddbd57b7f4d554 languageName: node linkType: hard From 523b208e0fac0a0d653c17b5d17bdfa4706ac6eb Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Thu, 8 Feb 2024 16:16:33 +0200 Subject: [PATCH 02/59] fix(ts-jest) Upgrade packages and fix issue jest.config --- jest.config.ts | 11 +- package.json | 6 +- yarn.lock | 985 ++++++++++++++++++++++++++----------------------- 3 files changed, 535 insertions(+), 467 deletions(-) diff --git a/jest.config.ts b/jest.config.ts index cac50cfd1..d6133b790 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,13 +1,8 @@ -import type { InitialOptionsTsJest } from 'ts-jest'; +import type { JestConfigWithTsJest } from 'ts-jest'; -const config: InitialOptionsTsJest = { - preset: 'ts-jest/presets/default-esm', // or other ESM presets +const config: JestConfigWithTsJest = { + preset: 'ts-jest/presets/default-esm', testMatch: ['**/tests/**/*.ts'], - globals: { - 'ts-jest': { - useESM: true, - }, - }, moduleNameMapper: { '^(\\.{1,2}/.*)\\.js$': '$1', }, diff --git a/package.json b/package.json index 9cca460b8..e618df07e 100644 --- a/package.json +++ b/package.json @@ -32,12 +32,12 @@ "@chainsafe/ssz": "^0.9.2", "@noble/bls12-381": "^1.3.0", "@types/glob": "^7.2.0", - "@types/jest": "^28.1.2", + "@types/jest": "^29.5.12", "@types/node": "^18.0.0", "glob": "^8.0.3", - "jest": "^28.1.1", + "jest": "^29.7.0", "prettier": "^2.6.2", - "ts-jest": "^28.0.5", + "ts-jest": "^29.1.2", "ts-node": "^10.9.1", "typescript": "5.2.2" }, diff --git a/yarn.lock b/yarn.lock index d4379b8ac..3a3ec9caf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -146,6 +146,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-plugin-utils@npm:7.22.5" + checksum: c0fc7227076b6041acd2f0e818145d2e8c41968cc52fb5ca70eed48e21b8fe6dd88a0a91cbddf4951e33647336eb5ae184747ca706817ca3bef5e9e905151ff5 + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.20.2": version: 7.20.2 resolution: "@babel/helper-simple-access@npm:7.20.2" @@ -271,6 +278,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.23.3 + resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 89037694314a74e7f0e7a9c8d3793af5bf6b23d80950c29b360db1c66859d67f60711ea437e70ad6b5b4b29affe17eababda841b6c01107c2b638e0493bafb4e + languageName: node + linkType: hard + "@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -370,7 +388,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.7.2": +"@babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2": version: 7.21.2 resolution: "@babel/traverse@npm:7.21.2" dependencies: @@ -1578,51 +1596,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/console@npm:28.1.3" +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" dependencies: - "@jest/types": ^28.1.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^28.1.3 - jest-util: ^28.1.3 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 slash: ^3.0.0 - checksum: fe50d98d26d02ce2901c76dff4bd5429a33c13affb692c9ebf8a578ca2f38a5dd854363d40d6c394f215150791fd1f692afd8e730a4178dda24107c8dfd9750a + checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 languageName: node linkType: hard -"@jest/core@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/core@npm:28.1.3" +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" dependencies: - "@jest/console": ^28.1.3 - "@jest/reporters": ^28.1.3 - "@jest/test-result": ^28.1.3 - "@jest/transform": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/console": ^29.7.0 + "@jest/reporters": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^28.1.3 - jest-config: ^28.1.3 - jest-haste-map: ^28.1.3 - jest-message-util: ^28.1.3 - jest-regex-util: ^28.0.2 - jest-resolve: ^28.1.3 - jest-resolve-dependencies: ^28.1.3 - jest-runner: ^28.1.3 - jest-runtime: ^28.1.3 - jest-snapshot: ^28.1.3 - jest-util: ^28.1.3 - jest-validate: ^28.1.3 - jest-watcher: ^28.1.3 + jest-changed-files: ^29.7.0 + jest-config: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-resolve-dependencies: ^29.7.0 + jest-runner: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + jest-watcher: ^29.7.0 micromatch: ^4.0.4 - pretty-format: ^28.1.3 - rimraf: ^3.0.0 + pretty-format: ^29.7.0 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -1630,76 +1647,77 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: cb79f34bafc4637e7130df12257f5b29075892a2be2c7f45c6d4c0420853e80b5dae11016e652530eb234f4c44c00910cdca3c2cd86275721860725073f7d9b4 + checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d languageName: node linkType: hard -"@jest/environment@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/environment@npm:28.1.3" +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" dependencies: - "@jest/fake-timers": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^28.1.3 - checksum: 14c496b84aef951df33128cea68988e9de43b2e9d62be9f9c4308d4ac307fa345642813679f80d0a4cedeb900cf6f0b6bb2b92ce089528e8721f72295fdc727f + jest-mock: ^29.7.0 + checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 languageName: node linkType: hard -"@jest/expect-utils@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/expect-utils@npm:28.1.3" +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" dependencies: - jest-get-type: ^28.0.2 - checksum: 808ea3a68292a7e0b95490fdd55605c430b4cf209ea76b5b61bfb2a1badcb41bc046810fe4e364bd5fe04663978aa2bd73d8f8465a761dd7c655aeb44cf22987 + jest-get-type: ^29.6.3 + checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed languageName: node linkType: hard -"@jest/expect@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/expect@npm:28.1.3" +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" dependencies: - expect: ^28.1.3 - jest-snapshot: ^28.1.3 - checksum: 4197f6fdddc33dc45ba4e838f992fc61839c421d7aed0dfe665ef9c2f172bb1df8a8cac9cecee272b40e744a326da521d5e182709fe82a0b936055bfffa3b473 + expect: ^29.7.0 + jest-snapshot: ^29.7.0 + checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e languageName: node linkType: hard -"@jest/fake-timers@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/fake-timers@npm:28.1.3" +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" dependencies: - "@jest/types": ^28.1.3 - "@sinonjs/fake-timers": ^9.1.2 + "@jest/types": ^29.6.3 + "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^28.1.3 - jest-mock: ^28.1.3 - jest-util: ^28.1.3 - checksum: cec14d5b14913a54dce64a62912c5456235f5d90b509ceae19c727565073114dae1aaf960ac6be96b3eb94789a3a758b96b72c8fca7e49a6ccac415fbc0321e1 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 languageName: node linkType: hard -"@jest/globals@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/globals@npm:28.1.3" +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" dependencies: - "@jest/environment": ^28.1.3 - "@jest/expect": ^28.1.3 - "@jest/types": ^28.1.3 - checksum: 3504bb23de629d466c6f2b6b75d2e1c1b10caccbbcfb7eaa82d22cc37711c8e364c243929581184846605c023b475ea6c42c2e3ea5994429a988d8d527af32cd + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/types": ^29.6.3 + jest-mock: ^29.7.0 + checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 languageName: node linkType: hard -"@jest/reporters@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/reporters@npm:28.1.3" +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^28.1.3 - "@jest/test-result": ^28.1.3 - "@jest/transform": ^28.1.3 - "@jest/types": ^28.1.3 - "@jridgewell/trace-mapping": ^0.3.13 + "@jest/console": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 @@ -1707,105 +1725,104 @@ __metadata: glob: ^7.1.3 graceful-fs: ^4.2.9 istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 + istanbul-lib-instrument: ^6.0.0 istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^28.1.3 - jest-util: ^28.1.3 - jest-worker: ^28.1.3 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 - terminal-link: ^2.0.0 v8-to-istanbul: ^9.0.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - checksum: a7440887ce837922cbeaa64c3232eb48aae02aa9123f29fc4280ad3e1afe4b35dcba171ba1d5fd219037c396c5152d9c2d102cff1798dd5ae3bd33ac4759ae0a + checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 languageName: node linkType: hard -"@jest/schemas@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/schemas@npm:28.1.3" +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" dependencies: - "@sinclair/typebox": ^0.24.1 - checksum: 3cf1d4b66c9c4ffda58b246de1ddcba8e6ad085af63dccdf07922511f13b68c0cc480a7bc620cb4f3099a6f134801c747e1df7bfc7a4ef4dceefbdea3e31e1de + "@sinclair/typebox": ^0.27.8 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 languageName: node linkType: hard -"@jest/source-map@npm:^28.1.2": - version: 28.1.2 - resolution: "@jest/source-map@npm:28.1.2" +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" dependencies: - "@jridgewell/trace-mapping": ^0.3.13 + "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: b82a5c2e93d35d86779c61a02ccb967d1b5cd2e9dd67d26d8add44958637cbbb99daeeb8129c7653389cb440dc2a2f5ae4d2183dc453c67669ff98938b775a3a + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb languageName: node linkType: hard -"@jest/test-result@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/test-result@npm:28.1.3" +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" dependencies: - "@jest/console": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/console": ^29.7.0 + "@jest/types": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 957a5dd2fd2e84aabe86698f93c0825e96128ccaa23abf548b159a9b08ac74e4bde7acf4bec48479243dbdb27e4ea1b68c171846d21fb64855c6b55cead9ef27 + checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa languageName: node linkType: hard -"@jest/test-sequencer@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/test-sequencer@npm:28.1.3" +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" dependencies: - "@jest/test-result": ^28.1.3 + "@jest/test-result": ^29.7.0 graceful-fs: ^4.2.9 - jest-haste-map: ^28.1.3 + jest-haste-map: ^29.7.0 slash: ^3.0.0 - checksum: 13f8905e6d1ec8286694146f7be3cf90eff801bbdea5e5c403e6881444bb390ed15494c7b9948aa94bd7e9c9a851e0d3002ed6e7371d048b478596e5b23df953 + checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd languageName: node linkType: hard -"@jest/transform@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/transform@npm:28.1.3" +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^28.1.3 - "@jridgewell/trace-mapping": ^0.3.13 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 - convert-source-map: ^1.4.0 - fast-json-stable-stringify: ^2.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^28.1.3 - jest-regex-util: ^28.0.2 - jest-util: ^28.1.3 + jest-haste-map: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 - write-file-atomic: ^4.0.1 - checksum: dadf618936e0aa84342f07f532801d5bed43cdf95d1417b929e4f8782c872cff1adc84096d5a287a796d0039a2691c06d8450cce5a713a8b52fbb9f872a1e760 + write-file-atomic: ^4.0.2 + checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab languageName: node linkType: hard -"@jest/types@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/types@npm:28.1.3" +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: - "@jest/schemas": ^28.1.3 + "@jest/schemas": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: 1e258d9c063fcf59ebc91e46d5ea5984674ac7ae6cae3e50aa780d22b4405bf2c925f40350bf30013839eb5d4b5e521d956ddf8f3b7c78debef0e75a07f57350 + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc languageName: node linkType: hard @@ -1837,6 +1854,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 + languageName: node + linkType: hard + "@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" @@ -1851,6 +1875,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -1861,7 +1892,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.13, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.17 resolution: "@jridgewell/trace-mapping@npm:0.3.17" dependencies: @@ -1871,6 +1902,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.18": + version: 0.3.22 + resolution: "@jridgewell/trace-mapping@npm:0.3.22" + dependencies: + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: ac7dd2cfe0b479aa1b81776d40d789243131cc792dc8b6b6a028c70fcd6171958ae1a71bf67b618ffe3c0c3feead9870c095ee46a5e30319410d92976b28f498 + languageName: node + linkType: hard + "@lodestar/params@npm:^1.4.1": version: 1.11.3 resolution: "@lodestar/params@npm:1.11.3" @@ -2704,10 +2745,10 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.24.1": - version: 0.24.51 - resolution: "@sinclair/typebox@npm:0.24.51" - checksum: fd0d855e748ef767eb19da1a60ed0ab928e91e0f358c1dd198d600762c0015440b15755e96d1176e2a0db7e09c6a64ed487828ee10dd0c3e22f61eb09c478cd0 +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 languageName: node linkType: hard @@ -2718,21 +2759,21 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.6 - resolution: "@sinonjs/commons@npm:1.8.6" +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" dependencies: type-detect: 4.0.8 - checksum: 7d3f8c1e85f30cd4e83594fc19b7a657f14d49eb8d95a30095631ce15e906c869e0eff96c5b93dffea7490c00418b07f54582ba49c6560feb2a8c34c0b16832d + checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^9.1.2": - version: 9.1.2 - resolution: "@sinonjs/fake-timers@npm:9.1.2" +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: 7d3aef54e17c1073101cb64d953157c19d62a40e261a30923fa1ee337b049c5f29cc47b1f0c477880f42b5659848ba9ab897607ac8ea4acd5c30ddcfac57fca6 + "@sinonjs/commons": ^3.0.0 + checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 languageName: node linkType: hard @@ -2996,13 +3037,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^28.1.2": - version: 28.1.8 - resolution: "@types/jest@npm:28.1.8" +"@types/jest@npm:^29.5.12": + version: 29.5.12 + resolution: "@types/jest@npm:29.5.12" dependencies: - expect: ^28.0.0 - pretty-format: ^28.0.0 - checksum: d4cd36158a3ae1d4b42cc48a77c95de74bc56b84cf81e09af3ee0399c34f4a7da8ab9e787570f10004bd642f9e781b0033c37327fbbf4a8e4b6e37e8ee3693a7 + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 19b1efdeed9d9a60a81edc8226cdeae5af7479e493eaed273e01243891c9651f7b8b4c08fc633a7d0d1d379b091c4179bbaa0807af62542325fd72f2dd17ce1c languageName: node linkType: hard @@ -3131,7 +3172,7 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.1.1, @types/prettier@npm:^2.1.5": +"@types/prettier@npm:^2.1.1": version: 2.7.2 resolution: "@types/prettier@npm:2.7.2" checksum: b47d76a5252265f8d25dd2fe2a5a61dc43ba0e6a96ffdd00c594cb4fd74c1982c2e346497e3472805d97915407a09423804cc2110a0b8e1b22cffcab246479b7 @@ -3260,7 +3301,7 @@ __metadata: "@nomiclabs/hardhat-etherscan": ^3.1.0 "@nomiclabs/hardhat-waffle": ^2.0.3 "@types/glob": ^7.2.0 - "@types/jest": ^28.1.2 + "@types/jest": ^29.5.12 "@types/node": ^18.0.0 bullmq: ^3.7.1 circom_tester: ^0.0.14 @@ -3272,7 +3313,7 @@ __metadata: glob: ^8.0.3 hardhat: ^2.10.2 hardhat-gas-reporter: ^1.0.8 - jest: ^28.1.1 + jest: ^29.7.0 prettier: ^2.6.2 prom-client: ^14.2.0 r1csfile: ^0.0.40 @@ -3280,7 +3321,7 @@ __metadata: redis-commander: ^0.8.0 snarkit2: ^0.2.0 snarkjs: "github:metacraft-labs/snarkjs" - ts-jest: ^28.0.5 + ts-jest: ^29.1.2 ts-node: ^10.9.1 typescript: 5.2.2 uuid: ^9.0.0 @@ -3806,20 +3847,20 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^28.1.3": - version: 28.1.3 - resolution: "babel-jest@npm:28.1.3" +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" dependencies: - "@jest/transform": ^28.1.3 + "@jest/transform": ^29.7.0 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^28.1.3 + babel-preset-jest: ^29.6.3 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 57ccd2296e1839687b5df2fd138c3d00717e0369e385254b012ccd4ee70e75f5d5c8e6cfcdf92d155015b468cfebb847b38e69bb5805d8aaf730e20575127cc6 + checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 languageName: node linkType: hard @@ -3836,15 +3877,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^28.1.3": - version: 28.1.3 - resolution: "babel-plugin-jest-hoist@npm:28.1.3" +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.1.14 "@types/babel__traverse": ^7.0.6 - checksum: 648d89f9d80f6450ce7e50d0c32eb91b7f26269b47c3e37aaf2e0f2f66a980978345bd6b8c9b8c3aa6a8252ad2bc2c9fb50630e9895622c9a0972af5f70ed20e + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 languageName: node linkType: hard @@ -3870,15 +3911,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^28.1.3": - version: 28.1.3 - resolution: "babel-preset-jest@npm:28.1.3" +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" dependencies: - babel-plugin-jest-hoist: ^28.1.3 + babel-plugin-jest-hoist: ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 8248a4a5ca4242cc06ad13b10b9183ad2664da8fb0da060c352223dcf286f0ce9c708fa17901dc44ecabec25e6d309e5e5b9830a61dd777c3925f187a345a47d + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb languageName: node linkType: hard @@ -5155,13 +5196,20 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": +"convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": version: 1.9.0 resolution: "convert-source-map@npm:1.9.0" checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 languageName: node linkType: hard +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + languageName: node + linkType: hard + "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" @@ -5260,6 +5308,23 @@ __metadata: languageName: node linkType: hard +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + prompts: ^2.0.1 + bin: + create-jest: bin/create-jest.js + checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + languageName: node + linkType: hard + "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -5414,10 +5479,15 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a languageName: node linkType: hard @@ -5541,10 +5611,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^28.1.1": - version: 28.1.1 - resolution: "diff-sequences@npm:28.1.1" - checksum: e2529036505567c7ca5a2dea86b6bcd1ca0e3ae63bf8ebf529b8a99cfa915bbf194b7021dc1c57361a4017a6d95578d4ceb29fabc3232a4f4cb866a2726c7690 +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa languageName: node linkType: hard @@ -5696,10 +5766,10 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.10.2": - version: 0.10.2 - resolution: "emittery@npm:0.10.2" - checksum: ee3e21788b043b90885b18ea756ec3105c1cedc50b29709c92b01e239c7e55345d4bb6d3aef4ddbaf528eef448a40b3bb831bad9ee0fc9c25cbf1367ab1ab5ac +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 languageName: node linkType: hard @@ -6279,16 +6349,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^28.0.0, expect@npm:^28.1.3": - version: 28.1.3 - resolution: "expect@npm:28.1.3" +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" dependencies: - "@jest/expect-utils": ^28.1.3 - jest-get-type: ^28.0.2 - jest-matcher-utils: ^28.1.3 - jest-message-util: ^28.1.3 - jest-util: ^28.1.3 - checksum: 101e0090de300bcafedb7dbfd19223368a2251ce5fe0105bbb6de5720100b89fb6b64290ebfb42febc048324c76d6a4979cdc4b61eb77747857daf7a5de9b03d + "@jest/expect-utils": ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c languageName: node linkType: hard @@ -6423,7 +6493,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb @@ -8124,7 +8194,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": +"istanbul-lib-instrument@npm:^5.0.4": version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: @@ -8137,6 +8207,19 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.1 + resolution: "istanbul-lib-instrument@npm:6.0.1" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: fb23472e739cfc9b027cefcd7d551d5e7ca7ff2817ae5150fab99fe42786a7f7b56a29a2aa8309c37092e18297b8003f9c274f50ca4360949094d17fbac81472 + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-report@npm:3.0.0" @@ -8183,58 +8266,59 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-changed-files@npm:28.1.3" +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" dependencies: execa: ^5.0.0 + jest-util: ^29.7.0 p-limit: ^3.1.0 - checksum: c78af14a68b9b19101623ae7fde15a2488f9b3dbe8cca12a05c4a223bc9bfd3bf41ee06830f20fb560c52434435d6153c9cc6cf450b1f7b03e5e7f96a953a6a6 + checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 languageName: node linkType: hard -"jest-circus@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-circus@npm:28.1.3" +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" dependencies: - "@jest/environment": ^28.1.3 - "@jest/expect": ^28.1.3 - "@jest/test-result": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - dedent: ^0.7.0 + dedent: ^1.0.0 is-generator-fn: ^2.0.0 - jest-each: ^28.1.3 - jest-matcher-utils: ^28.1.3 - jest-message-util: ^28.1.3 - jest-runtime: ^28.1.3 - jest-snapshot: ^28.1.3 - jest-util: ^28.1.3 + jest-each: ^29.7.0 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 p-limit: ^3.1.0 - pretty-format: ^28.1.3 + pretty-format: ^29.7.0 + pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: b635e60a9c92adaefc3f24def8eba691e7c2fdcf6c9fa640cddf2eb8c8b26ee62eab73ebb88798fd7c52a74c1495a984e39b748429b610426f02e9d3d56e09b2 + checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 languageName: node linkType: hard -"jest-cli@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-cli@npm:28.1.3" +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" dependencies: - "@jest/core": ^28.1.3 - "@jest/test-result": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/core": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 chalk: ^4.0.0 + create-jest: ^29.7.0 exit: ^0.1.2 - graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^28.1.3 - jest-util: ^28.1.3 - jest-validate: ^28.1.3 - prompts: ^2.0.1 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 yargs: ^17.3.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -8243,34 +8327,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: fb424576bf38346318daddee3fcc597cd78cb8dda1759d09c529d8ba1a748f2765c17b00671072a838826e59465a810ff8a232bc6ba2395c131bf3504425a363 + checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 languageName: node linkType: hard -"jest-config@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-config@npm:28.1.3" +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^28.1.3 - "@jest/types": ^28.1.3 - babel-jest: ^28.1.3 + "@jest/test-sequencer": ^29.7.0 + "@jest/types": ^29.6.3 + babel-jest: ^29.7.0 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^28.1.3 - jest-environment-node: ^28.1.3 - jest-get-type: ^28.0.2 - jest-regex-util: ^28.0.2 - jest-resolve: ^28.1.3 - jest-runner: ^28.1.3 - jest-util: ^28.1.3 - jest-validate: ^28.1.3 + jest-circus: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-runner: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^28.1.3 + pretty-format: ^29.7.0 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -8281,134 +8365,135 @@ __metadata: optional: true ts-node: optional: true - checksum: ddabffd3a3a8cb6c2f58f06cdf3535157dbf8c70bcde3e5c3de7bee6a8d617840ffc8cffb0083e38c6814f2a08c225ca19f58898efaf4f351af94679f22ce6bc + checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff languageName: node linkType: hard -"jest-diff@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-diff@npm:28.1.3" +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" dependencies: chalk: ^4.0.0 - diff-sequences: ^28.1.1 - jest-get-type: ^28.0.2 - pretty-format: ^28.1.3 - checksum: fa8583e0ccbe775714ce850b009be1b0f6b17a4b6759f33ff47adef27942ebc610dbbcc8a5f7cfb7f12b3b3b05afc9fb41d5f766674616025032ff1e4f9866e0 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 languageName: node linkType: hard -"jest-docblock@npm:^28.1.1": - version: 28.1.1 - resolution: "jest-docblock@npm:28.1.1" +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" dependencies: detect-newline: ^3.0.0 - checksum: 22fca68d988ecb2933bc65f448facdca85fc71b4bd0a188ea09a5ae1b0cc3a049a2a6ec7e7eaa2542c1d5cb5e5145e420a3df4fa280f5070f486c44da1d36151 + checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 languageName: node linkType: hard -"jest-each@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-each@npm:28.1.3" +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" dependencies: - "@jest/types": ^28.1.3 + "@jest/types": ^29.6.3 chalk: ^4.0.0 - jest-get-type: ^28.0.2 - jest-util: ^28.1.3 - pretty-format: ^28.1.3 - checksum: 5c5b8ccb1484e58b027bea682cfa020a45e5bf5379cc7c23bdec972576c1dc3c3bf03df2b78416cefc1a58859dd33b7cf5fff54c370bc3c0f14a3e509eb87282 + jest-get-type: ^29.6.3 + jest-util: ^29.7.0 + pretty-format: ^29.7.0 + checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c languageName: node linkType: hard -"jest-environment-node@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-environment-node@npm:28.1.3" +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" dependencies: - "@jest/environment": ^28.1.3 - "@jest/fake-timers": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^28.1.3 - jest-util: ^28.1.3 - checksum: 1048fe306a6a8b0880a4c66278ebb57479f29c12cff89aab3aa79ab77a8859cf17ab8aa9919fd21c329a7db90e35581b43664e694ad453d5b04e00f3c6420469 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 languageName: node linkType: hard -"jest-get-type@npm:^28.0.2": - version: 28.0.2 - resolution: "jest-get-type@npm:28.0.2" - checksum: 5281d7c89bc8156605f6d15784f45074f4548501195c26e9b188742768f72d40948252d13230ea905b5349038865a1a8eeff0e614cc530ff289dfc41fe843abd +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard -"jest-haste-map@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-haste-map@npm:28.1.3" +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" dependencies: - "@jest/types": ^28.1.3 + "@jest/types": ^29.6.3 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.9 - jest-regex-util: ^28.0.2 - jest-util: ^28.1.3 - jest-worker: ^28.1.3 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: d05fdc108645fc2b39fcd4001952cc7a8cb550e93494e98c1e9ab1fc542686f6ac67177c132e564cf94fe8f81503f3f8db8b825b9b713dc8c5748aec63ba4688 + checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 languageName: node linkType: hard -"jest-leak-detector@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-leak-detector@npm:28.1.3" +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" dependencies: - jest-get-type: ^28.0.2 - pretty-format: ^28.1.3 - checksum: 2e976a4880cf9af11f53a19f6a3820e0f90b635a900737a5427fc42e337d5628ba446dcd7c020ecea3806cf92bc0bbf6982ed62a9cd84e5a13d8751aa30fbbb7 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 languageName: node linkType: hard -"jest-matcher-utils@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-matcher-utils@npm:28.1.3" +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" dependencies: chalk: ^4.0.0 - jest-diff: ^28.1.3 - jest-get-type: ^28.0.2 - pretty-format: ^28.1.3 - checksum: 6b34f0cf66f6781e92e3bec97bf27796bd2ba31121e5c5997218d9adba6deea38a30df5203937d6785b68023ed95cbad73663cc9aad6fb0cb59aeb5813a58daf + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd languageName: node linkType: hard -"jest-message-util@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-message-util@npm:28.1.3" +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^28.1.3 + "@jest/types": ^29.6.3 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^28.1.3 + pretty-format: ^29.7.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 1f266854166dcc6900d75a88b54a25225a2f3710d463063ff1c99021569045c35c7d58557b25447a17eb3a65ce763b2f9b25550248b468a9d4657db365f39e96 + checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 languageName: node linkType: hard -"jest-mock@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-mock@npm:28.1.3" +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" dependencies: - "@jest/types": ^28.1.3 + "@jest/types": ^29.6.3 "@types/node": "*" - checksum: a573bf8e5f12f4c29c661266c31b5c6b69a28d3195b83049983bce025b2b1a0152351567e89e63b102ef817034c2a3aa97eda4e776f3bae2aee54c5765573aa7 + jest-util: ^29.7.0 + checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 languageName: node linkType: hard @@ -8424,193 +8509,191 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^28.0.2": - version: 28.0.2 - resolution: "jest-regex-util@npm:28.0.2" - checksum: 0ea8c5c82ec88bc85e273c0ec82e0c0f35f7a1e2d055070e50f0cc2a2177f848eec55f73e37ae0d045c3db5014c42b2f90ac62c1ab3fdb354d2abd66a9e08add +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a languageName: node linkType: hard -"jest-resolve-dependencies@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-resolve-dependencies@npm:28.1.3" +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" dependencies: - jest-regex-util: ^28.0.2 - jest-snapshot: ^28.1.3 - checksum: 4eea9ec33aefc1c71dc5956391efbcc7be76bda986b366ab3931d99c5f7ed01c9ebd7520e405ea2c76e1bb2c7ce504be6eca2b9831df16564d1e625500f3bfe7 + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.7.0 + checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 languageName: node linkType: hard -"jest-resolve@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-resolve@npm:28.1.3" +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^28.1.3 + jest-haste-map: ^29.7.0 jest-pnp-resolver: ^1.2.2 - jest-util: ^28.1.3 - jest-validate: ^28.1.3 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 resolve: ^1.20.0 - resolve.exports: ^1.1.0 + resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: df61a490c93f4f4cf52135e43d6a4fcacb07b0b7d4acc6319e9289529c1d14f2d8e1638e095dbf96f156834802755e38db68caca69dba21a3261ee711d4426b6 + checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 languageName: node linkType: hard -"jest-runner@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-runner@npm:28.1.3" +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" dependencies: - "@jest/console": ^28.1.3 - "@jest/environment": ^28.1.3 - "@jest/test-result": ^28.1.3 - "@jest/transform": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/console": ^29.7.0 + "@jest/environment": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 - emittery: ^0.10.2 + emittery: ^0.13.1 graceful-fs: ^4.2.9 - jest-docblock: ^28.1.1 - jest-environment-node: ^28.1.3 - jest-haste-map: ^28.1.3 - jest-leak-detector: ^28.1.3 - jest-message-util: ^28.1.3 - jest-resolve: ^28.1.3 - jest-runtime: ^28.1.3 - jest-util: ^28.1.3 - jest-watcher: ^28.1.3 - jest-worker: ^28.1.3 + jest-docblock: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-leak-detector: ^29.7.0 + jest-message-util: ^29.7.0 + jest-resolve: ^29.7.0 + jest-runtime: ^29.7.0 + jest-util: ^29.7.0 + jest-watcher: ^29.7.0 + jest-worker: ^29.7.0 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 32405cd970fa6b11e039192dae699fd1bcc6f61f67d50605af81d193f24dd4373b25f5fcc1c571a028ec1b02174e8a4b6d0d608772063fb06f08a5105693533b + checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb languageName: node linkType: hard -"jest-runtime@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-runtime@npm:28.1.3" +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" dependencies: - "@jest/environment": ^28.1.3 - "@jest/fake-timers": ^28.1.3 - "@jest/globals": ^28.1.3 - "@jest/source-map": ^28.1.2 - "@jest/test-result": ^28.1.3 - "@jest/transform": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/globals": ^29.7.0 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 - execa: ^5.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^28.1.3 - jest-message-util: ^28.1.3 - jest-mock: ^28.1.3 - jest-regex-util: ^28.0.2 - jest-resolve: ^28.1.3 - jest-snapshot: ^28.1.3 - jest-util: ^28.1.3 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: b17c40af858e74dafa4f515ef3711c1e9ef3d4ad7d74534ee0745422534bc04fd166d4eceb62a3aa7dc951505d6f6d2a81d16e90bebb032be409ec0500974a36 + checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e languageName: node linkType: hard -"jest-snapshot@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-snapshot@npm:28.1.3" +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/traverse": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^28.1.3 - "@jest/transform": ^28.1.3 - "@jest/types": ^28.1.3 - "@types/babel__traverse": ^7.0.6 - "@types/prettier": ^2.1.5 + "@jest/expect-utils": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^28.1.3 + expect: ^29.7.0 graceful-fs: ^4.2.9 - jest-diff: ^28.1.3 - jest-get-type: ^28.0.2 - jest-haste-map: ^28.1.3 - jest-matcher-utils: ^28.1.3 - jest-message-util: ^28.1.3 - jest-util: ^28.1.3 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 natural-compare: ^1.4.0 - pretty-format: ^28.1.3 - semver: ^7.3.5 - checksum: 2a46a5493f1fb50b0a236a21f25045e7f46a244f9f3ae37ef4fbcd40249d0d68bb20c950ce77439e4e2cac985b05c3061c90b34739bf6069913a1199c8c716e1 + pretty-format: ^29.7.0 + semver: ^7.5.3 + checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad languageName: node linkType: hard -"jest-util@npm:^28.0.0, jest-util@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-util@npm:28.1.3" +"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" dependencies: - "@jest/types": ^28.1.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: fd6459742c941f070223f25e38a2ac0719aad92561591e9fb2a50d602a5d19d754750b79b4074327a42b00055662b95da3b006542ceb8b54309da44d4a62e721 + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca languageName: node linkType: hard -"jest-validate@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-validate@npm:28.1.3" +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" dependencies: - "@jest/types": ^28.1.3 + "@jest/types": ^29.6.3 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^28.0.2 + jest-get-type: ^29.6.3 leven: ^3.1.0 - pretty-format: ^28.1.3 - checksum: 95e0513b3803c3372a145cda86edbdb33d9dfeaa18818176f2d581e821548ceac9a179f065b6d4671a941de211354efd67f1fff8789a4fb89962565c85f646db + pretty-format: ^29.7.0 + checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae languageName: node linkType: hard -"jest-watcher@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-watcher@npm:28.1.3" +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" dependencies: - "@jest/test-result": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - emittery: ^0.10.2 - jest-util: ^28.1.3 + emittery: ^0.13.1 + jest-util: ^29.7.0 string-length: ^4.0.1 - checksum: 8f6d674a4865e7df251f71544f1b51f06fd36b5a3a61f2ac81aeb81fa2a196be354fba51d0f97911c88f67cd254583b3a22ee124bf2c5b6ee2fadec27356c207 + checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f languageName: node linkType: hard -"jest-worker@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-worker@npm:28.1.3" +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" dependencies: "@types/node": "*" + jest-util: ^29.7.0 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: e921c9a1b8f0909da9ea07dbf3592f95b653aef3a8bb0cbcd20fc7f9a795a1304adecac31eecb308992c167e8d7e75c522061fec38a5928ace0f9571c90169ca + checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 languageName: node linkType: hard -"jest@npm:^28.1.1": - version: 28.1.3 - resolution: "jest@npm:28.1.3" +"jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" dependencies: - "@jest/core": ^28.1.3 - "@jest/types": ^28.1.3 + "@jest/core": ^29.7.0 + "@jest/types": ^29.6.3 import-local: ^3.0.2 - jest-cli: ^28.1.3 + jest-cli: ^29.7.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -8618,7 +8701,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: b9dcb542eb7c16261c281cdc2bf37155dbb3f1205bae0b567f05051db362c85ddd4b765f126591efb88f6d298eb10336d0aa6c7d5373b4d53f918137a9a70182 + checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b languageName: node linkType: hard @@ -8759,7 +8842,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.1, json5@npm:^2.2.1, json5@npm:^2.2.2": +"json5@npm:^2.1.1, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -10783,15 +10866,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^28.0.0, pretty-format@npm:^28.1.3": - version: 28.1.3 - resolution: "pretty-format@npm:28.1.3" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" dependencies: - "@jest/schemas": ^28.1.3 - ansi-regex: ^5.0.1 + "@jest/schemas": ^29.6.3 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: e69f857358a3e03d271252d7524bec758c35e44680287f36c1cb905187fbc82da9981a6eb07edfd8a03bc3cbeebfa6f5234c13a3d5b59f2bbdf9b4c4053e0a7f + checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 languageName: node linkType: hard @@ -11400,10 +11482,10 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^1.1.0": - version: 1.1.1 - resolution: "resolve.exports@npm:1.1.1" - checksum: 485aa10082eb388a569d696e17ad7b16f4186efc97dd34eadd029d95b811f21ffee13b1b733198bb4584dbb3cb296aa6f141835221fb7613b9606b84f1386655 +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 languageName: node linkType: hard @@ -11623,17 +11705,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 - languageName: node - linkType: hard - "semver@npm:^5.5.0, semver@npm:^5.6.0, semver@npm:^5.7.0": version: 5.7.1 resolution: "semver@npm:5.7.1" @@ -11652,6 +11723,28 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.3.5, semver@npm:^7.3.7": + version: 7.3.8 + resolution: "semver@npm:7.3.8" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 + languageName: node + linkType: hard + +"semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.6.0 + resolution: "semver@npm:7.6.0" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -12365,7 +12458,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": +"supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -12374,16 +12467,6 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.0.0": - version: 2.3.0 - resolution: "supports-hyperlinks@npm:2.3.0" - dependencies: - has-flag: ^4.0.0 - supports-color: ^7.0.0 - checksum: 9ee0de3c8ce919d453511b2b1588a8205bd429d98af94a01df87411391010fe22ca463f268c84b2ce2abad019dfff8452aa02806eeb5c905a8d7ad5c4f4c52b8 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -12510,16 +12593,6 @@ __metadata: languageName: node linkType: hard -"terminal-link@npm:^2.0.0": - version: 2.1.1 - resolution: "terminal-link@npm:2.1.1" - dependencies: - ansi-escapes: ^4.2.1 - supports-hyperlinks: ^2.0.0 - checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f - languageName: node - linkType: hard - "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -12690,24 +12763,24 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^28.0.5": - version: 28.0.8 - resolution: "ts-jest@npm:28.0.8" +"ts-jest@npm:^29.1.2": + version: 29.1.2 + resolution: "ts-jest@npm:29.1.2" dependencies: bs-logger: 0.x fast-json-stable-stringify: 2.x - jest-util: ^28.0.0 - json5: ^2.2.1 + jest-util: ^29.0.0 + json5: ^2.2.3 lodash.memoize: 4.x make-error: 1.x - semver: 7.x + semver: ^7.5.3 yargs-parser: ^21.0.1 peerDependencies: "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/types": ^28.0.0 - babel-jest: ^28.0.0 - jest: ^28.0.0 - typescript: ">=4.3" + "@jest/types": ^29.0.0 + babel-jest: ^29.0.0 + jest: ^29.0.0 + typescript: ">=4.3 <6" peerDependenciesMeta: "@babel/core": optional: true @@ -12719,7 +12792,7 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: c72e9292709e77ce47ac7813cb24feaa9d01dc983598d29a821f224b5cc190dc7d67e17379cef089095404c00b9d582ee91c727916f9ec289cb1b723df408ae3 + checksum: a0ce0affc1b716c78c9ab55837829c42cb04b753d174a5c796bb1ddf9f0379fc20647b76fbe30edb30d9b23181908138d6b4c51ef2ae5e187b66635c295cefd5 languageName: node linkType: hard @@ -13735,7 +13808,7 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^4.0.1": +"write-file-atomic@npm:^4.0.2": version: 4.0.2 resolution: "write-file-atomic@npm:4.0.2" dependencies: From 69d9369a87fc348fa1ea228dff1290bcfbdfb725 Mon Sep 17 00:00:00 2001 From: monyarm Date: Fri, 3 Nov 2023 13:14:57 +0200 Subject: [PATCH 03/59] Optimize balance_verification_circuit_data_generation, change maximum level to 37, add error messages --- ...ce_verification_circuit_data_generation.rs | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs index 6be846ac8..2547c40e3 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs @@ -1,5 +1,5 @@ -use std::{fs, marker::PhantomData}; - +use std::{fs, marker::PhantomData, ops::RangeInclusive, path::Path, process}; +use num::clamp; use anyhow::Result; use circuits::{ build_balance_inner_level_circuit::build_inner_level_circuit, @@ -44,7 +44,7 @@ pub async fn async_main() -> Result<()> { }), ) .get_matches(); - + let level_str = matches.value_of("circuit_level").unwrap(); let level = match matches.value_of("circuit_level").unwrap() { "all" => None, x => Some(x.parse::().unwrap()), @@ -59,6 +59,11 @@ pub async fn async_main() -> Result<()> { _phantom: PhantomData::, }; + if level != None && level.unwrap() > 37 { + eprintln!("\x1b[31mError: Supplied level {} is larger than the maximum allowed level 38\x1b[0m", level.unwrap()); + process::exit(1); + } + if level == None || level == Some(0) { write_first_level_circuit( &first_level_data, @@ -73,10 +78,10 @@ pub async fn async_main() -> Result<()> { } let mut prev_circuit_data = first_level_data; - - for i in 1..38 { + let level_range = if level == None { 1..=37 } else { RangeInclusive::new(1,clamp(level.unwrap(),1,37)) }; + for i in level_range { let (targets, data) = build_inner_level_circuit(&prev_circuit_data); - + println!("{}", i); if level == Some(i) || level == None { let circuit_bytes = data .to_bytes(&gate_serializer, &generator_serializer) @@ -96,6 +101,17 @@ pub async fn async_main() -> Result<()> { prev_circuit_data = data; } + let mut exists = false; + for i in 1..=37 { + if Path::new(&format!("{}.plonky2_circuit",i)).exists() || Path::new(&format!("{}.plonky2_targets",i)).exists() { + exists = true; + } + } + if !exists { + eprintln!("\x1b[31mError: No plonky2 output created. Level used was: {}\x1b[0m", level_str); + process::exit(1); + } + Ok(()) } From ea1015ee84c3e5fac09cb7728b627c3ba6e1f546 Mon Sep 17 00:00:00 2001 From: monyarm Date: Mon, 6 Nov 2023 13:53:32 +0200 Subject: [PATCH 04/59] Changes to be in line with review --- ...ce_verification_circuit_data_generation.rs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs index 2547c40e3..0952d4581 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs @@ -21,11 +21,11 @@ fn write_to_file(file_path: &str, data: &[u8]) -> Result<()> { Ok(()) } -fn main() -> Result<()> { +fn main() -> Result<(),String> { future::block_on(async_main()) } -pub async fn async_main() -> Result<()> { +pub async fn async_main() -> Result<(),String> { let matches = App::new("") .arg( Arg::with_name("circuit_level") @@ -45,7 +45,7 @@ pub async fn async_main() -> Result<()> { ) .get_matches(); let level_str = matches.value_of("circuit_level").unwrap(); - let level = match matches.value_of("circuit_level").unwrap() { + let level = match level_str { "all" => None, x => Some(x.parse::().unwrap()), }; @@ -60,8 +60,7 @@ pub async fn async_main() -> Result<()> { }; if level != None && level.unwrap() > 37 { - eprintln!("\x1b[31mError: Supplied level {} is larger than the maximum allowed level 38\x1b[0m", level.unwrap()); - process::exit(1); + return Err(String::from(format!("Supplied level {} is larger than the maximum allowed level 37",level.unwrap()))); } if level == None || level == Some(0) { @@ -78,10 +77,9 @@ pub async fn async_main() -> Result<()> { } let mut prev_circuit_data = first_level_data; - let level_range = if level == None { 1..=37 } else { RangeInclusive::new(1,clamp(level.unwrap(),1,37)) }; - for i in level_range { + let max_level = if level == None {37} else {clamp(level.unwrap(),1,37)}; + for i in 1..=max_level { let (targets, data) = build_inner_level_circuit(&prev_circuit_data); - println!("{}", i); if level == Some(i) || level == None { let circuit_bytes = data .to_bytes(&gate_serializer, &generator_serializer) @@ -102,14 +100,14 @@ pub async fn async_main() -> Result<()> { } let mut exists = false; - for i in 1..=37 { + for i in 1..=max_level { if Path::new(&format!("{}.plonky2_circuit",i)).exists() || Path::new(&format!("{}.plonky2_targets",i)).exists() { exists = true; + break; } } if !exists { - eprintln!("\x1b[31mError: No plonky2 output created. Level used was: {}\x1b[0m", level_str); - process::exit(1); + return Err(String::from(format!("No plonky2 output created. Level used was: {}", level_str))); } Ok(()) From 0824dce3ce7410af84e4ff34a48e2b7da7bca653 Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Fri, 21 Jul 2023 16:42:44 +0300 Subject: [PATCH 05/59] build(flake.nix): Add `craneLib-nightly` --- flake.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 40e5bffad..4bf389269 100644 --- a/flake.nix +++ b/flake.nix @@ -49,7 +49,8 @@ inputs', ... }: let - inherit (inputs'.mcl-blockchain.legacyPackages) nix2container rust-stable; + inherit (inputs'.mcl-blockchain.legacyPackages) nix2container rust-stable craneLib-nightly; + docker-images = import ./libs/nix/docker-images.nix {inherit pkgs nix2container;}; in { _module.args.pkgs = import nixpkgs { From 47c2f697409c62098a98ed68aef93ea9dda8376f Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Fri, 21 Jul 2023 16:48:54 +0300 Subject: [PATCH 06/59] feat(nix/pkgs): Add `commitment_mapper_builder` --- flake.nix | 5 +++ .../nix/commitment_mapper_builder/default.nix | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 libs/nix/commitment_mapper_builder/default.nix diff --git a/flake.nix b/flake.nix index 4bf389269..a90b58338 100644 --- a/flake.nix +++ b/flake.nix @@ -51,6 +51,10 @@ }: let inherit (inputs'.mcl-blockchain.legacyPackages) nix2container rust-stable craneLib-nightly; + commitment_mapper_builder = pkgs.callPackage ./libs/nix/commitment_mapper_builder { + craneLib = craneLib-nightly; + }; + docker-images = import ./libs/nix/docker-images.nix {inherit pkgs nix2container;}; in { _module.args.pkgs = import nixpkgs { @@ -68,6 +72,7 @@ }; packages = { + inherit commitment_mapper_builder; inherit (docker-images) docker-image-yarn; } // pkgs.lib.optionalAttrs (pkgs.hostPlatform.isLinux && pkgs.hostPlatform.isx86_64) { diff --git a/libs/nix/commitment_mapper_builder/default.nix b/libs/nix/commitment_mapper_builder/default.nix new file mode 100644 index 000000000..78744ce94 --- /dev/null +++ b/libs/nix/commitment_mapper_builder/default.nix @@ -0,0 +1,33 @@ +{ + lib, + craneLib, + fetchFromGitHub, + ... +}: let + src-path = ../../../beacon-light-client/plonky2; + cargoArtifacts = craneLib.buildDepsOnly { + pname = "plonky2"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "metacraft-labs"; + repo = "plonky2"; + rev = "12402078a460c41cd11013d065367c8e25bb8478"; + hash = "sha256-uPfN65vlWh92Se8muhrO071WNaAGI+PUOY4x1syvspU="; + }; + }; +in + craneLib.buildPackage rec { + pname = "commitment_mapper_builder"; + version = "0.1.0"; + + inherit cargoArtifacts; + src = src-path; + cargoLock = "${src-path}/commitment_mapper_builder/Cargo.lock"; + cargoToml = "${src-path}/commitment_mapper_builder/Cargo.toml"; + + postUnpack = '' + cd $sourceRoot/commitment_mapper_builder + sourceRoot="." + ''; + } From dea1902ebc9b4b02b573cbca871e2353744263d8 Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Fri, 28 Jul 2023 14:48:17 +0300 Subject: [PATCH 07/59] build(flake.nix): Define custom version of `rust-nightly` --- flake.nix | 13 +++++++++++-- shell.nix | 3 ++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index a90b58338..8c8121c1b 100644 --- a/flake.nix +++ b/flake.nix @@ -49,7 +49,16 @@ inputs', ... }: let - inherit (inputs'.mcl-blockchain.legacyPackages) nix2container rust-stable craneLib-nightly; + inherit (inputs'.mcl-blockchain.legacyPackages) nix2container rust-stable pkgs-with-rust-overlay; + + crane = mcl-blockchain.inputs.crane; + + rust-nightly = pkgs-with-rust-overlay.rust-bin.nightly."2023-06-12".default.override { + extensions = ["rust-src"]; + targets = ["wasm32-wasi" "wasm32-unknown-unknown"]; + }; + + craneLib-nightly = (crane.mkLib pkgs).overrideToolchain rust-nightly; commitment_mapper_builder = pkgs.callPackage ./libs/nix/commitment_mapper_builder { craneLib = craneLib-nightly; @@ -78,7 +87,7 @@ // pkgs.lib.optionalAttrs (pkgs.hostPlatform.isLinux && pkgs.hostPlatform.isx86_64) { inherit (docker-images) docker-image-all; }; - devShells.default = import ./shell.nix {inherit pkgs rust-stable;}; + devShells.default = import ./shell.nix {inherit pkgs rust-stable rust-nightly;}; devShells.light-client = import ./libs/nix/shell-with-light-client.nix {inherit pkgs rust-stable;}; }; }; diff --git a/shell.nix b/shell.nix index d9e75e266..5ba3807f7 100644 --- a/shell.nix +++ b/shell.nix @@ -1,12 +1,13 @@ { pkgs, rust-stable, + rust-nightly, }: with pkgs; let shell-pkgs = import ./libs/nix/common-shell-pkgs.nix {inherit pkgs rust-stable;}; in mkShell { - packages = shell-pkgs; + packages = [rust-nightly] ++ shell-pkgs; nativeBuildInputs = [pkg-config openssl]; From a92d1e953ea755a2b8df491f75f34007f8e96ece Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Fri, 28 Jul 2023 15:43:35 +0300 Subject: [PATCH 08/59] build(beacon-light-client/plonky2): Update cargo lockfiles --- .../plonky2/circuits_executables/Cargo.lock | 154 +++++++++--------- 1 file changed, 74 insertions(+), 80 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.lock b/beacon-light-client/plonky2/circuits_executables/Cargo.lock index 359c5c383..0e7c6ecdf 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.lock +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.lock @@ -31,9 +31,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" [[package]] name = "arc-swap" @@ -43,9 +43,9 @@ checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] name = "async-channel" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", "event-listener", @@ -144,13 +144,13 @@ checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" [[package]] name = "async-trait" -version = "0.1.69" +version = "0.1.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2d0f03b3640e3a630367e40c468cb7f309529c708ed1d88597047b0e7c6ef7" +checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.28", ] [[package]] @@ -241,9 +241,12 @@ checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "51f1226cd9da55587234753d1245dd5b132343ea240f26b6a9003d68706141ba" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -362,9 +365,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -429,9 +432,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "equivalent" @@ -441,9 +444,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" dependencies = [ "errno-dragonfly", "libc", @@ -564,7 +567,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.28", ] [[package]] @@ -666,18 +669,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -730,7 +724,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.2", "libc", "windows-sys", ] @@ -755,15 +749,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jemalloc-sys" -version = "0.5.3+5.3.0-patched" +version = "0.5.4+5.3.0-patched" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9bd5d616ea7ed58b571b2e209a65759664d7fb021a0819d7a790afc67e47ca1" +checksum = "ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2" dependencies = [ "cc", "libc", @@ -771,9 +765,9 @@ dependencies = [ [[package]] name = "jemallocator" -version = "0.5.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c2514137880c52b0b4822b563fadd38257c1f380858addb74a400889696ea6" +checksum = "a0de374a9f8e63150e6f5e8a60cc14c668226d7a347d8aee1a45766e3c4dd3bc" dependencies = [ "jemalloc-sys", "libc", @@ -865,9 +859,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ "num-bigint", "num-complex", @@ -937,20 +931,20 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.2", "libc", ] @@ -1031,12 +1025,12 @@ dependencies = [ [[package]] name = "plonky2_field" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef0b0cfed734e8aec93ee0b49e3067a27111c355b9263fb1418bfe4c80656d12" +checksum = "d33a655ab5d274f763c292fe7e14577f25e40d9d8607b70ef10b39f8619e60b4" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.11.0", "num", "plonky2_util", "rand", @@ -1047,9 +1041,9 @@ dependencies = [ [[package]] name = "plonky2_maybe_rayon" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655cdcdb13c260cdb42b29b55247f2f66479d14342b6be3dc688efc54d3e24c4" +checksum = "194db0cbdd974e92d897cd92b74adb3968dc1b967315eb280357c49a7637994e" dependencies = [ "rayon", ] @@ -1067,9 +1061,9 @@ dependencies = [ [[package]] name = "plonky2_util" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7f1a85a8cb948af5e47da488bd78c6d18d3d8cb25b490676f3b9f68bc5b5c8" +checksum = "5696e2e2a6bb5c48a6e33fb0dd4d20d0a9472784b709964f337f224e99bd6d06" [[package]] name = "polling" @@ -1111,18 +1105,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" dependencies = [ "proc-macro2", ] @@ -1204,9 +1198,9 @@ dependencies = [ [[package]] name = "redis-work-queue" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d668f09267bd58eec73c91397c8b1de838920584cc4bb0661c548078838cd22b" +checksum = "2444f5017107a0595ff76892e2c0290a9349576520039705589d5b413a3bc506" dependencies = [ "futures", "redis", @@ -1223,9 +1217,9 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.37.20" +version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ "bitflags", "errno", @@ -1237,41 +1231,41 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.28", ] [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" dependencies = [ "itoa", "ryu", @@ -1354,9 +1348,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.22" +version = "2.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" dependencies = [ "proc-macro2", "quote", @@ -1478,9 +1472,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" @@ -1520,9 +1514,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ "getrandom", "rand", @@ -1531,13 +1525,13 @@ dependencies = [ [[package]] name = "uuid-macro-internal" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8614dda80b9075fbca36bc31b58d1447715b1236af98dee21db521c47a0cc2c0" +checksum = "f7e1ba1f333bd65ce3c9f27de592fcbc256dafe3af2717f56d7c87761fbaccf4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.28", ] [[package]] @@ -1585,7 +1579,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.28", "wasm-bindgen-shared", ] @@ -1619,7 +1613,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.28", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1682,9 +1676,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", From 6541aa691e964c5765873f5e0db58ec6b9b03d39 Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Wed, 2 Aug 2023 15:06:53 +0300 Subject: [PATCH 09/59] config(commitment_mapper_builder): Change name to `circuits_executables` --- flake.nix | 3 +-- .../default.nix | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) rename libs/nix/{commitment_mapper_builder => circuits_executables}/default.nix (71%) diff --git a/flake.nix b/flake.nix index 8c8121c1b..315ad2a50 100644 --- a/flake.nix +++ b/flake.nix @@ -60,7 +60,7 @@ craneLib-nightly = (crane.mkLib pkgs).overrideToolchain rust-nightly; - commitment_mapper_builder = pkgs.callPackage ./libs/nix/commitment_mapper_builder { + circuits_executables = pkgs.callPackage ./libs/nix/circuits_executables { craneLib = craneLib-nightly; }; @@ -81,7 +81,6 @@ }; packages = { - inherit commitment_mapper_builder; inherit (docker-images) docker-image-yarn; } // pkgs.lib.optionalAttrs (pkgs.hostPlatform.isLinux && pkgs.hostPlatform.isx86_64) { diff --git a/libs/nix/commitment_mapper_builder/default.nix b/libs/nix/circuits_executables/default.nix similarity index 71% rename from libs/nix/commitment_mapper_builder/default.nix rename to libs/nix/circuits_executables/default.nix index 78744ce94..9f384e045 100644 --- a/libs/nix/commitment_mapper_builder/default.nix +++ b/libs/nix/circuits_executables/default.nix @@ -18,16 +18,16 @@ }; in craneLib.buildPackage rec { - pname = "commitment_mapper_builder"; + pname = "circuits_executables"; version = "0.1.0"; inherit cargoArtifacts; src = src-path; - cargoLock = "${src-path}/commitment_mapper_builder/Cargo.lock"; - cargoToml = "${src-path}/commitment_mapper_builder/Cargo.toml"; + cargoLock = "${src-path}/circuits_executables/Cargo.lock"; + cargoToml = "${src-path}/circuits_executables/Cargo.toml"; postUnpack = '' - cd $sourceRoot/commitment_mapper_builder + cd $sourceRoot/circuits_executables sourceRoot="." ''; } From 564e8baa8619410fb27ebf36dbe4941e5ad75a8f Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Thu, 14 Sep 2023 17:52:57 +0300 Subject: [PATCH 10/59] build(yarn): Upgrade to v4.1.0 --- .gitattributes | 4 + .yarn/releases/yarn-4.1.0.cjs | 893 ++++ .yarnrc.yml | 17 +- package.json | 2 +- yarn.lock | 9032 ++++++++++++++++----------------- 5 files changed, 5426 insertions(+), 4522 deletions(-) create mode 100644 .gitattributes create mode 100755 .yarn/releases/yarn-4.1.0.cjs diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..af3ad1281 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +/.yarn/** linguist-vendored +/.yarn/releases/* binary +/.yarn/plugins/**/* binary +/.pnp.* binary linguist-generated diff --git a/.yarn/releases/yarn-4.1.0.cjs b/.yarn/releases/yarn-4.1.0.cjs new file mode 100755 index 000000000..738adce59 --- /dev/null +++ b/.yarn/releases/yarn-4.1.0.cjs @@ -0,0 +1,893 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var Z3e=Object.create;var NR=Object.defineProperty;var $3e=Object.getOwnPropertyDescriptor;var e_e=Object.getOwnPropertyNames;var t_e=Object.getPrototypeOf,r_e=Object.prototype.hasOwnProperty;var ve=(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 new Error('Dynamic require of "'+t+'" is not supported')});var Et=(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)NR(t,r,{get:e[r],enumerable:!0})},n_e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of e_e(e))!r_e.call(t,a)&&a!==r&&NR(t,a,{get:()=>e[a],enumerable:!(o=$3e(e,a))||o.enumerable});return t};var $e=(t,e,r)=>(r=t!=null?Z3e(t_e(t)):{},n_e(e||!t||!t.__esModule?NR(r,"default",{value:t,enumerable:!0}):r,t));var vi={};Vt(vi,{SAFE_TIME:()=>x7,S_IFDIR:()=>wD,S_IFLNK:()=>ID,S_IFMT:()=>Ou,S_IFREG:()=>jw});var Ou,wD,jw,ID,x7,k7=Et(()=>{Ou=61440,wD=16384,jw=32768,ID=40960,x7=456789e3});var ar={};Vt(ar,{EBADF:()=>Io,EBUSY:()=>i_e,EEXIST:()=>u_e,EINVAL:()=>o_e,EISDIR:()=>c_e,ENOENT:()=>a_e,ENOSYS:()=>s_e,ENOTDIR:()=>l_e,ENOTEMPTY:()=>f_e,EOPNOTSUPP:()=>p_e,EROFS:()=>A_e,ERR_DIR_CLOSED:()=>LR});function Tl(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function i_e(t){return Tl("EBUSY",t)}function s_e(t,e){return Tl("ENOSYS",`${t}, ${e}`)}function o_e(t){return Tl("EINVAL",`invalid argument, ${t}`)}function Io(t){return Tl("EBADF",`bad file descriptor, ${t}`)}function a_e(t){return Tl("ENOENT",`no such file or directory, ${t}`)}function l_e(t){return Tl("ENOTDIR",`not a directory, ${t}`)}function c_e(t){return Tl("EISDIR",`illegal operation on a directory, ${t}`)}function u_e(t){return Tl("EEXIST",`file already exists, ${t}`)}function A_e(t){return Tl("EROFS",`read-only filesystem, ${t}`)}function f_e(t){return Tl("ENOTEMPTY",`directory not empty, ${t}`)}function p_e(t){return Tl("EOPNOTSUPP",`operation not supported, ${t}`)}function LR(){return Tl("ERR_DIR_CLOSED","Directory handle was closed")}var BD=Et(()=>{});var Ea={};Vt(Ea,{BigIntStatsEntry:()=>ty,DEFAULT_MODE:()=>UR,DirEntry:()=>OR,StatEntry:()=>ey,areStatsEqual:()=>_R,clearStats:()=>vD,convertToBigIntStats:()=>g_e,makeDefaultStats:()=>Q7,makeEmptyStats:()=>h_e});function Q7(){return new ey}function h_e(){return vD(Q7())}function vD(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):MR.types.isDate(r)&&(t[e]=new Date(0))}return t}function g_e(t){let e=new ty;for(let r in t)if(Object.hasOwn(t,r)){let o=t[r];typeof o=="number"?e[r]=BigInt(o):MR.types.isDate(o)&&(e[r]=new Date(o))}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 _R(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,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var MR,UR,OR,ey,ty,HR=Et(()=>{MR=$e(ve("util")),UR=33188,OR=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}},ey=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=UR;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}},ty=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(UR);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 C_e(t){let e,r;if(e=t.match(y_e))t=e[1];else if(r=t.match(E_e))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function w_e(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(d_e))?t=`/${e[1]}`:(r=t.match(m_e))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function DD(t,e){return t===ue?R7(e):jR(e)}var Gw,Bt,dr,ue,V,F7,d_e,m_e,y_e,E_e,jR,R7,Ca=Et(()=>{Gw=$e(ve("path")),Bt={root:"/",dot:".",parent:".."},dr={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"},ue=Object.create(Gw.default),V=Object.create(Gw.default.posix);ue.cwd=()=>process.cwd();V.cwd=process.platform==="win32"?()=>jR(process.cwd()):process.cwd;process.platform==="win32"&&(V.resolve=(...t)=>t.length>0&&V.isAbsolute(t[0])?Gw.default.posix.resolve(...t):Gw.default.posix.resolve(V.cwd(),...t));F7=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)};ue.contains=(t,e)=>F7(ue,t,e);V.contains=(t,e)=>F7(V,t,e);d_e=/^([a-zA-Z]:.*)$/,m_e=/^\/\/(\.\/)?(.*)$/,y_e=/^\/([a-zA-Z]:.*)$/,E_e=/^\/unc\/(\.dot\/)?(.*)$/;jR=process.platform==="win32"?w_e:t=>t,R7=process.platform==="win32"?C_e:t=>t;ue.fromPortablePath=R7;ue.toPortablePath=jR});async function SD(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function T7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:Og,mtime:Og}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await GR(A,p,t,n,r,u,{...a,didParentExist:!0});for(let I of A)await I();await Promise.all(p.map(I=>I()))}async function GR(t,e,r,o,a,n,u){let A=u.didParentExist?await N7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=u.stableTime?{atime:Og,mtime:Og}:p,I;switch(!0){case p.isDirectory():I=await B_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():I=await S_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():I=await P_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(u.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((I||A?.mtime?.getTime()!==E.getTime()||A?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,E)),I=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),I=!0)),I}async function N7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function B_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!=="EEXIST")throw v}}),h=!0);let E=await n.readdirPromise(u),I=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of E.sort())await GR(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),I)&&(h=!0);else(await Promise.all(E.map(async x=>{await GR(t,e,r,r.pathUtils.join(o,x),n,n.pathUtils.join(u,x),I)}))).some(x=>x)&&(h=!0);return h}async function v_e(t,e,r,o,a,n,u,A,p,h){let E=await n.checksumFilePromise(u,{algorithm:"sha1"}),I=420,v=A.mode&511,x=`${E}${v!==I?v.toString(8):""}`,C=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),R;(ce=>(ce[ce.Lock=0]="Lock",ce[ce.Rename=1]="Rename"))(R||={});let L=1,U=await N7(r,C);if(a){let ae=U&&a.dev===U.dev&&a.ino===U.ino,fe=U?.mtimeMs!==I_e;if(ae&&fe&&h.autoRepair&&(L=0,U=null),!ae)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let J=!U&&L===1?`${C}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,te=!1;return t.push(async()=>{if(!U&&(L===0&&await r.lockPromise(C,async()=>{let ae=await n.readFilePromise(u);await r.writeFilePromise(C,ae)}),L===1&&J)){let ae=await n.readFilePromise(u);await r.writeFilePromise(J,ae);try{await r.linkPromise(J,C)}catch(fe){if(fe.code==="EEXIST")te=!0,await r.unlinkPromise(J);else throw fe}}a||await r.linkPromise(C,o)}),e.push(async()=>{U||(await r.lutimesPromise(C,Og,Og),v!==I&&await r.chmodPromise(C,v)),J&&!te&&await r.unlinkPromise(J)}),!1}async function D_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function S_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type==="HardlinkFromIndex"?v_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):D_e(t,e,r,o,a,n,u,A,p)}async function P_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(DD(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Og,I_e,qR=Et(()=>{Ca();Og=new Date(456789e3*1e3),I_e=Og.getTime()});function PD(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let u=t.pathUtils.join(e,n);return Object.assign(t.statSync(u),{name:n,path:void 0})};return new qw(e,a,o)}var qw,L7=Et(()=>{BD();qw=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw LR()}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 O7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var M7,ry,U7=Et(()=>{M7=ve("events");HR();ry=class extends M7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new ry(r,o,a);return n.start(),n}start(){O7(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(){O7(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 o=this.bigint?new ty:new ey;return vD(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;_R(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener("change",r);let o=this.changeListeners.get(r);typeof o<"u"&&clearInterval(o),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 ny(t,e,r,o){let a,n,u,A;switch(typeof r){case"function":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=bD.get(t);typeof p>"u"&&bD.set(t,p=new Map);let h=p.get(e);return typeof h>"u"&&(h=ry.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function Mg(t,e,r){let o=bD.get(t);if(typeof o>"u")return;let a=o.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function Ug(t){let e=bD.get(t);if(!(typeof e>"u"))for(let r of e.keys())Mg(t,r)}var bD,YR=Et(()=>{U7();bD=new WeakMap});function b_e(t){let e=t.match(/\r?\n/g);if(e===null)return H7.EOL;let r=e.filter(a=>a===`\r +`).length,o=e.length-r;return r>o?`\r +`:` +`}function _g(t,e){return e.replace(/\r?\n/g,b_e(t))}var _7,H7,gf,Mu,Hg=Et(()=>{_7=ve("crypto"),H7=ve("os");qR();Ca();gf=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let u=await this.readdirPromise(a);if(r)for(let A of u.sort())o.push(this.pathUtils.join(a,A));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let o=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,_7.createHash)(r),A=0;for(;(A=await this.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest("hex")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=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(u=>this.removePromise(this.pathUtils.resolve(e,u))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(u){if(u.code!=="EBUSY"&&u.code!=="ENOTEMPTY")throw u;nsetTimeout(A,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(o.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:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{await this.mkdirPromise(A)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=A,r!=null&&await this.chmodPromise(A,r),o!=null)await this.utimesPromise(A,o[0],o[1]);else{let p=await this.statPromise(this.pathUtils.dirname(A));await this.utimesPromise(A,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{this.mkdirSync(A)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=A,r!=null&&this.chmodSync(A,r),o!=null)this.utimesSync(A,o[0],o[1]);else{let p=this.statSync(this.pathUtils.dirname(A));this.utimesSync(A,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:u=!1,linkStrategy:A=null}={}){return await T7(this,e,o,r,{overwrite:a,stableSort:n,stableTime:u,linkStrategy:A})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=o.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),o.pathUtils.join(r,h),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!u||a){u&&this.removeSync(e);let p=o.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!u||a){u&&this.removeSync(e);let p=o.readlinkSync(r);this.symlinkSync(DD(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let A=n.mode&511;this.chmodSync(e,A)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let u=o?_g(n,r):r;n!==u&&await this.writeFilePromise(e,u,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let u=o?_g(n,r):r;n!==u&&this.writeFileSync(e,u,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A=async()=>{let p;try{[p]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;u===null;)try{u=await this.openPromise(o,"wx")}catch(p){if(p.code==="EEXIST"){if(!await A())try{await this.unlinkPromise(o);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 ${o})`)}else throw p}await this.writePromise(u,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(u),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r,{compact:o=!1}={}){let a=o?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)} +`)}writeJsonSync(e,r,{compact:o=!1}={}){let a=o?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)} +`)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},Mu=class extends gf{constructor(){super(V)}}});var Ss,df=Et(()=>{Hg();Ss=class extends gf{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,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}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,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,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,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}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,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}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 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,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(u,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(u,a,o)}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,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}}});var Uu,j7=Et(()=>{df();Uu=class extends Ss{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});function G7(t){let e=t;return typeof t.path=="string"&&(e.path=ue.toPortablePath(t.path)),e}var q7,Tn,jg=Et(()=>{q7=$e(ve("fs"));Hg();Ca();Tn=class extends Mu{constructor(r=q7.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return Bt.root}resolve(r){return V.resolve(r)}async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.open(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}openSync(r,o,a){return this.realFs.openSync(ue.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<"u"?this.realFs.opendir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(ue.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>{let n=a;return Object.defineProperty(n,"path",{value:r,configurable:!0,writable:!0}),n})}opendirSync(r,o){let n=typeof o<"u"?this.realFs.opendirSync(ue.fromPortablePath(r),o):this.realFs.opendirSync(ue.fromPortablePath(r));return Object.defineProperty(n,"path",{value:r,configurable:!0,writable:!0}),n}async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{this.realFs.read(r,o,a,n,u,(h,E)=>{h?p(h):A(E)})})}readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o=="string"?this.realFs.write(r,o,a,this.makeCallback(A,p)):this.realFs.write(r,o,a,n,u,this.makeCallback(A,p)))}writeSync(r,o,a,n,u){return typeof o=="string"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,u)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(ue.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}realpathSync(r){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(ue.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(ue.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(ue.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(ue.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(ue.fromPortablePath(r),o):this.realFs.statSync(ue.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(ue.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(ue.fromPortablePath(r),o):this.realFs.lstatSync(ue.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(ue.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,u))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.chown(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}chownSync(r,o,a){return this.realFs.chownSync(ue.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.realFs.copyFile(ue.fromPortablePath(r),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(ue.fromPortablePath(r),ue.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.appendFile(A,o,a,this.makeCallback(n,u)):this.realFs.appendFile(A,o,this.makeCallback(n,u))})}appendFileSync(r,o,a){let n=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.writeFile(A,o,a,this.makeCallback(n,u)):this.realFs.writeFile(A,o,this.makeCallback(n,u))})}writeFileSync(r,o,a){let n=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(ue.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(ue.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.utimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}utimesSync(r,o,a){this.realFs.utimesSync(ue.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.lutimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}lutimesSync(r,o,a){this.realFs.lutimesSync(ue.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(ue.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(ue.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.symlink(ue.fromPortablePath(r.replace(/\/+$/,"")),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(ue.fromPortablePath(r.replace(/\/+$/,"")),ue.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof r=="string"?ue.fromPortablePath(r):r;this.realFs.readFile(u,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r=="string"?ue.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o?o.recursive&&process.platform==="win32"?o.withFileTypes?this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(G7)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(ue.toPortablePath)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.readdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}readdirSync(r,o){return o?o.recursive&&process.platform==="win32"?o.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(r),o).map(G7):this.realFs.readdirSync(ue.fromPortablePath(r),o).map(ue.toPortablePath):this.realFs.readdirSync(ue.fromPortablePath(r),o):this.realFs.readdirSync(ue.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(ue.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}readlinkSync(r){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(ue.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(ue.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(ue.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(ue.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var gn,Y7=Et(()=>{jg();df();Ca();gn=class extends Ss{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?V.normalize(r):this.baseFs.resolve(V.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var W7,_u,K7=Et(()=>{jg();df();Ca();W7=Bt.root,_u=class extends Ss{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.resolve(Bt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Bt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(W7,r));if(o.match(/^\.\.\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(W7,this.pathUtils.relative(this.target,r))}}});var iy,V7=Et(()=>{df();iy=class extends Ss{constructor(r,o){super(o);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 Gg,wa,Hp,J7=Et(()=>{Gg=ve("fs");Hg();jg();YR();BD();Ca();wa=4278190080,Hp=class extends Mu{constructor({baseFs:r=new Tn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:u=!0,maxAge:A=5e3,typeCheck:p=Gg.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:I}){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=u?new Map:null,this.factoryPromise=E,this.factorySync=I,this.filter=o,this.getMountPoint=h,this.magic=a<<24,this.maxAge=A,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Ug(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(Ug(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:u})=>this.remapFd(n,await n.openPromise(u,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:u})=>this.remapFd(n,n.openSync(u,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,u){if((r&wa)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Io("read");let[p,h]=A;return await p.readPromise(h,o,a,n,u)}readSync(r,o,a,n,u){if((r&wa)!==this.magic)return this.baseFs.readSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Io("readSync");let[p,h]=A;return p.readSync(h,o,a,n,u)}async writePromise(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o=="string"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Io("write");let[p,h]=A;return typeof o=="string"?await p.writePromise(h,o,a):await p.writePromise(h,o,a,n,u)}writeSync(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o=="string"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Io("writeSync");let[p,h]=A;return typeof o=="string"?p.writeSync(h,o,a):p.writeSync(h,o,a,n,u)}async closePromise(r){if((r&wa)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Io("close");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&wa)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Io("closeSync");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:u})=>{let A=a.createReadStream(u,o);return A.path=ue.fromPortablePath(this.pathUtils.join(n,u)),A})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>"u"&&(u=await this.baseFs.realpathPromise(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>"u"&&(u=this.baseFs.realpathSync(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("fstat");let[n,u]=a;return n.fstatPromise(u,o)}fstatSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("fstatSync");let[n,u]=a;return n.fstatSync(u,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("fchmod");let[n,u]=a;return n.fchmodPromise(u,o)}fchmodSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("fchmodSync");let[n,u]=a;return n.fchmodSync(u,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Io("fchown");let[u,A]=n;return u.fchownPromise(A,o,a)}fchownSync(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Io("fchownSync");let[u,A]=n;return u.fchownSync(A,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:u})=>await n.chownPromise(u,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:u})=>n.chownSync(u,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,A)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,A)}))}async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&Gg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:"EXDEV"});if(a&Gg.constants.COPYFILE_EXCL&&await this.existsPromise(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:"EEXIST"});let E;try{E=await u.readFilePromise(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(u,{subPath:A})=>await n(this.baseFs,r,u,A)),async(u,{subPath:A})=>await this.makeCallPromise(o,async()=>await n(u,A,this.baseFs,o),async(p,{subPath:h})=>u!==p?await n(u,A,p,h):await u.copyFilePromise(A,h,a)))}copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&Gg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:"EXDEV"});if(a&Gg.constants.COPYFILE_EXCL&&this.existsSync(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:"EEXIST"});let E;try{E=u.readFileSync(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(u,{subPath:A})=>n(this.baseFs,r,u,A)),(u,{subPath:A})=>this.makeCallSync(o,()=>n(u,A,this.baseFs,o),(p,{subPath:h})=>u!==p?n(u,A,p,h):u.copyFileSync(A,h,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:u})=>await n.appendFilePromise(u,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:u})=>n.appendFileSync(u,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:u})=>await n.writeFilePromise(u,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:u})=>n.writeFileSync(u,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:u})=>await n.utimesPromise(u,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:u})=>n.utimesSync(u,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:u})=>await n.lutimesPromise(u,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:u})=>n.lutimesSync(u,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:u})=>await n.symlinkPromise(r,u))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:u})=>n.symlinkSync(r,u))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("ftruncate");let[n,u]=a;return n.ftruncatePromise(u,o)}ftruncateSync(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("ftruncateSync");let[n,u]=a;return n.ftruncateSync(u,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:u})=>n.watch(u,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>ny(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>Mg(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await o();let u=this.resolve(r),A=this.findMount(u);return A?n&&A.subPath==="/"?await o():await this.getMountPromise(A.archivePath,async p=>await a(p,A)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return o();let u=this.resolve(r),A=this.findMount(u);return!A||n&&A.subPath==="/"?o():this.getMountSync(A.archivePath,p=>a(p,A))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o="";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(this.typeCheck!==null&&(this.baseFs.lstatSync(o).mode&Gg.constants.S_IFMT)!==this.typeCheck){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(Bt.root,r.substring(o.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[u,{childFs:A,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||A.hasOpenFileHandles?.())){if(o>=p){A.saveAndClose?.(),this.mountInstances.delete(u),n-=1;continue}else if(r===null||n<=0){a=p;break}A.saveAndClose?.(),this.mountInstances.delete(u),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-o).unref())}async getMountPromise(r,o){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 o(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await o(a)}finally{a.saveAndClose?.()}}}getMountSync(r,o){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,o(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return o(a)}finally{a.saveAndClose?.()}}}}});var Zt,WR,Yw,z7=Et(()=>{Hg();Ca();Zt=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),WR=class extends gf{constructor(){super(V)}getExtractHint(){throw Zt()}getRealPath(){throw Zt()}resolve(){throw Zt()}async openPromise(){throw Zt()}openSync(){throw Zt()}async opendirPromise(){throw Zt()}opendirSync(){throw Zt()}async readPromise(){throw Zt()}readSync(){throw Zt()}async writePromise(){throw Zt()}writeSync(){throw Zt()}async closePromise(){throw Zt()}closeSync(){throw Zt()}createWriteStream(){throw Zt()}createReadStream(){throw Zt()}async realpathPromise(){throw Zt()}realpathSync(){throw Zt()}async readdirPromise(){throw Zt()}readdirSync(){throw Zt()}async existsPromise(e){throw Zt()}existsSync(e){throw Zt()}async accessPromise(){throw Zt()}accessSync(){throw Zt()}async statPromise(){throw Zt()}statSync(){throw Zt()}async fstatPromise(e){throw Zt()}fstatSync(e){throw Zt()}async lstatPromise(e){throw Zt()}lstatSync(e){throw Zt()}async fchmodPromise(){throw Zt()}fchmodSync(){throw Zt()}async chmodPromise(){throw Zt()}chmodSync(){throw Zt()}async fchownPromise(){throw Zt()}fchownSync(){throw Zt()}async chownPromise(){throw Zt()}chownSync(){throw Zt()}async mkdirPromise(){throw Zt()}mkdirSync(){throw Zt()}async rmdirPromise(){throw Zt()}rmdirSync(){throw Zt()}async linkPromise(){throw Zt()}linkSync(){throw Zt()}async symlinkPromise(){throw Zt()}symlinkSync(){throw Zt()}async renamePromise(){throw Zt()}renameSync(){throw Zt()}async copyFilePromise(){throw Zt()}copyFileSync(){throw Zt()}async appendFilePromise(){throw Zt()}appendFileSync(){throw Zt()}async writeFilePromise(){throw Zt()}writeFileSync(){throw Zt()}async unlinkPromise(){throw Zt()}unlinkSync(){throw Zt()}async utimesPromise(){throw Zt()}utimesSync(){throw Zt()}async lutimesPromise(){throw Zt()}lutimesSync(){throw Zt()}async readFilePromise(){throw Zt()}readFileSync(){throw Zt()}async readlinkPromise(){throw Zt()}readlinkSync(){throw Zt()}async truncatePromise(){throw Zt()}truncateSync(){throw Zt()}async ftruncatePromise(e,r){throw Zt()}ftruncateSync(e,r){throw Zt()}watch(){throw Zt()}watchFile(){throw Zt()}unwatchFile(){throw Zt()}},Yw=WR;Yw.instance=new WR});var jp,X7=Et(()=>{df();Ca();jp=class extends Ss{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return ue.fromPortablePath(r)}mapToBase(r){return ue.toPortablePath(r)}}});var x_e,KR,k_e,mi,Z7=Et(()=>{jg();df();Ca();x_e=/^[0-9]+$/,KR=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,k_e=/^([^/]+-)?[a-f0-9]+$/,mi=class extends Ss{constructor({baseFs:r=new Tn}={}){super(V);this.baseFs=r}static makeVirtualPath(r,o,a){if(V.basename(r)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!V.basename(o).match(k_e))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let u=V.relative(V.dirname(r),a).split("/"),A=0;for(;A{VR=$e(ve("buffer")),$7=ve("url"),eY=ve("util");df();Ca();xD=class extends Ss{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r=="string")return r;if(r instanceof URL)return(0,$7.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(!Q_e(r,o))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 o}throw new Error(`Unsupported path type: ${(0,eY.inspect)(r)}`)}}});var rY,Bo,mf,Gp,kD,QD,sy,Tc,Nc,F_e,R_e,T_e,N_e,Ww,nY=Et(()=>{rY=ve("readline"),Bo=Symbol("kBaseFs"),mf=Symbol("kFd"),Gp=Symbol("kClosePromise"),kD=Symbol("kCloseResolve"),QD=Symbol("kCloseReject"),sy=Symbol("kRefs"),Tc=Symbol("kRef"),Nc=Symbol("kUnref"),Ww=class{constructor(e,r){this[F_e]=1;this[R_e]=void 0;this[T_e]=void 0;this[N_e]=void 0;this[Bo]=r,this[mf]=e}get fd(){return this[mf]}async appendFile(e,r){try{this[Tc](this.appendFile);let o=(typeof r=="string"?r:r?.encoding)??void 0;return await this[Bo].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[Nc]()}}async chown(e,r){try{return this[Tc](this.chown),await this[Bo].fchownPromise(this.fd,e,r)}finally{this[Nc]()}}async chmod(e){try{return this[Tc](this.chmod),await this[Bo].fchmodPromise(this.fd,e)}finally{this[Nc]()}}createReadStream(e){return this[Bo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Bo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,r,o,a){try{this[Tc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??=0,o??=0,o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[Bo].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[Nc]()}}async readFile(e){try{this[Tc](this.readFile);let r=(typeof e=="string"?e:e?.encoding)??void 0;return await this[Bo].readFilePromise(this.fd,r)}finally{this[Nc]()}}readLines(e){return(0,rY.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Tc](this.stat),await this[Bo].fstatPromise(this.fd,e)}finally{this[Nc]()}}async truncate(e){try{return this[Tc](this.truncate),await this[Bo].ftruncatePromise(this.fd,e)}finally{this[Nc]()}}utimes(e,r){throw new Error("Method not implemented.")}async writeFile(e,r){try{this[Tc](this.writeFile);let o=(typeof r=="string"?r:r?.encoding)??void 0;await this[Bo].writeFilePromise(this.fd,e,o)}finally{this[Nc]()}}async write(...e){try{if(this[Tc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[Nc]()}}async writev(e,r){try{this[Tc](this.writev);let o=0;if(typeof r<"u")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);o+=n.bytesWritten}return{buffers:e,bytesWritten:o}}finally{this[Nc]()}}readv(e,r){throw new Error("Method not implemented.")}close(){if(this[mf]===-1)return Promise.resolve();if(this[Gp])return this[Gp];if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[Gp]=this[Bo].closePromise(e).finally(()=>{this[Gp]=void 0})}else this[Gp]=new Promise((e,r)=>{this[kD]=e,this[QD]=r}).finally(()=>{this[Gp]=void 0,this[QD]=void 0,this[kD]=void 0});return this[Gp]}[(Bo,mf,F_e=sy,R_e=Gp,T_e=kD,N_e=QD,Tc)](e){if(this[mf]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=e.name,r}this[sy]++}[Nc](){if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[Bo].closePromise(e).then(this[kD],this[QD])}}}});function Kw(t,e){e=new xD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof u?.[oy.promisify.custom]<"u"&&(n[oy.promisify.custom]=u[oy.promisify.custom])};{r(t,"exists",(o,...a)=>{let u=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(A=>{u(A)},()=>{u(!1)})})}),r(t,"read",(...o)=>{let[a,n,u,A,p,h]=o;if(o.length<=3){let E={};o.length<3?h=o[1]:(E=o[1],h=o[2]),{buffer:n=Buffer.alloc(16384),offset:u=0,length:A=n.byteLength,position:p}=E}if(u==null&&(u=0),A|=0,A===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,u,A,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let o of iY){let a=o.replace(/Promise$/,"");if(typeof t[a]>"u")continue;let n=e[o];if(typeof n>"u")continue;r(t,a,(...A)=>{let h=typeof A[A.length-1]=="function"?A.pop():()=>{};process.nextTick(()=>{n.apply(e,A).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,"readSync",(...o)=>{let[a,n,u,A,p]=o;return o.length<=3&&({offset:u=0,length:A=n.byteLength,position:p}=o[2]||{}),u==null&&(u=0),A|=0,A===0?0:(p==null&&(p=-1),e.readSync(a,n,u,A,p))});for(let o of L_e){let a=o;if(typeof t[a]>"u")continue;let n=e[o];typeof n>"u"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of iY){let n=a.replace(/Promise$/,"");if(typeof o[n]>"u")continue;let u=e[a];typeof u>"u"||a!=="open"&&r(o,n,(A,...p)=>A instanceof Ww?A[n].apply(A,p):u.call(e,A,...p))}r(o,"open",async(...a)=>{let n=await e.openPromise(...a);return new Ww(n,e)})}t.read[oy.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[oy.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function FD(t,e){let r=Object.create(t);return Kw(r,e),r}var oy,L_e,iY,sY=Et(()=>{oy=ve("util");tY();nY();L_e=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","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),iY=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function oY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}function aY(){if(JR)return JR;let t=ue.toPortablePath(lY.default.tmpdir()),e=oe.realpathSync(t);return process.once("exit",()=>{oe.rmtempSync()}),JR={tmpdir:t,realTmpdir:e}}var lY,Lc,JR,oe,cY=Et(()=>{lY=$e(ve("os"));jg();Ca();Lc=new Set,JR=null;oe=Object.assign(new Tn,{detachTemp(t){Lc.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY("xfs-");try{this.mkdirSync(V.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>"u")return a;try{return t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY("xfs-");try{await this.mkdirPromise(V.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>"u")return a;try{return await t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Lc.values()).map(async t=>{try{await oe.removePromise(t,{maxRetries:0}),Lc.delete(t)}catch{}}))},rmtempSync(){for(let t of Lc)try{oe.removeSync(t),Lc.delete(t)}catch{}}})});var Vw={};Vt(Vw,{AliasFS:()=>Uu,BasePortableFakeFS:()=>Mu,CustomDir:()=>qw,CwdFS:()=>gn,FakeFS:()=>gf,Filename:()=>dr,JailFS:()=>_u,LazyFS:()=>iy,MountFS:()=>Hp,NoFS:()=>Yw,NodeFS:()=>Tn,PortablePath:()=>Bt,PosixFS:()=>jp,ProxiedFS:()=>Ss,VirtualFS:()=>mi,constants:()=>vi,errors:()=>ar,extendFs:()=>FD,normalizeLineEndings:()=>_g,npath:()=>ue,opendir:()=>PD,patchFs:()=>Kw,ppath:()=>V,setupCopyIndex:()=>SD,statUtils:()=>Ea,unwatchAllFiles:()=>Ug,unwatchFile:()=>Mg,watchFile:()=>ny,xfs:()=>oe});var St=Et(()=>{k7();BD();HR();qR();L7();YR();Hg();Ca();Ca();j7();Hg();Y7();K7();V7();J7();z7();jg();X7();df();Z7();sY();cY()});var hY=_((obt,pY)=>{pY.exports=fY;fY.sync=M_e;var uY=ve("fs");function O_e(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 o=0;o{yY.exports=dY;dY.sync=U_e;var gY=ve("fs");function dY(t,e,r){gY.stat(t,function(o,a){r(o,o?!1:mY(a,e))})}function U_e(t,e){return mY(gY.statSync(t),e)}function mY(t,e){return t.isFile()&&__e(t,e)}function __e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),u=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),A=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),E=A|p,I=r&h||r&p&&a===u||r&A&&o===n||r&E&&n===0;return I}});var wY=_((cbt,CY)=>{var lbt=ve("fs"),RD;process.platform==="win32"||global.TESTING_WINDOWS?RD=hY():RD=EY();CY.exports=zR;zR.sync=H_e;function zR(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(o,a){zR(t,e||{},function(n,u){n?a(n):o(u)})})}RD(t,e||{},function(o,a){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function H_e(t,e){try{return RD.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var bY=_((ubt,PY)=>{var ay=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",IY=ve("path"),j_e=ay?";":":",BY=wY(),vY=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),DY=(t,e)=>{let r=e.colon||j_e,o=t.match(/\//)||ay&&t.match(/\\/)?[""]:[...ay?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=ay?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=ay?a.split(r):[""];return ay&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:a}},SY=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=DY(t,e),u=[],A=h=>new Promise((E,I)=>{if(h===o.length)return e.all&&u.length?E(u):I(vY(t));let v=o[h],x=/^".*"$/.test(v)?v.slice(1,-1):v,C=IY.join(x,t),R=!x&&/^\.[\\\/]/.test(t)?t.slice(0,2)+C:C;E(p(R,h,0))}),p=(h,E,I)=>new Promise((v,x)=>{if(I===a.length)return v(A(E+1));let C=a[I];BY(h+C,{pathExt:n},(R,L)=>{if(!R&&L)if(e.all)u.push(h+C);else return v(h+C);return v(p(h,E,I+1))})});return r?A(0).then(h=>r(null,h),r):A(0)},G_e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=DY(t,e),n=[];for(let u=0;u{"use strict";var xY=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};XR.exports=xY;XR.exports.default=xY});var TY=_((fbt,RY)=>{"use strict";var QY=ve("path"),q_e=bY(),Y_e=kY();function FY(t,e){let r=t.options.env||process.env,o=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 u;try{u=q_e.sync(t.command,{path:r[Y_e({env:r})],pathExt:e?QY.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return u&&(u=QY.resolve(a?t.options.cwd:"",u)),u}function W_e(t){return FY(t)||FY(t,!0)}RY.exports=W_e});var NY=_((pbt,$R)=>{"use strict";var ZR=/([()\][%!^"`<>&|;, *?])/g;function K_e(t){return t=t.replace(ZR,"^$1"),t}function V_e(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(ZR,"^$1"),e&&(t=t.replace(ZR,"^$1")),t}$R.exports.command=K_e;$R.exports.argument=V_e});var OY=_((hbt,LY)=>{"use strict";LY.exports=/^#!(.*)/});var UY=_((gbt,MY)=>{"use strict";var J_e=OY();MY.exports=(t="")=>{let e=t.match(J_e);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?o:o?`${a} ${o}`:a}});var HY=_((dbt,_Y)=>{"use strict";var eT=ve("fs"),z_e=UY();function X_e(t){let r=Buffer.alloc(150),o;try{o=eT.openSync(t,"r"),eT.readSync(o,r,0,150,0),eT.closeSync(o)}catch{}return z_e(r.toString())}_Y.exports=X_e});var YY=_((mbt,qY)=>{"use strict";var Z_e=ve("path"),jY=TY(),GY=NY(),$_e=HY(),e8e=process.platform==="win32",t8e=/\.(?:com|exe)$/i,r8e=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function n8e(t){t.file=jY(t);let e=t.file&&$_e(t.file);return e?(t.args.unshift(t.file),t.command=e,jY(t)):t.file}function i8e(t){if(!e8e)return t;let e=n8e(t),r=!t8e.test(e);if(t.options.forceShell||r){let o=r8e.test(e);t.command=Z_e.normalize(t.command),t.command=GY.command(t.command),t.args=t.args.map(n=>GY.argument(n,o));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 s8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:i8e(o)}qY.exports=s8e});var VY=_((ybt,KY)=>{"use strict";var tT=process.platform==="win32";function rT(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 o8e(t,e){if(!tT)return;let r=t.emit;t.emit=function(o,a){if(o==="exit"){let n=WY(a,e,"spawn");if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function WY(t,e){return tT&&t===1&&!e.file?rT(e.original,"spawn"):null}function a8e(t,e){return tT&&t===1&&!e.file?rT(e.original,"spawnSync"):null}KY.exports={hookChildProcess:o8e,verifyENOENT:WY,verifyENOENTSync:a8e,notFoundError:rT}});var sT=_((Ebt,ly)=>{"use strict";var JY=ve("child_process"),nT=YY(),iT=VY();function zY(t,e,r){let o=nT(t,e,r),a=JY.spawn(o.command,o.args,o.options);return iT.hookChildProcess(a,o),a}function l8e(t,e,r){let o=nT(t,e,r),a=JY.spawnSync(o.command,o.args,o.options);return a.error=a.error||iT.verifyENOENTSync(a.status,o),a}ly.exports=zY;ly.exports.spawn=zY;ly.exports.sync=l8e;ly.exports._parse=nT;ly.exports._enoent=iT});var ZY=_((Cbt,XY)=>{"use strict";function c8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function qg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,qg)}c8e(qg,Error);qg.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",I;for(I=0;I0){for(I=1,v=1;I>",P=Br(">>",!1),y=">&",F=Br(">&",!1),z=">",X=Br(">",!1),Z="<<<",ie=Br("<<<",!1),Pe="<&",Ne=Br("<&",!1),ot="<",dt=Br("<",!1),Gt=function(N){return{type:"argument",segments:[].concat(...N)}},$t=function(N){return N},bt="$'",an=Br("$'",!1),Qr="'",mr=Br("'",!1),br=function(N){return[{type:"text",text:N}]},Wr='""',Kn=Br('""',!1),Ns=function(){return{type:"text",text:""}},Ti='"',ps=Br('"',!1),io=function(N){return N},Pi=function(N){return{type:"arithmetic",arithmetic:N,quoted:!0}},Ls=function(N){return{type:"shell",shell:N,quoted:!0}},so=function(N){return{type:"variable",...N,quoted:!0}},cc=function(N){return{type:"text",text:N}},cu=function(N){return{type:"arithmetic",arithmetic:N,quoted:!1}},lp=function(N){return{type:"shell",shell:N,quoted:!1}},cp=function(N){return{type:"variable",...N,quoted:!1}},Os=function(N){return{type:"glob",pattern:N}},Dn=/^[^']/,oo=Cs(["'"],!0,!1),Ms=function(N){return N.join("")},ml=/^[^$"]/,yl=Cs(["$",'"'],!0,!1),ao=`\\ +`,Vn=Br(`\\ +`,!1),On=function(){return""},Ni="\\",Mn=Br("\\",!1),_i=/^[\\$"`]/,tr=Cs(["\\","$",'"',"`"],!1,!1),Oe=function(N){return N},ii="\\a",Ma=Br("\\a",!1),hr=function(){return"a"},uc="\\b",uu=Br("\\b",!1),Ac=function(){return"\b"},El=/^[Ee]/,DA=Cs(["E","e"],!1,!1),Au=function(){return"\x1B"},Ce="\\f",Rt=Br("\\f",!1),fc=function(){return"\f"},Hi="\\n",fu=Br("\\n",!1),Yt=function(){return` +`},Cl="\\r",SA=Br("\\r",!1),up=function(){return"\r"},pc="\\t",PA=Br("\\t",!1),Qn=function(){return" "},hi="\\v",hc=Br("\\v",!1),bA=function(){return"\v"},sa=/^[\\'"?]/,Li=Cs(["\\","'",'"',"?"],!1,!1),_o=function(N){return String.fromCharCode(parseInt(N,16))},Ze="\\x",lo=Br("\\x",!1),gc="\\u",pu=Br("\\u",!1),ji="\\U",hu=Br("\\U",!1),xA=function(N){return String.fromCodePoint(parseInt(N,16))},Ua=/^[0-7]/,dc=Cs([["0","7"]],!1,!1),hs=/^[0-9a-fA-f]/,_t=Cs([["0","9"],["a","f"],["A","f"]],!1,!1),Fn=ug(),Ci="{}",oa=Br("{}",!1),co=function(){return"{}"},Us="-",aa=Br("-",!1),la="+",Ho=Br("+",!1),wi=".",gs=Br(".",!1),ds=function(N,K,re){return{type:"number",value:(N==="-"?-1:1)*parseFloat(K.join("")+"."+re.join(""))}},ms=function(N,K){return{type:"number",value:(N==="-"?-1:1)*parseInt(K.join(""))}},_s=function(N){return{type:"variable",...N}},Un=function(N){return{type:"variable",name:N}},Sn=function(N){return N},ys="*",We=Br("*",!1),tt="/",It=Br("/",!1),nr=function(N,K,re){return{type:K==="*"?"multiplication":"division",right:re}},$=function(N,K){return K.reduce((re,pe)=>({left:re,...pe}),N)},ye=function(N,K,re){return{type:K==="+"?"addition":"subtraction",right:re}},Le="$((",pt=Br("$((",!1),ht="))",Tt=Br("))",!1),er=function(N){return N},$r="$(",Gi=Br("$(",!1),es=function(N){return N},bi="${",jo=Br("${",!1),kA=":-",QA=Br(":-",!1),Ap=function(N,K){return{name:N,defaultValue:K}},ig=":-}",gu=Br(":-}",!1),sg=function(N){return{name:N,defaultValue:[]}},du=":+",uo=Br(":+",!1),FA=function(N,K){return{name:N,alternativeValue:K}},mc=":+}",ca=Br(":+}",!1),og=function(N){return{name:N,alternativeValue:[]}},yc=function(N){return{name:N}},Pm="$",ag=Br("$",!1),$n=function(N){return e.isGlobPattern(N)},fp=function(N){return N},lg=/^[a-zA-Z0-9_]/,RA=Cs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Hs=function(){return cg()},mu=/^[$@*?#a-zA-Z0-9_\-]/,Ha=Cs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),qi=/^[()}<>$|&; \t"']/,ua=Cs(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),yu=/^[<>&; \t"']/,Es=Cs(["<",">","&",";"," "," ",'"',"'"],!1,!1),Ec=/^[ \t]/,Cc=Cs([" "," "],!1,!1),q=0,Dt=0,wl=[{line:1,column:1}],xi=0,wc=[],ct=0,Eu;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function cg(){return t.substring(Dt,q)}function yw(){return Ic(Dt,q)}function TA(N,K){throw K=K!==void 0?K:Ic(Dt,q),pg([fg(N)],t.substring(Dt,q),K)}function pp(N,K){throw K=K!==void 0?K:Ic(Dt,q),bm(N,K)}function Br(N,K){return{type:"literal",text:N,ignoreCase:K}}function Cs(N,K,re){return{type:"class",parts:N,inverted:K,ignoreCase:re}}function ug(){return{type:"any"}}function Ag(){return{type:"end"}}function fg(N){return{type:"other",description:N}}function hp(N){var K=wl[N],re;if(K)return K;for(re=N-1;!wl[re];)re--;for(K=wl[re],K={line:K.line,column:K.column};rexi&&(xi=q,wc=[]),wc.push(N))}function bm(N,K){return new qg(N,null,null,K)}function pg(N,K,re){return new qg(qg.buildMessage(N,K),N,K,re)}function hg(){var N,K,re;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=Cu(),re===r&&(re=null),re!==r?(Dt=N,K=n(re),N=K):(q=N,N=r)):(q=N,N=r),N}function Cu(){var N,K,re,pe,ze;if(N=q,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=gg(),pe!==r?(ze=xm(),ze===r&&(ze=null),ze!==r?(Dt=N,K=u(K,pe,ze),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r)}else q=N,N=r;if(N===r)if(N=q,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=gg(),pe===r&&(pe=null),pe!==r?(Dt=N,K=A(K,pe),N=K):(q=N,N=r)):(q=N,N=r)}else q=N,N=r;return N}function xm(){var N,K,re,pe,ze;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Cu(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=p(re),N=K):(q=N,N=r)}else q=N,N=r;else q=N,N=r;return N}function gg(){var N;return t.charCodeAt(q)===59?(N=h,q++):(N=r,ct===0&&Ct(E)),N===r&&(t.charCodeAt(q)===38?(N=I,q++):(N=r,ct===0&&Ct(v))),N}function wu(){var N,K,re;return N=q,K=Aa(),K!==r?(re=Ew(),re===r&&(re=null),re!==r?(Dt=N,K=x(K,re),N=K):(q=N,N=r)):(q=N,N=r),N}function Ew(){var N,K,re,pe,ze,mt,fr;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=km(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=wu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=C(re,ze),N=K):(q=N,N=r)}else q=N,N=r;else q=N,N=r}else q=N,N=r;else q=N,N=r;return N}function km(){var N;return t.substr(q,2)===R?(N=R,q+=2):(N=r,ct===0&&Ct(L)),N===r&&(t.substr(q,2)===U?(N=U,q+=2):(N=r,ct===0&&Ct(J))),N}function Aa(){var N,K,re;return N=q,K=dg(),K!==r?(re=Bc(),re===r&&(re=null),re!==r?(Dt=N,K=te(K,re),N=K):(q=N,N=r)):(q=N,N=r),N}function Bc(){var N,K,re,pe,ze,mt,fr;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Il(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Aa(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=ae(re,ze),N=K):(q=N,N=r)}else q=N,N=r;else q=N,N=r}else q=N,N=r;else q=N,N=r;return N}function Il(){var N;return t.substr(q,2)===fe?(N=fe,q+=2):(N=r,ct===0&&Ct(ce)),N===r&&(t.charCodeAt(q)===124?(N=me,q++):(N=r,ct===0&&Ct(he))),N}function Iu(){var N,K,re,pe,ze,mt;if(N=q,K=Cg(),K!==r)if(t.charCodeAt(q)===61?(re=Be,q++):(re=r,ct===0&&Ct(we)),re!==r)if(pe=Go(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(Dt=N,K=g(K,pe),N=K):(q=N,N=r)}else q=N,N=r;else q=N,N=r;else q=N,N=r;if(N===r)if(N=q,K=Cg(),K!==r)if(t.charCodeAt(q)===61?(re=Be,q++):(re=r,ct===0&&Ct(we)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=Ee(K),N=K):(q=N,N=r)}else q=N,N=r;else q=N,N=r;return N}function dg(){var N,K,re,pe,ze,mt,fr,Cr,yn,oi,Oi;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(q)===40?(re=Se,q++):(re=r,ct===0&&Ct(le)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(q)===41?(fr=ne,q++):(fr=r,ct===0&&Ct(ee)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=ja();oi!==r;)yn.push(oi),oi=ja();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=N,K=Ie(ze,yn),N=K):(q=N,N=r)}else q=N,N=r}else q=N,N=r}else q=N,N=r;else q=N,N=r}else q=N,N=r;else q=N,N=r}else q=N,N=r;else q=N,N=r;if(N===r){for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(q)===123?(re=Fe,q++):(re=r,ct===0&&Ct(At)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(q)===125?(fr=H,q++):(fr=r,ct===0&&Ct(at)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=ja();oi!==r;)yn.push(oi),oi=ja();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=N,K=Re(ze,yn),N=K):(q=N,N=r)}else q=N,N=r}else q=N,N=r}else q=N,N=r;else q=N,N=r}else q=N,N=r;else q=N,N=r}else q=N,N=r;else q=N,N=r;if(N===r){for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){for(re=[],pe=Iu();pe!==r;)re.push(pe),pe=Iu();if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r){if(ze=[],mt=gp(),mt!==r)for(;mt!==r;)ze.push(mt),mt=gp();else ze=r;if(ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=ke(re,ze),N=K):(q=N,N=r)}else q=N,N=r}else q=N,N=r}else q=N,N=r}else q=N,N=r;if(N===r){for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=Iu(),pe!==r)for(;pe!==r;)re.push(pe),pe=Iu();else re=r;if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=xe(re),N=K):(q=N,N=r)}else q=N,N=r}else q=N,N=r}}}return N}function NA(){var N,K,re,pe,ze;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=dp(),pe!==r)for(;pe!==r;)re.push(pe),pe=dp();else re=r;if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=He(re),N=K):(q=N,N=r)}else q=N,N=r}else q=N,N=r;return N}function gp(){var N,K,re;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r?(re=ja(),re!==r?(Dt=N,K=Te(re),N=K):(q=N,N=r)):(q=N,N=r),N===r){for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();K!==r?(re=dp(),re!==r?(Dt=N,K=Te(re),N=K):(q=N,N=r)):(q=N,N=r)}return N}function ja(){var N,K,re,pe,ze;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(Je.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(je)),re===r&&(re=null),re!==r?(pe=mg(),pe!==r?(ze=dp(),ze!==r?(Dt=N,K=b(re,pe,ze),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N}function mg(){var N;return t.substr(q,2)===w?(N=w,q+=2):(N=r,ct===0&&Ct(P)),N===r&&(t.substr(q,2)===y?(N=y,q+=2):(N=r,ct===0&&Ct(F)),N===r&&(t.charCodeAt(q)===62?(N=z,q++):(N=r,ct===0&&Ct(X)),N===r&&(t.substr(q,3)===Z?(N=Z,q+=3):(N=r,ct===0&&Ct(ie)),N===r&&(t.substr(q,2)===Pe?(N=Pe,q+=2):(N=r,ct===0&&Ct(Ne)),N===r&&(t.charCodeAt(q)===60?(N=ot,q++):(N=r,ct===0&&Ct(dt))))))),N}function dp(){var N,K,re;for(N=q,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=Go(),re!==r?(Dt=N,K=Te(re),N=K):(q=N,N=r)):(q=N,N=r),N}function Go(){var N,K,re;if(N=q,K=[],re=ws(),re!==r)for(;re!==r;)K.push(re),re=ws();else K=r;return K!==r&&(Dt=N,K=Gt(K)),N=K,N}function ws(){var N,K;return N=q,K=Ii(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=q,K=Qm(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=q,K=Fm(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=q,K=qo(),K!==r&&(Dt=N,K=$t(K)),N=K))),N}function Ii(){var N,K,re,pe;return N=q,t.substr(q,2)===bt?(K=bt,q+=2):(K=r,ct===0&&Ct(an)),K!==r?(re=ln(),re!==r?(t.charCodeAt(q)===39?(pe=Qr,q++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=N,K=br(re),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N}function Qm(){var N,K,re,pe;return N=q,t.charCodeAt(q)===39?(K=Qr,q++):(K=r,ct===0&&Ct(mr)),K!==r?(re=yp(),re!==r?(t.charCodeAt(q)===39?(pe=Qr,q++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=N,K=br(re),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N}function Fm(){var N,K,re,pe;if(N=q,t.substr(q,2)===Wr?(K=Wr,q+=2):(K=r,ct===0&&Ct(Kn)),K!==r&&(Dt=N,K=Ns()),N=K,N===r)if(N=q,t.charCodeAt(q)===34?(K=Ti,q++):(K=r,ct===0&&Ct(ps)),K!==r){for(re=[],pe=LA();pe!==r;)re.push(pe),pe=LA();re!==r?(t.charCodeAt(q)===34?(pe=Ti,q++):(pe=r,ct===0&&Ct(ps)),pe!==r?(Dt=N,K=io(re),N=K):(q=N,N=r)):(q=N,N=r)}else q=N,N=r;return N}function qo(){var N,K,re;if(N=q,K=[],re=mp(),re!==r)for(;re!==r;)K.push(re),re=mp();else K=r;return K!==r&&(Dt=N,K=io(K)),N=K,N}function LA(){var N,K;return N=q,K=qr(),K!==r&&(Dt=N,K=Pi(K)),N=K,N===r&&(N=q,K=Ep(),K!==r&&(Dt=N,K=Ls(K)),N=K,N===r&&(N=q,K=Dc(),K!==r&&(Dt=N,K=so(K)),N=K,N===r&&(N=q,K=yg(),K!==r&&(Dt=N,K=cc(K)),N=K))),N}function mp(){var N,K;return N=q,K=qr(),K!==r&&(Dt=N,K=cu(K)),N=K,N===r&&(N=q,K=Ep(),K!==r&&(Dt=N,K=lp(K)),N=K,N===r&&(N=q,K=Dc(),K!==r&&(Dt=N,K=cp(K)),N=K,N===r&&(N=q,K=Cw(),K!==r&&(Dt=N,K=Os(K)),N=K,N===r&&(N=q,K=pa(),K!==r&&(Dt=N,K=cc(K)),N=K)))),N}function yp(){var N,K,re;for(N=q,K=[],Dn.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(oo));re!==r;)K.push(re),Dn.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(oo));return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function yg(){var N,K,re;if(N=q,K=[],re=fa(),re===r&&(ml.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(yl))),re!==r)for(;re!==r;)K.push(re),re=fa(),re===r&&(ml.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(yl)));else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function fa(){var N,K,re;return N=q,t.substr(q,2)===ao?(K=ao,q+=2):(K=r,ct===0&&Ct(Vn)),K!==r&&(Dt=N,K=On()),N=K,N===r&&(N=q,t.charCodeAt(q)===92?(K=Ni,q++):(K=r,ct===0&&Ct(Mn)),K!==r?(_i.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(tr)),re!==r?(Dt=N,K=Oe(re),N=K):(q=N,N=r)):(q=N,N=r)),N}function ln(){var N,K,re;for(N=q,K=[],re=Ao(),re===r&&(Dn.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(oo)));re!==r;)K.push(re),re=Ao(),re===r&&(Dn.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(oo)));return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function Ao(){var N,K,re;return N=q,t.substr(q,2)===ii?(K=ii,q+=2):(K=r,ct===0&&Ct(Ma)),K!==r&&(Dt=N,K=hr()),N=K,N===r&&(N=q,t.substr(q,2)===uc?(K=uc,q+=2):(K=r,ct===0&&Ct(uu)),K!==r&&(Dt=N,K=Ac()),N=K,N===r&&(N=q,t.charCodeAt(q)===92?(K=Ni,q++):(K=r,ct===0&&Ct(Mn)),K!==r?(El.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(DA)),re!==r?(Dt=N,K=Au(),N=K):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.substr(q,2)===Ce?(K=Ce,q+=2):(K=r,ct===0&&Ct(Rt)),K!==r&&(Dt=N,K=fc()),N=K,N===r&&(N=q,t.substr(q,2)===Hi?(K=Hi,q+=2):(K=r,ct===0&&Ct(fu)),K!==r&&(Dt=N,K=Yt()),N=K,N===r&&(N=q,t.substr(q,2)===Cl?(K=Cl,q+=2):(K=r,ct===0&&Ct(SA)),K!==r&&(Dt=N,K=up()),N=K,N===r&&(N=q,t.substr(q,2)===pc?(K=pc,q+=2):(K=r,ct===0&&Ct(PA)),K!==r&&(Dt=N,K=Qn()),N=K,N===r&&(N=q,t.substr(q,2)===hi?(K=hi,q+=2):(K=r,ct===0&&Ct(hc)),K!==r&&(Dt=N,K=bA()),N=K,N===r&&(N=q,t.charCodeAt(q)===92?(K=Ni,q++):(K=r,ct===0&&Ct(Mn)),K!==r?(sa.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(Li)),re!==r?(Dt=N,K=Oe(re),N=K):(q=N,N=r)):(q=N,N=r),N===r&&(N=OA()))))))))),N}function OA(){var N,K,re,pe,ze,mt,fr,Cr,yn,oi,Oi,Ig;return N=q,t.charCodeAt(q)===92?(K=Ni,q++):(K=r,ct===0&&Ct(Mn)),K!==r?(re=Ga(),re!==r?(Dt=N,K=_o(re),N=K):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.substr(q,2)===Ze?(K=Ze,q+=2):(K=r,ct===0&&Ct(lo)),K!==r?(re=q,pe=q,ze=Ga(),ze!==r?(mt=si(),mt!==r?(ze=[ze,mt],pe=ze):(q=pe,pe=r)):(q=pe,pe=r),pe===r&&(pe=Ga()),pe!==r?re=t.substring(re,q):re=pe,re!==r?(Dt=N,K=_o(re),N=K):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.substr(q,2)===gc?(K=gc,q+=2):(K=r,ct===0&&Ct(pu)),K!==r?(re=q,pe=q,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(ze=[ze,mt,fr,Cr],pe=ze):(q=pe,pe=r)):(q=pe,pe=r)):(q=pe,pe=r)):(q=pe,pe=r),pe!==r?re=t.substring(re,q):re=pe,re!==r?(Dt=N,K=_o(re),N=K):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.substr(q,2)===ji?(K=ji,q+=2):(K=r,ct===0&&Ct(hu)),K!==r?(re=q,pe=q,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(yn=si(),yn!==r?(oi=si(),oi!==r?(Oi=si(),Oi!==r?(Ig=si(),Ig!==r?(ze=[ze,mt,fr,Cr,yn,oi,Oi,Ig],pe=ze):(q=pe,pe=r)):(q=pe,pe=r)):(q=pe,pe=r)):(q=pe,pe=r)):(q=pe,pe=r)):(q=pe,pe=r)):(q=pe,pe=r)):(q=pe,pe=r),pe!==r?re=t.substring(re,q):re=pe,re!==r?(Dt=N,K=xA(re),N=K):(q=N,N=r)):(q=N,N=r)))),N}function Ga(){var N;return Ua.test(t.charAt(q))?(N=t.charAt(q),q++):(N=r,ct===0&&Ct(dc)),N}function si(){var N;return hs.test(t.charAt(q))?(N=t.charAt(q),q++):(N=r,ct===0&&Ct(_t)),N}function pa(){var N,K,re,pe,ze;if(N=q,K=[],re=q,t.charCodeAt(q)===92?(pe=Ni,q++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>q?(ze=t.charAt(q),q++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(q=re,re=r)):(q=re,re=r),re===r&&(re=q,t.substr(q,2)===Ci?(pe=Ci,q+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=q,pe=q,ct++,ze=Rm(),ct--,ze===r?pe=void 0:(q=pe,pe=r),pe!==r?(t.length>q?(ze=t.charAt(q),q++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(q=re,re=r)):(q=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=q,t.charCodeAt(q)===92?(pe=Ni,q++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>q?(ze=t.charAt(q),q++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(q=re,re=r)):(q=re,re=r),re===r&&(re=q,t.substr(q,2)===Ci?(pe=Ci,q+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=q,pe=q,ct++,ze=Rm(),ct--,ze===r?pe=void 0:(q=pe,pe=r),pe!==r?(t.length>q?(ze=t.charAt(q),q++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(q=re,re=r)):(q=re,re=r)));else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function vc(){var N,K,re,pe,ze,mt;if(N=q,t.charCodeAt(q)===45?(K=Us,q++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(q)===43?(K=la,q++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],Je.test(t.charAt(q))?(pe=t.charAt(q),q++):(pe=r,ct===0&&Ct(je)),pe!==r)for(;pe!==r;)re.push(pe),Je.test(t.charAt(q))?(pe=t.charAt(q),q++):(pe=r,ct===0&&Ct(je));else re=r;if(re!==r)if(t.charCodeAt(q)===46?(pe=wi,q++):(pe=r,ct===0&&Ct(gs)),pe!==r){if(ze=[],Je.test(t.charAt(q))?(mt=t.charAt(q),q++):(mt=r,ct===0&&Ct(je)),mt!==r)for(;mt!==r;)ze.push(mt),Je.test(t.charAt(q))?(mt=t.charAt(q),q++):(mt=r,ct===0&&Ct(je));else ze=r;ze!==r?(Dt=N,K=ds(K,re,ze),N=K):(q=N,N=r)}else q=N,N=r;else q=N,N=r}else q=N,N=r;if(N===r){if(N=q,t.charCodeAt(q)===45?(K=Us,q++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(q)===43?(K=la,q++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],Je.test(t.charAt(q))?(pe=t.charAt(q),q++):(pe=r,ct===0&&Ct(je)),pe!==r)for(;pe!==r;)re.push(pe),Je.test(t.charAt(q))?(pe=t.charAt(q),q++):(pe=r,ct===0&&Ct(je));else re=r;re!==r?(Dt=N,K=ms(K,re),N=K):(q=N,N=r)}else q=N,N=r;if(N===r&&(N=q,K=Dc(),K!==r&&(Dt=N,K=_s(K)),N=K,N===r&&(N=q,K=qa(),K!==r&&(Dt=N,K=Un(K)),N=K,N===r)))if(N=q,t.charCodeAt(q)===40?(K=Se,q++):(K=r,ct===0&&Ct(le)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.charCodeAt(q)===41?(mt=ne,q++):(mt=r,ct===0&&Ct(ee)),mt!==r?(Dt=N,K=Sn(pe),N=K):(q=N,N=r)):(q=N,N=r)}else q=N,N=r;else q=N,N=r}else q=N,N=r}return N}function Bl(){var N,K,re,pe,ze,mt,fr,Cr;if(N=q,K=vc(),K!==r){for(re=[],pe=q,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(q)===42?(mt=ys,q++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(q)===47?(mt=tt,q++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,ze=nr(K,mt,Cr),pe=ze):(q=pe,pe=r)):(q=pe,pe=r)}else q=pe,pe=r;else q=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=q,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(q)===42?(mt=ys,q++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(q)===47?(mt=tt,q++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,ze=nr(K,mt,Cr),pe=ze):(q=pe,pe=r)):(q=pe,pe=r)}else q=pe,pe=r;else q=pe,pe=r}re!==r?(Dt=N,K=$(K,re),N=K):(q=N,N=r)}else q=N,N=r;return N}function ts(){var N,K,re,pe,ze,mt,fr,Cr;if(N=q,K=Bl(),K!==r){for(re=[],pe=q,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(q)===43?(mt=la,q++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(q)===45?(mt=Us,q++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,ze=ye(K,mt,Cr),pe=ze):(q=pe,pe=r)):(q=pe,pe=r)}else q=pe,pe=r;else q=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=q,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(q)===43?(mt=la,q++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(q)===45?(mt=Us,q++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,ze=ye(K,mt,Cr),pe=ze):(q=pe,pe=r)):(q=pe,pe=r)}else q=pe,pe=r;else q=pe,pe=r}re!==r?(Dt=N,K=$(K,re),N=K):(q=N,N=r)}else q=N,N=r;return N}function qr(){var N,K,re,pe,ze,mt;if(N=q,t.substr(q,3)===Le?(K=Le,q+=3):(K=r,ct===0&&Ct(pt)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.substr(q,2)===ht?(mt=ht,q+=2):(mt=r,ct===0&&Ct(Tt)),mt!==r?(Dt=N,K=er(pe),N=K):(q=N,N=r)):(q=N,N=r)}else q=N,N=r;else q=N,N=r}else q=N,N=r;return N}function Ep(){var N,K,re,pe;return N=q,t.substr(q,2)===$r?(K=$r,q+=2):(K=r,ct===0&&Ct(Gi)),K!==r?(re=Cu(),re!==r?(t.charCodeAt(q)===41?(pe=ne,q++):(pe=r,ct===0&&Ct(ee)),pe!==r?(Dt=N,K=es(re),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N}function Dc(){var N,K,re,pe,ze,mt;return N=q,t.substr(q,2)===bi?(K=bi,q+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=qa(),re!==r?(t.substr(q,2)===kA?(pe=kA,q+=2):(pe=r,ct===0&&Ct(QA)),pe!==r?(ze=NA(),ze!==r?(t.charCodeAt(q)===125?(mt=H,q++):(mt=r,ct===0&&Ct(at)),mt!==r?(Dt=N,K=Ap(re,ze),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.substr(q,2)===bi?(K=bi,q+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=qa(),re!==r?(t.substr(q,3)===ig?(pe=ig,q+=3):(pe=r,ct===0&&Ct(gu)),pe!==r?(Dt=N,K=sg(re),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.substr(q,2)===bi?(K=bi,q+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=qa(),re!==r?(t.substr(q,2)===du?(pe=du,q+=2):(pe=r,ct===0&&Ct(uo)),pe!==r?(ze=NA(),ze!==r?(t.charCodeAt(q)===125?(mt=H,q++):(mt=r,ct===0&&Ct(at)),mt!==r?(Dt=N,K=FA(re,ze),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.substr(q,2)===bi?(K=bi,q+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=qa(),re!==r?(t.substr(q,3)===mc?(pe=mc,q+=3):(pe=r,ct===0&&Ct(ca)),pe!==r?(Dt=N,K=og(re),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.substr(q,2)===bi?(K=bi,q+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=qa(),re!==r?(t.charCodeAt(q)===125?(pe=H,q++):(pe=r,ct===0&&Ct(at)),pe!==r?(Dt=N,K=yc(re),N=K):(q=N,N=r)):(q=N,N=r)):(q=N,N=r),N===r&&(N=q,t.charCodeAt(q)===36?(K=Pm,q++):(K=r,ct===0&&Ct(ag)),K!==r?(re=qa(),re!==r?(Dt=N,K=yc(re),N=K):(q=N,N=r)):(q=N,N=r)))))),N}function Cw(){var N,K,re;return N=q,K=Eg(),K!==r?(Dt=q,re=$n(K),re?re=void 0:re=r,re!==r?(Dt=N,K=fp(K),N=K):(q=N,N=r)):(q=N,N=r),N}function Eg(){var N,K,re,pe,ze;if(N=q,K=[],re=q,pe=q,ct++,ze=wg(),ct--,ze===r?pe=void 0:(q=pe,pe=r),pe!==r?(t.length>q?(ze=t.charAt(q),q++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(q=re,re=r)):(q=re,re=r),re!==r)for(;re!==r;)K.push(re),re=q,pe=q,ct++,ze=wg(),ct--,ze===r?pe=void 0:(q=pe,pe=r),pe!==r?(t.length>q?(ze=t.charAt(q),q++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(q=re,re=r)):(q=re,re=r);else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function Cg(){var N,K,re;if(N=q,K=[],lg.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(RA)),re!==r)for(;re!==r;)K.push(re),lg.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(RA));else K=r;return K!==r&&(Dt=N,K=Hs()),N=K,N}function qa(){var N,K,re;if(N=q,K=[],mu.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(Ha)),re!==r)for(;re!==r;)K.push(re),mu.test(t.charAt(q))?(re=t.charAt(q),q++):(re=r,ct===0&&Ct(Ha));else K=r;return K!==r&&(Dt=N,K=Hs()),N=K,N}function Rm(){var N;return qi.test(t.charAt(q))?(N=t.charAt(q),q++):(N=r,ct===0&&Ct(ua)),N}function wg(){var N;return yu.test(t.charAt(q))?(N=t.charAt(q),q++):(N=r,ct===0&&Ct(Es)),N}function Qt(){var N,K;if(N=[],Ec.test(t.charAt(q))?(K=t.charAt(q),q++):(K=r,ct===0&&Ct(Cc)),K!==r)for(;K!==r;)N.push(K),Ec.test(t.charAt(q))?(K=t.charAt(q),q++):(K=r,ct===0&&Ct(Cc));else N=r;return N}if(Eu=a(),Eu!==r&&q===t.length)return Eu;throw Eu!==r&&q!1}){try{return(0,$Y.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 cy(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${LD(r)}${o===";"?a!==t.length-1||e?";":"":" &"}`).join(" ")}function LD(t){return`${uy(t.chain)}${t.then?` ${oT(t.then)}`:""}`}function oT(t){return`${t.type} ${LD(t.line)}`}function uy(t){return`${lT(t)}${t.then?` ${aT(t.then)}`:""}`}function aT(t){return`${t.type} ${uy(t.chain)}`}function lT(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>TD(e)).join(" ")} `:""}${t.args.map(e=>cT(e)).join(" ")}`;case"subshell":return`(${cy(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Jw(e)).join(" ")}`:""}`;case"group":return`{ ${cy(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Jw(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>TD(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function TD(t){return`${t.name}=${t.args[0]?Yg(t.args[0]):""}`}function cT(t){switch(t.type){case"redirection":return Jw(t);case"argument":return Yg(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Jw(t){return`${t.subtype} ${t.args.map(e=>Yg(e)).join(" ")}`}function Yg(t){return t.segments.map(e=>uT(e)).join("")}function uT(t){let e=(o,a)=>a?`"${o}"`:o,r=o=>o===""?"''":o.match(/[()}<>$|&;"'\n\t ]/)?o.match(/['\t\p{C}]/u)?o.match(/'/)?`"${o.replace(/["$\t\p{C}]/u,f8e)}"`:`$'${o.replace(/[\t\p{C}]/u,tW)}'`:`'${o}'`:o;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${cy(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(o=>Yg(o)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(o=>Yg(o)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${OD(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function OD(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,o=a=>r(OD(a),!["number","variable"].includes(a.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var $Y,eW,A8e,tW,f8e,rW=Et(()=>{$Y=$e(ZY());eW=new Map([["\f","\\f"],[` +`,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),A8e=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(eW,([t,e])=>[t,`"$'${e}'"`])]),tW=t=>eW.get(t)??`\\x${t.charCodeAt(0).toString(16).padStart(2,"0")}`,f8e=t=>A8e.get(t)??`"$'${tW(t)}'"`});var iW=_((Tbt,nW)=>{"use strict";function p8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Wg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Wg)}p8e(Wg,Error);Wg.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",I;for(I=0;I0){for(I=1,v=1;Ife&&(fe=J,ce=[]),ce.push(je))}function at(je,b){return new Wg(je,null,null,b)}function Re(je,b,w){return new Wg(Wg.buildMessage(je,b),je,b,w)}function ke(){var je,b,w,P;return je=J,b=xe(),b!==r?(t.charCodeAt(J)===47?(w=n,J++):(w=r,me===0&&H(u)),w!==r?(P=xe(),P!==r?(te=je,b=A(b,P),je=b):(J=je,je=r)):(J=je,je=r)):(J=je,je=r),je===r&&(je=J,b=xe(),b!==r&&(te=je,b=p(b)),je=b),je}function xe(){var je,b,w,P;return je=J,b=He(),b!==r?(t.charCodeAt(J)===64?(w=h,J++):(w=r,me===0&&H(E)),w!==r?(P=Je(),P!==r?(te=je,b=I(b,P),je=b):(J=je,je=r)):(J=je,je=r)):(J=je,je=r),je===r&&(je=J,b=He(),b!==r&&(te=je,b=v(b)),je=b),je}function He(){var je,b,w,P,y;return je=J,t.charCodeAt(J)===64?(b=h,J++):(b=r,me===0&&H(E)),b!==r?(w=Te(),w!==r?(t.charCodeAt(J)===47?(P=n,J++):(P=r,me===0&&H(u)),P!==r?(y=Te(),y!==r?(te=je,b=x(),je=b):(J=je,je=r)):(J=je,je=r)):(J=je,je=r)):(J=je,je=r),je===r&&(je=J,b=Te(),b!==r&&(te=je,b=x()),je=b),je}function Te(){var je,b,w;if(je=J,b=[],C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(R)),w!==r)for(;w!==r;)b.push(w),C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(R));else b=r;return b!==r&&(te=je,b=x()),je=b,je}function Je(){var je,b,w;if(je=J,b=[],L.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(U)),w!==r)for(;w!==r;)b.push(w),L.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(U));else b=r;return b!==r&&(te=je,b=x()),je=b,je}if(he=a(),he!==r&&J===t.length)return he;throw he!==r&&J{sW=$e(iW())});var Vg=_((Lbt,Kg)=>{"use strict";function aW(t){return typeof t>"u"||t===null}function g8e(t){return typeof t=="object"&&t!==null}function d8e(t){return Array.isArray(t)?t:aW(t)?[]:[t]}function m8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r{"use strict";function zw(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||""}zw.prototype=Object.create(Error.prototype);zw.prototype.constructor=zw;zw.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};lW.exports=zw});var AW=_((Mbt,uW)=>{"use strict";var cW=Vg();function AT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.line=o,this.column=a}AT.prototype.getSnippet=function(e,r){var o,a,n,u,A;if(!this.buffer)return null;for(e=e||4,r=r||75,o="",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){o=" ... ",a+=5;break}for(n="",u=this.position;ur/2-1){n=" ... ",u-=5;break}return A=this.buffer.slice(a,u),cW.repeat(" ",e)+o+A+n+` +`+cW.repeat(" ",e+this.position-a+o.length)+"^"};AT.prototype.toString=function(e){var r,o="";return this.name&&(o+='in "'+this.name+'" '),o+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(o+=`: +`+r)),o};uW.exports=AT});var os=_((Ubt,pW)=>{"use strict";var fW=Ay(),C8e=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],w8e=["scalar","sequence","mapping"];function I8e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(o){e[String(o)]=r})}),e}function B8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(C8e.indexOf(r)===-1)throw new fW('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=I8e(e.styleAliases||null),w8e.indexOf(this.kind)===-1)throw new fW('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}pW.exports=B8e});var Jg=_((_bt,gW)=>{"use strict";var hW=Vg(),_D=Ay(),v8e=os();function fT(t,e,r){var o=[];return t.include.forEach(function(a){r=fT(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,u){n.tag===a.tag&&n.kind===a.kind&&o.push(u)}),r.push(a)}),r.filter(function(a,n){return o.indexOf(n)===-1})}function D8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function o(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e{"use strict";var S8e=os();dW.exports=new S8e("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var EW=_((jbt,yW)=>{"use strict";var P8e=os();yW.exports=new P8e("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var wW=_((Gbt,CW)=>{"use strict";var b8e=os();CW.exports=new b8e("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var HD=_((qbt,IW)=>{"use strict";var x8e=Jg();IW.exports=new x8e({explicit:[mW(),EW(),wW()]})});var vW=_((Ybt,BW)=>{"use strict";var k8e=os();function Q8e(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function F8e(){return null}function R8e(t){return t===null}BW.exports=new k8e("tag:yaml.org,2002:null",{kind:"scalar",resolve:Q8e,construct:F8e,predicate:R8e,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var SW=_((Wbt,DW)=>{"use strict";var T8e=os();function N8e(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 L8e(t){return t==="true"||t==="True"||t==="TRUE"}function O8e(t){return Object.prototype.toString.call(t)==="[object Boolean]"}DW.exports=new T8e("tag:yaml.org,2002:bool",{kind:"scalar",resolve:N8e,construct:L8e,predicate:O8e,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 bW=_((Kbt,PW)=>{"use strict";var M8e=Vg(),U8e=os();function _8e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function H8e(t){return 48<=t&&t<=55}function j8e(t){return 48<=t&&t<=57}function G8e(t){if(t===null)return!1;var e=t.length,r=0,o=!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 QW=_((Vbt,kW)=>{"use strict";var xW=Vg(),W8e=os(),K8e=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 V8e(t){return!(t===null||!K8e.test(t)||t[t.length-1]==="_")}function J8e(t){var e,r,o,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,o=1,a.forEach(function(n){e+=n*o,o*=60}),r*e):r*parseFloat(e,10)}var z8e=/^[-+]?[0-9]+e/;function X8e(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(xW.isNegativeZero(t))return"-0.0";return r=t.toString(10),z8e.test(r)?r.replace("e",".e"):r}function Z8e(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||xW.isNegativeZero(t))}kW.exports=new W8e("tag:yaml.org,2002:float",{kind:"scalar",resolve:V8e,construct:J8e,predicate:Z8e,represent:X8e,defaultStyle:"lowercase"})});var pT=_((Jbt,FW)=>{"use strict";var $8e=Jg();FW.exports=new $8e({include:[HD()],implicit:[vW(),SW(),bW(),QW()]})});var hT=_((zbt,RW)=>{"use strict";var eHe=Jg();RW.exports=new eHe({include:[pT()]})});var OW=_((Xbt,LW)=>{"use strict";var tHe=os(),TW=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),NW=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 rHe(t){return t===null?!1:TW.exec(t)!==null||NW.exec(t)!==null}function nHe(t){var e,r,o,a,n,u,A,p=0,h=null,E,I,v;if(e=TW.exec(t),e===null&&(e=NW.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],o=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,o,a));if(n=+e[4],u=+e[5],A=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(E=+e[10],I=+(e[11]||0),h=(E*60+I)*6e4,e[9]==="-"&&(h=-h)),v=new Date(Date.UTC(r,o,a,n,u,A,p)),h&&v.setTime(v.getTime()-h),v}function iHe(t){return t.toISOString()}LW.exports=new tHe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:rHe,construct:nHe,instanceOf:Date,represent:iHe})});var UW=_((Zbt,MW)=>{"use strict";var sHe=os();function oHe(t){return t==="<<"||t===null}MW.exports=new sHe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:oHe})});var jW=_(($bt,HW)=>{"use strict";var zg;try{_W=ve,zg=_W("buffer").Buffer}catch{}var _W,aHe=os(),gT=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function lHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=gT;for(r=0;r64)){if(e<0)return!1;o+=6}return o%8===0}function cHe(t){var e,r,o=t.replace(/[\r\n=]/g,""),a=o.length,n=gT,u=0,A=[];for(e=0;e>16&255),A.push(u>>8&255),A.push(u&255)),u=u<<6|n.indexOf(o.charAt(e));return r=a%4*6,r===0?(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)):r===18?(A.push(u>>10&255),A.push(u>>2&255)):r===12&&A.push(u>>4&255),zg?zg.from?zg.from(A):new zg(A):A}function uHe(t){var e="",r=0,o,a,n=t.length,u=gT;for(o=0;o>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]),r=(r<<8)+t[o];return a=n%3,a===0?(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]):a===2?(e+=u[r>>10&63],e+=u[r>>4&63],e+=u[r<<2&63],e+=u[64]):a===1&&(e+=u[r>>2&63],e+=u[r<<4&63],e+=u[64],e+=u[64]),e}function AHe(t){return zg&&zg.isBuffer(t)}HW.exports=new aHe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:lHe,construct:cHe,predicate:AHe,represent:uHe})});var qW=_((txt,GW)=>{"use strict";var fHe=os(),pHe=Object.prototype.hasOwnProperty,hHe=Object.prototype.toString;function gHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A.length;r{"use strict";var mHe=os(),yHe=Object.prototype.toString;function EHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e{"use strict";var wHe=os(),IHe=Object.prototype.hasOwnProperty;function BHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(IHe.call(r,e)&&r[e]!==null)return!1;return!0}function vHe(t){return t!==null?t:{}}KW.exports=new wHe("tag:yaml.org,2002:set",{kind:"mapping",resolve:BHe,construct:vHe})});var py=_((ixt,JW)=>{"use strict";var DHe=Jg();JW.exports=new DHe({include:[hT()],implicit:[OW(),UW()],explicit:[jW(),qW(),WW(),VW()]})});var XW=_((sxt,zW)=>{"use strict";var SHe=os();function PHe(){return!0}function bHe(){}function xHe(){return""}function kHe(t){return typeof t>"u"}zW.exports=new SHe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:PHe,construct:bHe,predicate:kHe,represent:xHe})});var $W=_((oxt,ZW)=>{"use strict";var QHe=os();function FHe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),o="";return!(e[0]==="/"&&(r&&(o=r[1]),o.length>3||e[e.length-o.length-1]!=="/"))}function RHe(t){var e=t,r=/\/([gim]*)$/.exec(t),o="";return e[0]==="/"&&(r&&(o=r[1]),e=e.slice(1,e.length-o.length-1)),new RegExp(e,o)}function THe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function NHe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}ZW.exports=new QHe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:FHe,construct:RHe,predicate:NHe,represent:THe})});var rK=_((axt,tK)=>{"use strict";var jD;try{eK=ve,jD=eK("esprima")}catch{typeof window<"u"&&(jD=window.esprima)}var eK,LHe=os();function OHe(t){if(t===null)return!1;try{var e="("+t+")",r=jD.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 MHe(t){var e="("+t+")",r=jD.parse(e,{range:!0}),o=[],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){o.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(o,e.slice(a[0]+1,a[1]-1)):new Function(o,"return "+e.slice(a[0],a[1]))}function UHe(t){return t.toString()}function _He(t){return Object.prototype.toString.call(t)==="[object Function]"}tK.exports=new LHe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:OHe,construct:MHe,predicate:_He,represent:UHe})});var Xw=_((cxt,iK)=>{"use strict";var nK=Jg();iK.exports=nK.DEFAULT=new nK({include:[py()],explicit:[XW(),$W(),rK()]})});var BK=_((uxt,Zw)=>{"use strict";var yf=Vg(),AK=Ay(),HHe=AW(),fK=py(),jHe=Xw(),Yp=Object.prototype.hasOwnProperty,GD=1,pK=2,hK=3,qD=4,dT=1,GHe=2,sK=3,qHe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,YHe=/[\x85\u2028\u2029]/,WHe=/[,\[\]\{\}]/,gK=/^(?:!|!!|![a-z\-]+!)$/i,dK=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function oK(t){return Object.prototype.toString.call(t)}function Hu(t){return t===10||t===13}function Zg(t){return t===9||t===32}function Ia(t){return t===9||t===32||t===10||t===13}function hy(t){return t===44||t===91||t===93||t===123||t===125}function KHe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function VHe(t){return t===120?2:t===117?4:t===85?8:0}function JHe(t){return 48<=t&&t<=57?t-48:-1}function aK(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 zHe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var mK=new Array(256),yK=new Array(256);for(Xg=0;Xg<256;Xg++)mK[Xg]=aK(Xg)?1:0,yK[Xg]=aK(Xg);var Xg;function XHe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||jHe,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 EK(t,e){return new AK(e,new HHe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Pr(t,e){throw EK(t,e)}function YD(t,e){t.onWarning&&t.onWarning.call(null,EK(t,e))}var lK={YAML:function(e,r,o){var a,n,u;e.version!==null&&Pr(e,"duplication of %YAML directive"),o.length!==1&&Pr(e,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(o[0]),a===null&&Pr(e,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),u=parseInt(a[2],10),n!==1&&Pr(e,"unacceptable YAML version of the document"),e.version=o[0],e.checkLineBreaks=u<2,u!==1&&u!==2&&YD(e,"unsupported YAML version of the document")},TAG:function(e,r,o){var a,n;o.length!==2&&Pr(e,"TAG directive accepts exactly two arguments"),a=o[0],n=o[1],gK.test(a)||Pr(e,"ill-formed tag handle (first argument) of the TAG directive"),Yp.call(e.tagMap,a)&&Pr(e,'there is a previously declared suffix for "'+a+'" tag handle'),dK.test(n)||Pr(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[a]=n}};function qp(t,e,r,o){var a,n,u,A;if(e1&&(t.result+=yf.repeat(` +`,e-1))}function ZHe(t,e,r){var o,a,n,u,A,p,h,E,I=t.kind,v=t.result,x;if(x=t.input.charCodeAt(t.position),Ia(x)||hy(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&hy(a)))return!1;for(t.kind="scalar",t.result="",n=u=t.position,A=!1;x!==0;){if(x===58){if(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&hy(a))break}else if(x===35){if(o=t.input.charCodeAt(t.position-1),Ia(o))break}else{if(t.position===t.lineStart&&WD(t)||r&&hy(x))break;if(Hu(x))if(p=t.line,h=t.lineStart,E=t.lineIndent,Wi(t,!1,-1),t.lineIndent>=e){A=!0,x=t.input.charCodeAt(t.position);continue}else{t.position=u,t.line=p,t.lineStart=h,t.lineIndent=E;break}}A&&(qp(t,n,u,!1),yT(t,t.line-p),n=u=t.position,A=!1),Zg(x)||(u=t.position+1),x=t.input.charCodeAt(++t.position)}return qp(t,n,u,!1),t.result?!0:(t.kind=I,t.result=v,!1)}function $He(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,o=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(qp(t,o,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)o=t.position,t.position++,a=t.position;else return!0;else Hu(r)?(qp(t,o,a,!0),yT(t,Wi(t,!1,e)),o=a=t.position):t.position===t.lineStart&&WD(t)?Pr(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);Pr(t,"unexpected end of the stream within a single quoted scalar")}function e6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=o=t.position;(A=t.input.charCodeAt(t.position))!==0;){if(A===34)return qp(t,r,t.position,!0),t.position++,!0;if(A===92){if(qp(t,r,t.position,!0),A=t.input.charCodeAt(++t.position),Hu(A))Wi(t,!1,e);else if(A<256&&mK[A])t.result+=yK[A],t.position++;else if((u=VHe(A))>0){for(a=u,n=0;a>0;a--)A=t.input.charCodeAt(++t.position),(u=KHe(A))>=0?n=(n<<4)+u:Pr(t,"expected hexadecimal character");t.result+=zHe(n),t.position++}else Pr(t,"unknown escape sequence");r=o=t.position}else Hu(A)?(qp(t,r,o,!0),yT(t,Wi(t,!1,e)),r=o=t.position):t.position===t.lineStart&&WD(t)?Pr(t,"unexpected end of the document within a double quoted scalar"):(t.position++,o=t.position)}Pr(t,"unexpected end of the stream within a double quoted scalar")}function t6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,E,I,v={},x,C,R,L;if(L=t.input.charCodeAt(t.position),L===91)p=93,I=!1,n=[];else if(L===123)p=125,I=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),L=t.input.charCodeAt(++t.position);L!==0;){if(Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===p)return t.position++,t.tag=a,t.anchor=u,t.kind=I?"mapping":"sequence",t.result=n,!0;r||Pr(t,"missed comma between flow collection entries"),C=x=R=null,h=E=!1,L===63&&(A=t.input.charCodeAt(t.position+1),Ia(A)&&(h=E=!0,t.position++,Wi(t,!0,e))),o=t.line,dy(t,e,GD,!1,!0),C=t.tag,x=t.result,Wi(t,!0,e),L=t.input.charCodeAt(t.position),(E||t.line===o)&&L===58&&(h=!0,L=t.input.charCodeAt(++t.position),Wi(t,!0,e),dy(t,e,GD,!1,!0),R=t.result),I?gy(t,n,v,C,x,R):h?n.push(gy(t,null,v,C,x,R)):n.push(x),Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===44?(r=!0,L=t.input.charCodeAt(++t.position)):r=!1}Pr(t,"unexpected end of the stream within a flow collection")}function r6e(t,e){var r,o,a=dT,n=!1,u=!1,A=e,p=0,h=!1,E,I;if(I=t.input.charCodeAt(t.position),I===124)o=!1;else if(I===62)o=!0;else return!1;for(t.kind="scalar",t.result="";I!==0;)if(I=t.input.charCodeAt(++t.position),I===43||I===45)dT===a?a=I===43?sK:GHe:Pr(t,"repeat of a chomping mode identifier");else if((E=JHe(I))>=0)E===0?Pr(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?Pr(t,"repeat of an indentation width identifier"):(A=e+E-1,u=!0);else break;if(Zg(I)){do I=t.input.charCodeAt(++t.position);while(Zg(I));if(I===35)do I=t.input.charCodeAt(++t.position);while(!Hu(I)&&I!==0)}for(;I!==0;){for(mT(t),t.lineIndent=0,I=t.input.charCodeAt(t.position);(!u||t.lineIndentA&&(A=t.lineIndent),Hu(I)){p++;continue}if(t.lineIndente)&&p!==0)Pr(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(dy(t,e,qD,!0,a)&&(C?v=t.result:x=t.result),C||(gy(t,h,E,I,v,x,n,u),I=v=x=null),Wi(t,!0,-1),L=t.input.charCodeAt(t.position)),t.lineIndent>e&&L!==0)Pr(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+'"'),I=0,v=t.implicitTypes.length;I tag; it should be "'+x.kind+'", not "'+t.kind+'"'),x.resolve(t.result)?(t.result=x.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Pr(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):Pr(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||E}function a6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(u=t.input.charCodeAt(t.position))!==0&&(Wi(t,!0,-1),u=t.input.charCodeAt(t.position),!(t.lineIndent>0||u!==37));){for(n=!0,u=t.input.charCodeAt(++t.position),r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);for(o=t.input.slice(r,t.position),a=[],o.length<1&&Pr(t,"directive name must not be less than one character in length");u!==0;){for(;Zg(u);)u=t.input.charCodeAt(++t.position);if(u===35){do u=t.input.charCodeAt(++t.position);while(u!==0&&!Hu(u));break}if(Hu(u))break;for(r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}u!==0&&mT(t),Yp.call(lK,o)?lK[o](t,o,a):YD(t,'unknown document directive "'+o+'"')}if(Wi(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,Wi(t,!0,-1)):n&&Pr(t,"directives end mark is expected"),dy(t,t.lineIndent-1,qD,!1,!0),Wi(t,!0,-1),t.checkLineBreaks&&YHe.test(t.input.slice(e,t.position))&&YD(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&WD(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Wi(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var o=CK(t,r);if(typeof e!="function")return o;for(var a=0,n=o.length;a"u"&&(r=e,e=null),wK(t,e,yf.extend({schema:fK},r))}function c6e(t,e){return IK(t,yf.extend({schema:fK},e))}Zw.exports.loadAll=wK;Zw.exports.load=IK;Zw.exports.safeLoadAll=l6e;Zw.exports.safeLoad=c6e});var WK=_((Axt,IT)=>{"use strict";var eI=Vg(),tI=Ay(),u6e=Xw(),A6e=py(),QK=Object.prototype.toString,FK=Object.prototype.hasOwnProperty,f6e=9,$w=10,p6e=13,h6e=32,g6e=33,d6e=34,RK=35,m6e=37,y6e=38,E6e=39,C6e=42,TK=44,w6e=45,NK=58,I6e=61,B6e=62,v6e=63,D6e=64,LK=91,OK=93,S6e=96,MK=123,P6e=124,UK=125,vo={};vo[0]="\\0";vo[7]="\\a";vo[8]="\\b";vo[9]="\\t";vo[10]="\\n";vo[11]="\\v";vo[12]="\\f";vo[13]="\\r";vo[27]="\\e";vo[34]='\\"';vo[92]="\\\\";vo[133]="\\N";vo[160]="\\_";vo[8232]="\\L";vo[8233]="\\P";var b6e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function x6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Object.keys(e),a=0,n=o.length;a0?t.charCodeAt(n-1):null,v=v&&SK(u,A)}else{for(n=0;no&&t[I+1]!==" ",I=n);else if(!my(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&SK(u,A)}h=h||E&&n-I-1>o&&t[I+1]!==" "}return!p&&!h?v&&!a(t)?HK:jK:r>9&&_K(t)?KD:h?qK:GK}function N6e(t,e,r,o){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&b6e.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),u=o||t.flowLevel>-1&&r>=t.flowLevel;function A(p){return Q6e(t,p)}switch(T6e(e,u,t.indent,n,A)){case HK:return e;case jK:return"'"+e.replace(/'/g,"''")+"'";case GK:return"|"+PK(e,t.indent)+bK(DK(e,a));case qK:return">"+PK(e,t.indent)+bK(DK(L6e(e,n),a));case KD:return'"'+O6e(e,n)+'"';default:throw new tI("impossible error: invalid scalar style")}}()}function PK(t,e){var r=_K(t)?String(e):"",o=t[t.length-1]===` +`,a=o&&(t[t.length-2]===` +`||t===` +`),n=a?"+":o?"":"-";return r+n+` +`}function bK(t){return t[t.length-1]===` +`?t.slice(0,-1):t}function L6e(t,e){for(var r=/(\n+)([^\n]*)/g,o=function(){var h=t.indexOf(` +`);return h=h!==-1?h:t.length,r.lastIndex=h,xK(t.slice(0,h),e)}(),a=t[0]===` +`||t[0]===" ",n,u;u=r.exec(t);){var A=u[1],p=u[2];n=p[0]===" ",o+=A+(!a&&!n&&p!==""?` +`:"")+xK(p,e),a=n}return o}function xK(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,o,a=0,n,u=0,A=0,p="";o=r.exec(t);)A=o.index,A-a>e&&(n=u>a?u:A,p+=` +`+t.slice(a,n),a=n+1),u=A;return p+=` +`,t.length-a>e&&u>a?p+=t.slice(a,u)+` +`+t.slice(u+1):p+=t.slice(a),p.slice(1)}function O6e(t){for(var e="",r,o,a,n=0;n=55296&&r<=56319&&(o=t.charCodeAt(n+1),o>=56320&&o<=57343)){e+=vK((r-55296)*1024+o-56320+65536),n++;continue}a=vo[r],e+=!a&&my(r)?t[n]:a||vK(r)}return e}function M6e(t,e,r){var o="",a=t.tag,n,u;for(n=0,u=r.length;n1024&&(E+="? "),E+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),$g(t,e,h,!1,!1)&&(E+=t.dump,o+=E));t.tag=a,t.dump="{"+o+"}"}function H6e(t,e,r,o){var a="",n=t.tag,u=Object.keys(r),A,p,h,E,I,v;if(t.sortKeys===!0)u.sort();else if(typeof t.sortKeys=="function")u.sort(t.sortKeys);else if(t.sortKeys)throw new tI("sortKeys must be a boolean or a function");for(A=0,p=u.length;A1024,I&&(t.dump&&$w===t.dump.charCodeAt(0)?v+="?":v+="? "),v+=t.dump,I&&(v+=ET(t,e)),$g(t,e+1,E,!0,I)&&(t.dump&&$w===t.dump.charCodeAt(0)?v+=":":v+=": ",v+=t.dump,a+=v));t.tag=n,t.dump=a||"{}"}function kK(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,u=a.length;n tag resolver accepts not "'+p+'" style');t.dump=o}return!0}return!1}function $g(t,e,r,o,a,n){t.tag=null,t.dump=r,kK(t,r,!1)||kK(t,r,!0);var u=QK.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>e);var A=u==="[object Object]"||u==="[object Array]",p,h;if(A&&(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(A&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),u==="[object Object]")o&&Object.keys(t.dump).length!==0?(H6e(t,e,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(_6e(t,e,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump));else if(u==="[object Array]"){var E=t.noArrayIndent&&e>0?e-1:e;o&&t.dump.length!==0?(U6e(t,E,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(M6e(t,E,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump))}else if(u==="[object String]")t.tag!=="?"&&N6e(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new tI("unacceptable kind of an object to dump "+u)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function j6e(t,e){var r=[],o=[],a,n;for(CT(t,r,o),a=0,n=o.length;a{"use strict";var VD=BK(),KK=WK();function JD(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}ki.exports.Type=os();ki.exports.Schema=Jg();ki.exports.FAILSAFE_SCHEMA=HD();ki.exports.JSON_SCHEMA=pT();ki.exports.CORE_SCHEMA=hT();ki.exports.DEFAULT_SAFE_SCHEMA=py();ki.exports.DEFAULT_FULL_SCHEMA=Xw();ki.exports.load=VD.load;ki.exports.loadAll=VD.loadAll;ki.exports.safeLoad=VD.safeLoad;ki.exports.safeLoadAll=VD.safeLoadAll;ki.exports.dump=KK.dump;ki.exports.safeDump=KK.safeDump;ki.exports.YAMLException=Ay();ki.exports.MINIMAL_SCHEMA=HD();ki.exports.SAFE_SCHEMA=py();ki.exports.DEFAULT_SCHEMA=Xw();ki.exports.scan=JD("scan");ki.exports.parse=JD("parse");ki.exports.compose=JD("compose");ki.exports.addConstructor=JD("addConstructor")});var zK=_((pxt,JK)=>{"use strict";var q6e=VK();JK.exports=q6e});var ZK=_((hxt,XK)=>{"use strict";function Y6e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ed(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ed)}Y6e(ed,Error);ed.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",I;for(I=0;I0){for(I=1,v=1;I({[pt]:Le})))},fe=function($){return $},ce=function($){return $},me=sa("correct indentation"),he=" ",Be=Qn(" ",!1),we=function($){return $.length===nr*It},g=function($){return $.length===(nr+1)*It},Ee=function(){return nr++,!0},Se=function(){return nr--,!0},le=function(){return SA()},ne=sa("pseudostring"),ee=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,Ie=hi(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),Fe=/^[^\r\n\t ,\][{}:#"']/,At=hi(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),H=function(){return SA().replace(/^ *| *$/g,"")},at="--",Re=Qn("--",!1),ke=/^[a-zA-Z\/0-9]/,xe=hi([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),He=/^[^\r\n\t :,]/,Te=hi(["\r",` +`," "," ",":",","],!0,!1),Je="null",je=Qn("null",!1),b=function(){return null},w="true",P=Qn("true",!1),y=function(){return!0},F="false",z=Qn("false",!1),X=function(){return!1},Z=sa("string"),ie='"',Pe=Qn('"',!1),Ne=function(){return""},ot=function($){return $},dt=function($){return $.join("")},Gt=/^[^"\\\0-\x1F\x7F]/,$t=hi(['"',"\\",["\0",""],"\x7F"],!0,!1),bt='\\"',an=Qn('\\"',!1),Qr=function(){return'"'},mr="\\\\",br=Qn("\\\\",!1),Wr=function(){return"\\"},Kn="\\/",Ns=Qn("\\/",!1),Ti=function(){return"/"},ps="\\b",io=Qn("\\b",!1),Pi=function(){return"\b"},Ls="\\f",so=Qn("\\f",!1),cc=function(){return"\f"},cu="\\n",lp=Qn("\\n",!1),cp=function(){return` +`},Os="\\r",Dn=Qn("\\r",!1),oo=function(){return"\r"},Ms="\\t",ml=Qn("\\t",!1),yl=function(){return" "},ao="\\u",Vn=Qn("\\u",!1),On=function($,ye,Le,pt){return String.fromCharCode(parseInt(`0x${$}${ye}${Le}${pt}`))},Ni=/^[0-9a-fA-F]/,Mn=hi([["0","9"],["a","f"],["A","F"]],!1,!1),_i=sa("blank space"),tr=/^[ \t]/,Oe=hi([" "," "],!1,!1),ii=sa("white space"),Ma=/^[ \t\n\r]/,hr=hi([" "," ",` +`,"\r"],!1,!1),uc=`\r +`,uu=Qn(`\r +`,!1),Ac=` +`,El=Qn(` +`,!1),DA="\r",Au=Qn("\r",!1),Ce=0,Rt=0,fc=[{line:1,column:1}],Hi=0,fu=[],Yt=0,Cl;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function SA(){return t.substring(Rt,Ce)}function up(){return _o(Rt,Ce)}function pc($,ye){throw ye=ye!==void 0?ye:_o(Rt,Ce),gc([sa($)],t.substring(Rt,Ce),ye)}function PA($,ye){throw ye=ye!==void 0?ye:_o(Rt,Ce),lo($,ye)}function Qn($,ye){return{type:"literal",text:$,ignoreCase:ye}}function hi($,ye,Le){return{type:"class",parts:$,inverted:ye,ignoreCase:Le}}function hc(){return{type:"any"}}function bA(){return{type:"end"}}function sa($){return{type:"other",description:$}}function Li($){var ye=fc[$],Le;if(ye)return ye;for(Le=$-1;!fc[Le];)Le--;for(ye=fc[Le],ye={line:ye.line,column:ye.column};Le<$;)t.charCodeAt(Le)===10?(ye.line++,ye.column=1):ye.column++,Le++;return fc[$]=ye,ye}function _o($,ye){var Le=Li($),pt=Li(ye);return{start:{offset:$,line:Le.line,column:Le.column},end:{offset:ye,line:pt.line,column:pt.column}}}function Ze($){CeHi&&(Hi=Ce,fu=[]),fu.push($))}function lo($,ye){return new ed($,null,null,ye)}function gc($,ye,Le){return new ed(ed.buildMessage($,ye),$,ye,Le)}function pu(){var $;return $=xA(),$}function ji(){var $,ye,Le;for($=Ce,ye=[],Le=hu();Le!==r;)ye.push(Le),Le=hu();return ye!==r&&(Rt=$,ye=n(ye)),$=ye,$}function hu(){var $,ye,Le,pt,ht;return $=Ce,ye=hs(),ye!==r?(t.charCodeAt(Ce)===45?(Le=u,Ce++):(Le=r,Yt===0&&Ze(A)),Le!==r?(pt=Sn(),pt!==r?(ht=dc(),ht!==r?(Rt=$,ye=p(ht),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$}function xA(){var $,ye,Le;for($=Ce,ye=[],Le=Ua();Le!==r;)ye.push(Le),Le=Ua();return ye!==r&&(Rt=$,ye=h(ye)),$=ye,$}function Ua(){var $,ye,Le,pt,ht,Tt,er,$r,Gi;if($=Ce,ye=Sn(),ye===r&&(ye=null),ye!==r){if(Le=Ce,t.charCodeAt(Ce)===35?(pt=E,Ce++):(pt=r,Yt===0&&Ze(I)),pt!==r){if(ht=[],Tt=Ce,er=Ce,Yt++,$r=tt(),Yt--,$r===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?($r=t.charAt(Ce),Ce++):($r=r,Yt===0&&Ze(v)),$r!==r?(er=[er,$r],Tt=er):(Ce=Tt,Tt=r)):(Ce=Tt,Tt=r),Tt!==r)for(;Tt!==r;)ht.push(Tt),Tt=Ce,er=Ce,Yt++,$r=tt(),Yt--,$r===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?($r=t.charAt(Ce),Ce++):($r=r,Yt===0&&Ze(v)),$r!==r?(er=[er,$r],Tt=er):(Ce=Tt,Tt=r)):(Ce=Tt,Tt=r);else ht=r;ht!==r?(pt=[pt,ht],Le=pt):(Ce=Le,Le=r)}else Ce=Le,Le=r;if(Le===r&&(Le=null),Le!==r){if(pt=[],ht=We(),ht!==r)for(;ht!==r;)pt.push(ht),ht=We();else pt=r;pt!==r?(Rt=$,ye=x(),$=ye):(Ce=$,$=r)}else Ce=$,$=r}else Ce=$,$=r;if($===r&&($=Ce,ye=hs(),ye!==r?(Le=oa(),Le!==r?(pt=Sn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(ht=C,Ce++):(ht=r,Yt===0&&Ze(R)),ht!==r?(Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(er=dc(),er!==r?(Rt=$,ye=L(Le,er),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,ye=hs(),ye!==r?(Le=co(),Le!==r?(pt=Sn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(ht=C,Ce++):(ht=r,Yt===0&&Ze(R)),ht!==r?(Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(er=dc(),er!==r?(Rt=$,ye=L(Le,er),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))){if($=Ce,ye=hs(),ye!==r)if(Le=co(),Le!==r)if(pt=Sn(),pt!==r)if(ht=aa(),ht!==r){if(Tt=[],er=We(),er!==r)for(;er!==r;)Tt.push(er),er=We();else Tt=r;Tt!==r?(Rt=$,ye=L(Le,ht),$=ye):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;if($===r)if($=Ce,ye=hs(),ye!==r)if(Le=co(),Le!==r){if(pt=[],ht=Ce,Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?($r=Sn(),$r===r&&($r=null),$r!==r?(Gi=co(),Gi!==r?(Rt=ht,Tt=te(Le,Gi),ht=Tt):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r),ht!==r)for(;ht!==r;)pt.push(ht),ht=Ce,Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?($r=Sn(),$r===r&&($r=null),$r!==r?(Gi=co(),Gi!==r?(Rt=ht,Tt=te(Le,Gi),ht=Tt):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r);else pt=r;pt!==r?(ht=Sn(),ht===r&&(ht=null),ht!==r?(t.charCodeAt(Ce)===58?(Tt=C,Ce++):(Tt=r,Yt===0&&Ze(R)),Tt!==r?(er=Sn(),er===r&&(er=null),er!==r?($r=dc(),$r!==r?(Rt=$,ye=ae(Le,pt,$r),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r}return $}function dc(){var $,ye,Le,pt,ht,Tt,er;if($=Ce,ye=Ce,Yt++,Le=Ce,pt=tt(),pt!==r?(ht=_t(),ht!==r?(t.charCodeAt(Ce)===45?(Tt=u,Ce++):(Tt=r,Yt===0&&Ze(A)),Tt!==r?(er=Sn(),er!==r?(pt=[pt,ht,Tt,er],Le=pt):(Ce=Le,Le=r)):(Ce=Le,Le=r)):(Ce=Le,Le=r)):(Ce=Le,Le=r),Yt--,Le!==r?(Ce=ye,ye=void 0):ye=r,ye!==r?(Le=We(),Le!==r?(pt=Fn(),pt!==r?(ht=ji(),ht!==r?(Tt=Ci(),Tt!==r?(Rt=$,ye=fe(ht),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,ye=tt(),ye!==r?(Le=Fn(),Le!==r?(pt=xA(),pt!==r?(ht=Ci(),ht!==r?(Rt=$,ye=fe(pt),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))if($=Ce,ye=Us(),ye!==r){if(Le=[],pt=We(),pt!==r)for(;pt!==r;)Le.push(pt),pt=We();else Le=r;Le!==r?(Rt=$,ye=ce(ye),$=ye):(Ce=$,$=r)}else Ce=$,$=r;return $}function hs(){var $,ye,Le;for(Yt++,$=Ce,ye=[],t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));Le!==r;)ye.push(Le),t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));return ye!==r?(Rt=Ce,Le=we(ye),Le?Le=void 0:Le=r,Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)):(Ce=$,$=r),Yt--,$===r&&(ye=r,Yt===0&&Ze(me)),$}function _t(){var $,ye,Le;for($=Ce,ye=[],t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));Le!==r;)ye.push(Le),t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));return ye!==r?(Rt=Ce,Le=g(ye),Le?Le=void 0:Le=r,Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)):(Ce=$,$=r),$}function Fn(){var $;return Rt=Ce,$=Ee(),$?$=void 0:$=r,$}function Ci(){var $;return Rt=Ce,$=Se(),$?$=void 0:$=r,$}function oa(){var $;return $=ds(),$===r&&($=la()),$}function co(){var $,ye,Le;if($=ds(),$===r){if($=Ce,ye=[],Le=Ho(),Le!==r)for(;Le!==r;)ye.push(Le),Le=Ho();else ye=r;ye!==r&&(Rt=$,ye=le()),$=ye}return $}function Us(){var $;return $=wi(),$===r&&($=gs(),$===r&&($=ds(),$===r&&($=la()))),$}function aa(){var $;return $=wi(),$===r&&($=ds(),$===r&&($=Ho())),$}function la(){var $,ye,Le,pt,ht,Tt;if(Yt++,$=Ce,ee.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Ie)),ye!==r){for(Le=[],pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Fe.test(t.charAt(Ce))?(Tt=t.charAt(Ce),Ce++):(Tt=r,Yt===0&&Ze(At)),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);pt!==r;)Le.push(pt),pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Fe.test(t.charAt(Ce))?(Tt=t.charAt(Ce),Ce++):(Tt=r,Yt===0&&Ze(At)),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);Le!==r?(Rt=$,ye=H(),$=ye):(Ce=$,$=r)}else Ce=$,$=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(ne)),$}function Ho(){var $,ye,Le,pt,ht;if($=Ce,t.substr(Ce,2)===at?(ye=at,Ce+=2):(ye=r,Yt===0&&Ze(Re)),ye===r&&(ye=null),ye!==r)if(ke.test(t.charAt(Ce))?(Le=t.charAt(Ce),Ce++):(Le=r,Yt===0&&Ze(xe)),Le!==r){for(pt=[],He.test(t.charAt(Ce))?(ht=t.charAt(Ce),Ce++):(ht=r,Yt===0&&Ze(Te));ht!==r;)pt.push(ht),He.test(t.charAt(Ce))?(ht=t.charAt(Ce),Ce++):(ht=r,Yt===0&&Ze(Te));pt!==r?(Rt=$,ye=H(),$=ye):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;return $}function wi(){var $,ye;return $=Ce,t.substr(Ce,4)===Je?(ye=Je,Ce+=4):(ye=r,Yt===0&&Ze(je)),ye!==r&&(Rt=$,ye=b()),$=ye,$}function gs(){var $,ye;return $=Ce,t.substr(Ce,4)===w?(ye=w,Ce+=4):(ye=r,Yt===0&&Ze(P)),ye!==r&&(Rt=$,ye=y()),$=ye,$===r&&($=Ce,t.substr(Ce,5)===F?(ye=F,Ce+=5):(ye=r,Yt===0&&Ze(z)),ye!==r&&(Rt=$,ye=X()),$=ye),$}function ds(){var $,ye,Le,pt;return Yt++,$=Ce,t.charCodeAt(Ce)===34?(ye=ie,Ce++):(ye=r,Yt===0&&Ze(Pe)),ye!==r?(t.charCodeAt(Ce)===34?(Le=ie,Ce++):(Le=r,Yt===0&&Ze(Pe)),Le!==r?(Rt=$,ye=Ne(),$=ye):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,t.charCodeAt(Ce)===34?(ye=ie,Ce++):(ye=r,Yt===0&&Ze(Pe)),ye!==r?(Le=ms(),Le!==r?(t.charCodeAt(Ce)===34?(pt=ie,Ce++):(pt=r,Yt===0&&Ze(Pe)),pt!==r?(Rt=$,ye=ot(Le),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)),Yt--,$===r&&(ye=r,Yt===0&&Ze(Z)),$}function ms(){var $,ye,Le;if($=Ce,ye=[],Le=_s(),Le!==r)for(;Le!==r;)ye.push(Le),Le=_s();else ye=r;return ye!==r&&(Rt=$,ye=dt(ye)),$=ye,$}function _s(){var $,ye,Le,pt,ht,Tt;return Gt.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze($t)),$===r&&($=Ce,t.substr(Ce,2)===bt?(ye=bt,Ce+=2):(ye=r,Yt===0&&Ze(an)),ye!==r&&(Rt=$,ye=Qr()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===mr?(ye=mr,Ce+=2):(ye=r,Yt===0&&Ze(br)),ye!==r&&(Rt=$,ye=Wr()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Kn?(ye=Kn,Ce+=2):(ye=r,Yt===0&&Ze(Ns)),ye!==r&&(Rt=$,ye=Ti()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===ps?(ye=ps,Ce+=2):(ye=r,Yt===0&&Ze(io)),ye!==r&&(Rt=$,ye=Pi()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Ls?(ye=Ls,Ce+=2):(ye=r,Yt===0&&Ze(so)),ye!==r&&(Rt=$,ye=cc()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===cu?(ye=cu,Ce+=2):(ye=r,Yt===0&&Ze(lp)),ye!==r&&(Rt=$,ye=cp()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Os?(ye=Os,Ce+=2):(ye=r,Yt===0&&Ze(Dn)),ye!==r&&(Rt=$,ye=oo()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Ms?(ye=Ms,Ce+=2):(ye=r,Yt===0&&Ze(ml)),ye!==r&&(Rt=$,ye=yl()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===ao?(ye=ao,Ce+=2):(ye=r,Yt===0&&Ze(Vn)),ye!==r?(Le=Un(),Le!==r?(pt=Un(),pt!==r?(ht=Un(),ht!==r?(Tt=Un(),Tt!==r?(Rt=$,ye=On(Le,pt,ht,Tt),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)))))))))),$}function Un(){var $;return Ni.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze(Mn)),$}function Sn(){var $,ye;if(Yt++,$=[],tr.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Oe)),ye!==r)for(;ye!==r;)$.push(ye),tr.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Oe));else $=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(_i)),$}function ys(){var $,ye;if(Yt++,$=[],Ma.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(hr)),ye!==r)for(;ye!==r;)$.push(ye),Ma.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(hr));else $=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(ii)),$}function We(){var $,ye,Le,pt,ht,Tt;if($=Ce,ye=tt(),ye!==r){for(Le=[],pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Tt=tt(),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);pt!==r;)Le.push(pt),pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Tt=tt(),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)}else Ce=$,$=r;return $}function tt(){var $;return t.substr(Ce,2)===uc?($=uc,Ce+=2):($=r,Yt===0&&Ze(uu)),$===r&&(t.charCodeAt(Ce)===10?($=Ac,Ce++):($=r,Yt===0&&Ze(El)),$===r&&(t.charCodeAt(Ce)===13?($=DA,Ce++):($=r,Yt===0&&Ze(Au)))),$}let It=2,nr=0;if(Cl=a(),Cl!==r&&Ce===t.length)return Cl;throw Cl!==r&&Ce"u"?!0:typeof t=="object"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>rV(t[e])):!1}function BT(t,e,r){if(t===null)return`null +`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} +`;if(typeof t=="string")return`${eV(t)} +`;if(Array.isArray(t)){if(t.length===0)return`[] +`;let o=" ".repeat(e);return` +${t.map(n=>`${o}- ${BT(n,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let[o,a]=t instanceof zD?[t.data,!1]:[t,!0],n=" ".repeat(e),u=Object.keys(o);a&&u.sort((p,h)=>{let E=$K.indexOf(p),I=$K.indexOf(h);return E===-1&&I===-1?ph?1:0:E!==-1&&I===-1?-1:E===-1&&I!==-1?1:E-I});let A=u.filter(p=>!rV(o[p])).map((p,h)=>{let E=o[p],I=eV(p),v=BT(E,e+1,!0),x=h>0||r?n:"",C=I.length>1024?`? ${I} +${x}:`:`${I}:`,R=v.startsWith(` +`)?v:` ${v}`;return`${x}${C}${R}`}).join(e===0?` +`:"")||` +`;return r?` +${A}`:`${A}`}throw new Error(`Unsupported value type (${t})`)}function Ba(t){try{let e=BT(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 V6e(t){return t.endsWith(` +`)||(t+=` +`),(0,tV.parse)(t)}function z6e(t){if(J6e.test(t))return V6e(t);let e=(0,XD.safeLoad)(t,{schema:XD.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 Ki(t){return z6e(t)}var XD,tV,K6e,$K,zD,J6e,nV=Et(()=>{XD=$e(zK()),tV=$e(ZK()),K6e=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,$K=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],zD=class{constructor(e){this.data=e}};Ba.PreserveOrdering=zD;J6e=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var rI={};Vt(rI,{parseResolution:()=>MD,parseShell:()=>ND,parseSyml:()=>Ki,stringifyArgument:()=>cT,stringifyArgumentSegment:()=>uT,stringifyArithmeticExpression:()=>OD,stringifyCommand:()=>lT,stringifyCommandChain:()=>uy,stringifyCommandChainThen:()=>aT,stringifyCommandLine:()=>LD,stringifyCommandLineThen:()=>oT,stringifyEnvSegment:()=>TD,stringifyRedirectArgument:()=>Jw,stringifyResolution:()=>UD,stringifyShell:()=>cy,stringifyShellLine:()=>cy,stringifySyml:()=>Ba,stringifyValueArgument:()=>Yg});var Nl=Et(()=>{rW();oW();nV()});var sV=_((Ext,vT)=>{"use strict";var X6e=t=>{let e=!1,r=!1,o=!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=X6e(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(t))};vT.exports=iV;vT.exports.default=iV});var oV=_((Cxt,Z6e)=>{Z6e.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:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{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:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{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:"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:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{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",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{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"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var td=_(Xa=>{"use strict";var lV=oV(),ju=process.env;Object.defineProperty(Xa,"_vendors",{value:lV.map(function(t){return t.constant})});Xa.name=null;Xa.isPR=null;lV.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(o){return aV(o)});if(Xa[t.constant]=r,r)switch(Xa.name=t.name,typeof t.pr){case"string":Xa.isPR=!!ju[t.pr];break;case"object":"env"in t.pr?Xa.isPR=t.pr.env in ju&&ju[t.pr.env]!==t.pr.ne:"any"in t.pr?Xa.isPR=t.pr.any.some(function(o){return!!ju[o]}):Xa.isPR=aV(t.pr);break;default:Xa.isPR=null}});Xa.isCI=!!(ju.CI||ju.CONTINUOUS_INTEGRATION||ju.BUILD_NUMBER||ju.RUN_ID||Xa.name);function aV(t){return typeof t=="string"?!!ju[t]:Object.keys(t).every(function(e){return ju[e]===t[e]})}});var Hn,cn,rd,DT,ZD,cV,ST,PT,$D=Et(()=>{(function(t){t.StartOfInput="\0",t.EndOfInput="",t.EndOfPartialInput=""})(Hn||(Hn={}));(function(t){t[t.InitialNode=0]="InitialNode",t[t.SuccessNode=1]="SuccessNode",t[t.ErrorNode=2]="ErrorNode",t[t.CustomNode=3]="CustomNode"})(cn||(cn={}));rd=-1,DT=/^(-h|--help)(?:=([0-9]+))?$/,ZD=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,cV=/^-[a-zA-Z]{2,}$/,ST=/^([^=]+)=([\s\S]*)$/,PT=process.env.DEBUG_CLI==="1"});var it,yy,eS,bT,tS=Et(()=>{$D();it=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},yy=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(o=>o.reason!==null&&o.reason===r[0].reason)){let[{reason:o}]=this.candidates;this.message=`${o} + +${this.candidates.map(({usage:a})=>`$ ${a}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:o}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${o} +${bT(e)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:o},a)=>`${`${a}.`.padStart(4)} ${o}`).join(` +`)} + +${bT(e)}`}},eS=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((o,a)=>`${`${a}.`.padStart(4)} ${o}`).join(` +`)} + +${bT(e)}`}},bT=t=>`While running ${t.filter(e=>e!==Hn.EndOfInput&&e!==Hn.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`});function $6e(t){let e=t.split(` +`),r=e.filter(a=>a.match(/\S/)),o=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(o).trimRight()).join(` +`)}function Do(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` +`),t=$6e(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),t=t.replace(/\n(\n)?\n*/g,(o,a)=>a||" "),r&&(t=t.split(/\n/).map(o=>{let a=o.match(/^\s*[*-][\t ]+(.*)/);if(!a)return o.match(/(.{1,80})(?: |$)/g).join(` +`);let n=o.length-o.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((u,A)=>" ".repeat(n)+(A===0?"- ":" ")+u).join(` +`)}).join(` + +`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(o,a,n)=>e.code(a+n+a)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(o,a,n)=>e.bold(a+n+a)),t?`${t} +`:""}var xT,uV,AV,kT=Et(()=>{xT=Array(80).fill("\u2501");for(let t=0;t<=24;++t)xT[xT.length-t]=`\x1B[38;5;${232+t}m\u2501`;uV={header:t=>`\x1B[1m\u2501\u2501\u2501 ${t}${t.length<80-5?` ${xT.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`},AV={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Ko(t){return{...t,[nI]:!0}}function Gu(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function rS(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return"validation failed";let[,o,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=o!=="."||!e?`${o.replace(/^\.(\[|$)/,"$1")}: ${a}`:`: ${a}`,a}function iI(t,e){return e.length===1?new it(`${t}${rS(e[0],{mergeName:!0})}`):new it(`${t}: +${e.map(r=>` +- ${rS(r)}`).join("")}`)}function nd(t,e,r){if(typeof r>"u")return e;let o=[],a=[],n=A=>{let p=e;return e=A,n.bind(null,p)};if(!r(e,{errors:o,coercions:a,coercion:n}))throw iI(`Invalid value for ${t}`,o);for(let[,A]of a)A();return e}var nI,Ef=Et(()=>{tS();nI=Symbol("clipanion/isOption")});var Vo={};Vt(Vo,{KeyRelationship:()=>qu,TypeAssertionError:()=>Kp,applyCascade:()=>aI,as:()=>yje,assert:()=>gje,assertWithErrors:()=>dje,cascade:()=>oS,fn:()=>Eje,hasAtLeastOneKey:()=>OT,hasExactLength:()=>dV,hasForbiddenKeys:()=>Mje,hasKeyRelationship:()=>cI,hasMaxLength:()=>wje,hasMinLength:()=>Cje,hasMutuallyExclusiveKeys:()=>Uje,hasRequiredKeys:()=>Oje,hasUniqueItems:()=>Ije,isArray:()=>nS,isAtLeast:()=>NT,isAtMost:()=>Dje,isBase64:()=>Rje,isBoolean:()=>aje,isDate:()=>cje,isDict:()=>fje,isEnum:()=>Ks,isHexColor:()=>Fje,isISO8601:()=>Qje,isInExclusiveRange:()=>Pje,isInInclusiveRange:()=>Sje,isInstanceOf:()=>hje,isInteger:()=>LT,isJSON:()=>Tje,isLiteral:()=>pV,isLowerCase:()=>bje,isMap:()=>Aje,isNegative:()=>Bje,isNullable:()=>Lje,isNumber:()=>RT,isObject:()=>hV,isOneOf:()=>TT,isOptional:()=>Nje,isPartial:()=>pje,isPayload:()=>lje,isPositive:()=>vje,isRecord:()=>sS,isSet:()=>uje,isString:()=>Cy,isTuple:()=>iS,isUUID4:()=>kje,isUnknown:()=>FT,isUpperCase:()=>xje,makeTrait:()=>gV,makeValidator:()=>Hr,matchesRegExp:()=>oI,softAssert:()=>mje});function jn(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 Ey(t,e){if(t.length===0)return"nothing";if(t.length===1)return jn(t[0]);let r=t.slice(0,-1),o=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>jn(n)).join(", ")}${a}${jn(o)}`}function Wp(t,e){var r,o,a;return typeof e=="number"?`${(r=t?.p)!==null&&r!==void 0?r:"."}[${e}]`:eje.test(e)?`${(o=t?.p)!==null&&o!==void 0?o:""}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(e)}]`}function QT(t,e,r){return t===1?e:r}function pr({errors:t,p:e}={},r){return t?.push(`${e??"."}: ${r}`),!1}function sje(t,e){return r=>{t[e]=r}}function Yu(t,e){return r=>{let o=t[e];return t[e]=r,Yu(t,e).bind(null,o)}}function sI(t,e,r){let o=()=>(t(r()),a),a=()=>(t(e),o);return o}function FT(){return Hr({test:(t,e)=>!0})}function pV(t){return Hr({test:(e,r)=>e!==t?pr(r,`Expected ${jn(t)} (got ${jn(e)})`):!0})}function Cy(){return Hr({test:(t,e)=>typeof t!="string"?pr(e,`Expected a string (got ${jn(t)})`):!0})}function Ks(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a=="string"||typeof a=="number"),o=new Set(e);return o.size===1?pV([...o][0]):Hr({test:(a,n)=>o.has(a)?!0:r?pr(n,`Expected one of ${Ey(e,"or")} (got ${jn(a)})`):pr(n,`Expected a valid enumeration value (got ${jn(a)})`)})}function aje(){return Hr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return pr(e,"Unbound coercion result");let o=oje.get(t);if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a boolean (got ${jn(t)})`)}return!0}})}function RT(){return Hr({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return pr(e,"Unbound coercion result");let o;if(typeof t=="string"){let a;try{a=JSON.parse(t)}catch{}if(typeof a=="number")if(JSON.stringify(a)===t)o=a;else return pr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a number (got ${jn(t)})`)}return!0}})}function lje(t){return Hr({test:(e,r)=>{var o;if(typeof r?.coercions>"u")return pr(r,"The isPayload predicate can only be used with coercion enabled");if(typeof r.coercion>"u")return pr(r,"Unbound coercion result");if(typeof e!="string")return pr(r,`Expected a string (got ${jn(e)})`);let a;try{a=JSON.parse(e)}catch{return pr(r,`Expected a JSON string (got ${jn(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Yu(n,"value")}))?(r.coercions.push([(o=r.p)!==null&&o!==void 0?o:".",r.coercion.bind(null,n.value)]),!0):!1}})}function cje(){return Hr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return pr(e,"Unbound coercion result");let o;if(typeof t=="string"&&fV.test(t))o=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))o=new Date(a*1e3);else return pr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a date (got ${jn(t)})`)}return!0}})}function nS(t,{delimiter:e}={}){return Hr({test:(r,o)=>{var a;let n=r;if(typeof r=="string"&&typeof e<"u"&&typeof o?.coercions<"u"){if(typeof o?.coercion>"u")return pr(o,"Unbound coercion result");r=r.split(e)}if(!Array.isArray(r))return pr(o,`Expected an array (got ${jn(r)})`);let u=!0;for(let A=0,p=r.length;A{var n,u;if(Object.getPrototypeOf(o).toString()==="[object Set]")if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return pr(a,"Unbound coercion result");let A=[...o],p=[...o];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,I)=>E!==A[I])?new Set(p):o;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",sI(a.coercion,o,h)]),!0}else{let A=!0;for(let p of o)if(A=t(p,Object.assign({},a))&&A,!A&&a?.errors==null)break;return A}if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return pr(a,"Unbound coercion result");let A={value:o};return r(o,Object.assign(Object.assign({},a),{coercion:Yu(A,"value")}))?(a.coercions.push([(u=a.p)!==null&&u!==void 0?u:".",sI(a.coercion,o,()=>new Set(A.value))]),!0):!1}return pr(a,`Expected a set (got ${jn(o)})`)}})}function Aje(t,e){let r=nS(iS([t,e])),o=sS(e,{keys:t});return Hr({test:(a,n)=>{var u,A,p;if(Object.getPrototypeOf(a).toString()==="[object Map]")if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return pr(n,"Unbound coercion result");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let I=()=>E.some((v,x)=>v[0]!==h[x][0]||v[1]!==h[x][1])?new Map(E):a;return n.coercions.push([(u=n.p)!==null&&u!==void 0?u:".",sI(n.coercion,a,I)]),!0}else{let h=!0;for(let[E,I]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(I,Object.assign(Object.assign({},n),{p:Wp(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return pr(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([(A=n.p)!==null&&A!==void 0?A:".",sI(n.coercion,a,()=>new Map(h.value))]),!0):!1:o(a,Object.assign(Object.assign({},n),{coercion:Yu(h,"value")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:".",sI(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return pr(n,`Expected a map (got ${jn(a)})`)}})}function iS(t,{delimiter:e}={}){let r=dV(t.length);return Hr({test:(o,a)=>{var n;if(typeof o=="string"&&typeof e<"u"&&typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return pr(a,"Unbound coercion result");o=o.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,o)])}if(!Array.isArray(o))return pr(a,`Expected a tuple (got ${jn(o)})`);let u=r(o,Object.assign({},a));for(let A=0,p=o.length;A{var n;if(Array.isArray(o)&&typeof a?.coercions<"u")return typeof a?.coercion>"u"?pr(a,"Unbound coercion result"):r(o,Object.assign(Object.assign({},a),{coercion:void 0}))?(o=Object.fromEntries(o),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,o)]),!0):!1;if(typeof o!="object"||o===null)return pr(a,`Expected an object (got ${jn(o)})`);let u=Object.keys(o),A=!0;for(let p=0,h=u.length;p{if(typeof a!="object"||a===null)return pr(n,`Expected an object (got ${jn(a)})`);let u=new Set([...r,...Object.keys(a)]),A={},p=!0;for(let h of u){if(h==="constructor"||h==="__proto__")p=pr(Object.assign(Object.assign({},n),{p:Wp(n,h)}),"Unsafe property name");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,I=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<"u"?p=E(I,Object.assign(Object.assign({},n),{p:Wp(n,h),coercion:Yu(a,h)}))&&p:e===null?p=pr(Object.assign(Object.assign({},n),{p:Wp(n,h)}),`Extraneous property (got ${jn(I)})`):Object.defineProperty(A,h,{enumerable:!0,get:()=>I,set:sje(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(A,n)&&p),p}});return Object.assign(o,{properties:t})}function pje(t){return hV(t,{extra:sS(FT())})}function gV(t){return()=>t}function Hr({test:t}){return gV(t)()}function gje(t,e){if(!e(t))throw new Kp}function dje(t,e){let r=[];if(!e(t,{errors:r}))throw new Kp({errors:r})}function mje(t,e){}function yje(t,e,{coerce:r=!1,errors:o,throw:a}={}){let n=o?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new Kp({errors:n});return{value:void 0,errors:n??!0}}let u={value:t},A=Yu(u,"value"),p=[];if(!e(t,{errors:n,coercion:A,coercions:p})){if(a)throw new Kp({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?u.value:{value:u.value,errors:void 0}}function Eje(t,e){let r=iS(t);return(...o)=>{if(!r(o))throw new Kp;return e(...o)}}function Cje(t){return Hr({test:(e,r)=>e.length>=t?!0:pr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function wje(t){return Hr({test:(e,r)=>e.length<=t?!0:pr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function dV(t){return Hr({test:(e,r)=>e.length!==t?pr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function Ije({map:t}={}){return Hr({test:(e,r)=>{let o=new Set,a=new Set;for(let n=0,u=e.length;nt<=0?!0:pr(e,`Expected to be negative (got ${t})`)})}function vje(){return Hr({test:(t,e)=>t>=0?!0:pr(e,`Expected to be positive (got ${t})`)})}function NT(t){return Hr({test:(e,r)=>e>=t?!0:pr(r,`Expected to be at least ${t} (got ${e})`)})}function Dje(t){return Hr({test:(e,r)=>e<=t?!0:pr(r,`Expected to be at most ${t} (got ${e})`)})}function Sje(t,e){return Hr({test:(r,o)=>r>=t&&r<=e?!0:pr(o,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function Pje(t,e){return Hr({test:(r,o)=>r>=t&&re!==Math.round(e)?pr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?pr(r,`Expected to be a safe integer (got ${e})`):!0})}function oI(t){return Hr({test:(e,r)=>t.test(e)?!0:pr(r,`Expected to match the pattern ${t.toString()} (got ${jn(e)})`)})}function bje(){return Hr({test:(t,e)=>t!==t.toLowerCase()?pr(e,`Expected to be all-lowercase (got ${t})`):!0})}function xje(){return Hr({test:(t,e)=>t!==t.toUpperCase()?pr(e,`Expected to be all-uppercase (got ${t})`):!0})}function kje(){return Hr({test:(t,e)=>ije.test(t)?!0:pr(e,`Expected to be a valid UUID v4 (got ${jn(t)})`)})}function Qje(){return Hr({test:(t,e)=>fV.test(t)?!0:pr(e,`Expected to be a valid ISO 8601 date string (got ${jn(t)})`)})}function Fje({alpha:t=!1}){return Hr({test:(e,r)=>(t?tje.test(e):rje.test(e))?!0:pr(r,`Expected to be a valid hexadecimal color string (got ${jn(e)})`)})}function Rje(){return Hr({test:(t,e)=>nje.test(t)?!0:pr(e,`Expected to be a valid base 64 string (got ${jn(t)})`)})}function Tje(t=FT()){return Hr({test:(e,r)=>{let o;try{o=JSON.parse(e)}catch{return pr(r,`Expected to be a valid JSON string (got ${jn(e)})`)}return t(o,r)}})}function oS(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Hr({test:(o,a)=>{var n,u;let A={value:o},p=typeof a?.coercions<"u"?Yu(A,"value"):void 0,h=typeof a?.coercions<"u"?[]:void 0;if(!t(o,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<"u")for(let[,I]of h)E.push(I());try{if(typeof a?.coercions<"u"){if(A.value!==o){if(typeof a?.coercion>"u")return pr(a,"Unbound coercion result");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,A.value)])}(u=a?.coercions)===null||u===void 0||u.push(...h)}return r.every(I=>I(A.value,a))}finally{for(let I of E)I()}}})}function aI(t,...e){let r=Array.isArray(e[0])?e[0]:e;return oS(t,r)}function Nje(t){return Hr({test:(e,r)=>typeof e>"u"?!0:t(e,r)})}function Lje(t){return Hr({test:(e,r)=>e===null?!0:t(e,r)})}function Oje(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)||p.push(h);return p.length>0?pr(u,`Missing required ${QT(p.length,"property","properties")} ${Ey(p,"and")}`):!0}})}function OT(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Hr({test:(n,u)=>Object.keys(n).some(h=>a(o,h,n))?!0:pr(u,`Missing at least one property from ${Ey(Array.from(o),"or")}`)})}function Mje(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>0?pr(u,`Forbidden ${QT(p.length,"property","properties")} ${Ey(p,"and")}`):!0}})}function Uje(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>1?pr(u,`Mutually exclusive properties ${Ey(p,"and")}`):!0}})}function cI(t,e,r,o){var a,n;let u=new Set((a=o?.ignore)!==null&&a!==void 0?a:[]),A=lI[(n=o?.missingIf)!==null&&n!==void 0?n:"missing"],p=new Set(r),h=_je[e],E=e===qu.Forbids?"or":"and";return Hr({test:(I,v)=>{let x=new Set(Object.keys(I));if(!A(x,t,I)||u.has(I[t]))return!0;let C=[];for(let R of p)(A(x,R,I)&&!u.has(I[R]))!==h.expect&&C.push(R);return C.length>=1?pr(v,`Property "${t}" ${h.message} ${QT(C.length,"property","properties")} ${Ey(C,E)}`):!0}})}var eje,tje,rje,nje,ije,fV,oje,hje,TT,Kp,lI,qu,_je,Za=Et(()=>{eje=/^[a-zA-Z_][a-zA-Z0-9_]*$/;tje=/^#[0-9a-f]{6}$/i,rje=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,nje=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,ije=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,fV=/^(?:[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)?)$/;oje=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]);hje=t=>Hr({test:(e,r)=>e instanceof t?!0:pr(r,`Expected an instance of ${t.name} (got ${jn(e)})`)}),TT=(t,{exclusive:e=!1}={})=>Hr({test:(r,o)=>{var a,n,u;let A=[],p=typeof o?.errors<"u"?[]:void 0;for(let h=0,E=t.length;h1?pr(o,`Expected to match exactly a single predicate (matched ${A.join(", ")})`):(u=o?.errors)===null||u===void 0||u.push(...p),!1}});Kp=class extends Error{constructor({errors:e}={}){let r="Type mismatch";if(e&&e.length>0){r+=` +`;for(let o of e)r+=` +- ${o}`}super(r)}};lI={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"})(qu||(qu={}));_je={[qu.Forbids]:{expect:!1,message:"forbids using"},[qu.Requires]:{expect:!0,message:"requires using"}}});var nt,Vp=Et(()=>{Ef();nt=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:u}=await Promise.resolve().then(()=>(Za(),Vo)),A=u(a(n()),r),p=[],h=[];if(!A(this,{errors:p,coercions:h}))throw iI("Invalid option schema",p);for(let[,I]of h)I()}else if(r!=null)throw new Error("Invalid command schema");let o=await this.execute();return typeof o<"u"?o:0}};nt.isOption=nI;nt.Default=[]});function va(t){PT&&console.log(t)}function yV(){let t={nodes:[]};for(let e=0;e{if(e.has(o))return;e.add(o);let a=t.nodes[o];for(let u of Object.values(a.statics))for(let{to:A}of u)r(A);for(let[,{to:u}]of a.dynamics)r(u);for(let{to:u}of a.shortcuts)r(u);let n=new Set(a.shortcuts.map(({to:u})=>u));for(;a.shortcuts.length>0;){let{to:u}=a.shortcuts.shift(),A=t.nodes[u];for(let[p,h]of Object.entries(A.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let I of h)E.some(({to:v})=>I.to===v)||E.push(I)}for(let[p,h]of A.dynamics)a.dynamics.some(([E,{to:I}])=>p===E&&h.to===I)||a.dynamics.push([p,h]);for(let p of A.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(cn.InitialNode)}function Gje(t,{prefix:e=""}={}){if(PT){va(`${e}Nodes are:`);for(let r=0;rE!==cn.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===cn.ErrorNode))throw new yy(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));o=Wje(h)}if(o.length>0){va(" Results:");for(let n of o)va(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else va(" No results");return o}function Yje(t,e,{endToken:r=Hn.EndOfInput}={}){let o=qje(t,[...e,r]);return Kje(e,o.map(({state:a})=>a))}function Wje(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 Kje(t,e){let r=e.filter(v=>v.selectedIndex!==null),o=r.filter(v=>!v.partial);if(o.length>0&&(r=o),r.length===0)throw new Error;let a=r.filter(v=>v.selectedIndex===rd||v.requiredOptions.every(x=>x.some(C=>v.options.find(R=>R.name===C))));if(a.length===0)throw new yy(t,r.map(v=>({usage:v.candidateUsage,reason:null})));let n=0;for(let v of a)v.path.length>n&&(n=v.path.length);let u=a.filter(v=>v.path.length===n),A=v=>v.positionals.filter(({extra:x})=>!x).length+v.options.length,p=u.map(v=>({state:v,positionalCount:A(v)})),h=0;for(let{positionalCount:v}of p)v>h&&(h=v);let E=p.filter(({positionalCount:v})=>v===h).map(({state:v})=>v),I=Vje(E);if(I.length>1)throw new eS(t,I.map(v=>v.candidateUsage));return I[0]}function Vje(t){let e=[],r=[];for(let o of t)o.selectedIndex===rd?r.push(o):e.push(o);return r.length>0&&e.push({...mV,path:EV(...r.map(o=>o.path)),options:r.reduce((o,a)=>o.concat(a.options),[])}),e}function EV(t,e,...r){return e===void 0?Array.from(t):EV(t.filter((o,a)=>o===e[a]),...r)}function $a(){return{dynamics:[],shortcuts:[],statics:{}}}function CV(t){return t===cn.SuccessNode||t===cn.ErrorNode}function MT(t,e=0){return{to:CV(t.to)?t.to:t.to>=cn.CustomNode?t.to+e-cn.CustomNode+1:t.to+e,reducer:t.reducer}}function Jje(t,e=0){let r=$a();for(let[o,a]of t.dynamics)r.dynamics.push([o,MT(a,e)]);for(let o of t.shortcuts)r.shortcuts.push(MT(o,e));for(let[o,a]of Object.entries(t.statics))r.statics[o]=a.map(n=>MT(n,e));return r}function Ps(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}function wy(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}function Jo(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:o,reducer:a})}function aS(t,e,r,o,a){if(Array.isArray(e)){let[n,...u]=e;return t[n](r,o,a,...u)}else return t[e](r,o,a)}var mV,zje,UT,el,_T,Iy,lS=Et(()=>{$D();tS();mV={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:rd,partial:!1,tokens:[]};zje={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,o)=>!t.ignoreOptions&&e===o,isBatchOption:(t,e,r,o)=>!t.ignoreOptions&&cV.test(e)&&[...e.slice(1)].every(a=>o.has(`-${a}`)),isBoundOption:(t,e,r,o,a)=>{let n=e.match(ST);return!t.ignoreOptions&&!!n&&ZD.test(n[1])&&o.has(n[1])&&a.filter(u=>u.nameSet.includes(n[1])).every(u=>u.allowBinding)},isNegatedOption:(t,e,r,o)=>!t.ignoreOptions&&e===`--no-${o.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&DT.test(e),isUnsupportedOption:(t,e,r,o)=>!t.ignoreOptions&&e.startsWith("-")&&ZD.test(e)&&!o.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!ZD.test(e)},UT={setCandidateState:(t,e,r,o)=>({...t,...o}),setSelectedIndex:(t,e,r,o)=>({...t,selectedIndex:o}),setPartialIndex:(t,e,r,o)=>({...t,selectedIndex:o,partial:!0}),pushBatch:(t,e,r,o)=>{let a=t.options.slice(),n=t.tokens.slice();for(let u=1;u{let[,o,a]=e.match(ST),n=t.options.concat({name:o,value:a}),u=t.tokens.concat([{segmentIndex:r,type:"option",slice:[0,o.length],option:o},{segmentIndex:r,type:"assign",slice:[o.length,o.length+1]},{segmentIndex:r,type:"value",slice:[o.length+1,o.length+a.length+1]}]);return{...t,options:n,tokens:u}},pushPath:(t,e,r)=>{let o=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:"path"});return{...t,path:o,tokens:a}},pushPositional:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:o,tokens:a}},pushExtra:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:o,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:el}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:o,tokens:a}},pushTrue:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!0}),n=t.tokens.concat({segmentIndex:r,type:"option",option:o});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!1}),n=t.tokens.concat({segmentIndex:r,type:"option",option:o});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,o)=>{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 o;let a=t.options[t.options.length-1],n=t.options.slice(),u=t.tokens.concat({segmentIndex:r,type:"value"});return a.value=((o=a.value)!==null&&o!==void 0?o:[]).concat([e]),{...t,options:n,tokens:u}},setStringValue:(t,e,r)=>{let o=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:"value"});return o.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,o)=>{let[,,a]=e.match(DT);return typeof a<"u"?{...t,options:[{name:"-c",value:String(o)},{name:"-i",value:a}]}:{...t,options:[{name:"-c",value:String(o)}]}},setError:(t,e,r,o)=>e===Hn.EndOfInput||e===Hn.EndOfPartialInput?{...t,errorMessage:`${o}.`}:{...t,errorMessage:`${o} ("${e}").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},el=Symbol(),_T=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:o=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:o,proxy:a})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===el)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!==el?this.arity.extra.push(e):this.arity.extra!==el&&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===el)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 o=0;o1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(o))throw new Error(`The arity must be an integer, got ${o}`);if(o<0)throw new Error(`The arity must be positive, got ${o}`);let A=e.reduce((p,h)=>h.length>p.length?h:p,"");for(let p of e)this.allOptionNames.set(p,A);this.options.push({preferredName:A,nameSet:e,description:r,arity:o,hidden:a,required:n,allowBinding:u})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&o.push(...this.paths[0]),e){for(let{preferredName:u,nameSet:A,arity:p,hidden:h,description:E,required:I}of this.options){if(h)continue;let v=[];for(let C=0;C`:`[${x}]`)}o.push(...this.arity.leading.map(u=>`<${u}>`)),this.arity.extra===el?o.push("..."):o.push(...this.arity.extra.map(u=>`[${u}]`)),o.push(...this.arity.trailing.map(u=>`<${u}>`))}return{usage:o.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=yV(),r=cn.InitialNode,o=this.usage().usage,a=this.options.filter(A=>A.required).map(A=>A.nameSet);r=Oc(e,$a()),Jo(e,cn.InitialNode,Hn.StartOfInput,r,["setCandidateState",{candidateUsage:o,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",u=this.paths.length>0?this.paths:[[]];for(let A of u){let p=r;if(A.length>0){let v=Oc(e,$a());wy(e,p,v),this.registerOptions(e,v),p=v}for(let v=0;v0||!this.arity.proxy){let v=Oc(e,$a());Ps(e,p,"isHelp",v,["useHelp",this.cliIndex]),Ps(e,v,"always",v,"pushExtra"),Jo(e,v,Hn.EndOfInput,cn.SuccessNode,["setSelectedIndex",rd]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Jo(e,p,Hn.EndOfInput,cn.ErrorNode,["setError","Not enough positional arguments"]),Jo(e,p,Hn.EndOfPartialInput,cn.SuccessNode,["setPartialIndex",this.cliIndex]));let h=p;for(let v=0;v0||v+1!==this.arity.leading.length)&&(Jo(e,x,Hn.EndOfInput,cn.ErrorNode,["setError","Not enough positional arguments"]),Jo(e,x,Hn.EndOfPartialInput,cn.SuccessNode,["setPartialIndex",this.cliIndex])),Ps(e,h,"isNotOptionLike",x,"pushPositional"),h=x}let E=h;if(this.arity.extra===el||this.arity.extra.length>0){let v=Oc(e,$a());if(wy(e,h,v),this.arity.extra===el){let x=Oc(e,$a());this.arity.proxy||this.registerOptions(e,x),Ps(e,h,n,x,"pushExtraNoLimits"),Ps(e,x,n,x,"pushExtraNoLimits"),wy(e,x,v)}else for(let x=0;x0)&&this.registerOptions(e,C),Ps(e,E,n,C,"pushExtra"),wy(e,C,v),E=C}E=v}this.arity.trailing.length>0&&(Jo(e,E,Hn.EndOfInput,cn.ErrorNode,["setError","Not enough positional arguments"]),Jo(e,E,Hn.EndOfPartialInput,cn.SuccessNode,["setPartialIndex",this.cliIndex]));let I=E;for(let v=0;v=0&&e{let u=n?Hn.EndOfPartialInput:Hn.EndOfInput;return Yje(o,a,{endToken:u})}}}}});function IV(){return cS.default&&"getColorDepth"in cS.default.WriteStream.prototype?cS.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 BV(t){let e=wV;if(typeof e>"u"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=ve("async_hooks");e=wV=new r;let o=process.stdout._write;process.stdout._write=function(n,u,A){let p=e.getStore();return typeof p>"u"?o.call(this,n,u,A):p.stdout.write(n,u,A)};let a=process.stderr._write;process.stderr._write=function(n,u,A){let p=e.getStore();return typeof p>"u"?a.call(this,n,u,A):p.stderr.write(n,u,A)}}return r=>e.run(t,r)}var cS,wV,vV=Et(()=>{cS=$e(ve("tty"),1)});var By,DV=Et(()=>{Vp();By=class extends nt{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let o=new By(r);o.path=e.path;for(let a of e.options)switch(a.name){case"-c":o.commands.push(Number(a.value));break;case"-i":o.index=Number(a.value);break}return o}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 o of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[o].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 bV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=kV(t);return as.from(r,e).runExit(o,a)}async function xV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=kV(t);return as.from(r,e).run(o,a)}function kV(t){let e,r,o,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(o=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?o=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],o=t[2]):t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],o=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],o=t[2],a=t[3];break}if(typeof o>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}}function PV(t){return t()}var SV,as,QV=Et(()=>{$D();lS();kT();vV();Vp();DV();SV=Symbol("clipanion/errorCommand");as=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:o,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Iy({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=o,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let o=new as(r),a=Array.isArray(e)?e:[e];for(let n of a)o.register(n);return o}register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[nt.isOption]&&o.set(p,h)}let n=this.builder.command(),u=n.cliIndex,A=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof A<"u")for(let p of A)n.addPath(p);this.registrations.set(e,{specs:o,builder:n,index:u});for(let[p,{definition:h}]of o.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:o,context:a,partial:n}=typeof e=="object"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:u,process:A}=this.builder.compile(),p=A(o,{partial:n}),h={...as.defaultContext,...a};switch(p.selectedIndex){case rd:{let E=By.from(p,u);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=u[p.selectedIndex],I=this.registrations.get(E);if(typeof I>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let v=new E;v.context=h,v.tokens=p.tokens,v.path=p.path;try{for(let[x,{transformer:C}]of I.specs.entries())v[x]=C(I.builder,x,p,h);return v}catch(x){throw x[SV]=v,x}}break}}async run(e,r){var o,a;let n,u={...as.defaultContext,...r},A=(o=this.enableColors)!==null&&o!==void 0?o:u.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,u)}catch(E){return u.stdout.write(this.error(E,{colored:A})),1}if(n.help)return u.stdout.write(this.usage(n,{colored:A,detailed:!0})),0;n.context=u,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,I)=>this.error(E,I),format:E=>this.format(E),process:(E,I)=>this.process(E,{...u,...I}),run:(E,I)=>this.run(E,{...u,...I}),usage:(E,I)=>this.usage(E,I)};let p=this.enableCapture&&(a=BV(u))!==null&&a!==void 0?a:PV,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return u.stdout.write(this.error(E,{colored:A,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:o}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),u=typeof e.usage.category<"u"?Do(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,A=typeof e.usage.description<"u"?Do(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<"u"?Do(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<"u"?e.usage.examples.map(([E,I])=>[Do(E,{format:this.format(r),paragraphs:!1}),I.replace(/\$0/g,this.binaryName)]):void 0;return{path:o,usage:a,category:u,description:A,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let o of this.registrations.keys()){let a=this.definition(o,{colored:e});!a||r.push(a)}return r}usage(e=null,{colored:r,detailed:o=!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(x=>x.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(o=!0)}let u=e!==null&&e instanceof nt?e.constructor:e,A="";if(u)if(o){let{description:p="",details:h="",examples:E=[]}=u.usage||{};p!==""&&(A+=Do(p,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),A+=` +`),(h!==""||E.length>0)&&(A+=`${this.format(r).header("Usage")} +`,A+=` +`);let{usage:I,options:v}=this.getUsageByRegistration(u,{inlineOptions:!1});if(A+=`${this.format(r).bold(a)}${I} +`,v.length>0){A+=` +`,A+=`${this.format(r).header("Options")} +`;let x=v.reduce((C,R)=>Math.max(C,R.definition.length),0);A+=` +`;for(let{definition:C,description:R}of v)A+=` ${this.format(r).bold(C.padEnd(x))} ${Do(R,{format:this.format(r),paragraphs:!1})}`}if(h!==""&&(A+=` +`,A+=`${this.format(r).header("Details")} +`,A+=` +`,A+=Do(h,{format:this.format(r),paragraphs:!0})),E.length>0){A+=` +`,A+=`${this.format(r).header("Examples")} +`;for(let[x,C]of E)A+=` +`,A+=Do(x,{format:this.format(r),paragraphs:!1}),A+=`${C.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:p}=this.getUsageByRegistration(u);A+=`${this.format(r).bold(a)}${p} +`}else{let p=new Map;for(let[v,{index:x}]of this.registrations.entries()){if(typeof v.usage>"u")continue;let C=typeof v.usage.category<"u"?Do(v.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(C);typeof R>"u"&&p.set(C,R=[]);let{usage:L}=this.getUsageByIndex(x);R.push({commandClass:v,usage:L})}let h=Array.from(p.keys()).sort((v,x)=>v===null?-1:x===null?1:v.localeCompare(x,"en",{usage:"sort",caseFirst:"upper"})),E=typeof this.binaryLabel<"u",I=typeof this.binaryVersion<"u";E||I?(E&&I?A+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:E?A+=`${this.format(r).header(`${this.binaryLabel}`)} +`:A+=`${this.format(r).header(`${this.binaryVersion}`)} +`,A+=` ${this.format(r).bold(a)}${this.binaryName} +`):A+=`${this.format(r).bold(a)}${this.binaryName} +`;for(let v of h){let x=p.get(v).slice().sort((R,L)=>R.usage.localeCompare(L.usage,"en",{usage:"sort",caseFirst:"upper"})),C=v!==null?v.trim():"General commands";A+=` +`,A+=`${this.format(r).header(`${C}`)} +`;for(let{commandClass:R,usage:L}of x){let U=R.usage.description||"undocumented";A+=` +`,A+=` ${this.format(r).bold(L)} +`,A+=` ${Do(U,{format:this.format(r),paragraphs:!1})}`}}A+=` +`,A+=Do("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 A}error(e,r){var o,{colored:a,command:n=(o=e[SV])!==null&&o!==void 0?o: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 u="",A=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");A==="Error"&&(A="Internal Error"),u+=`${this.format(a).error(A)}: ${e.message} +`;let p=e.clipanion;return typeof p<"u"?p.type==="usage"&&(u+=` +`,u+=this.usage(n)):e.stack&&(u+=`${e.stack.replace(/^.*\n/,"")} +`),u}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:as.defaultContext.colorDepth>1)?uV:AV}getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(o.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};as.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:IV()}});var uI,FV=Et(()=>{Vp();uI=class extends nt{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};uI.paths=[["--clipanion=definitions"]]});var AI,RV=Et(()=>{Vp();AI=class extends nt{async execute(){this.context.stdout.write(this.cli.usage())}};AI.paths=[["-h"],["--help"]]});function uS(t={}){return Ko({definition(e,r){var o;e.addProxy({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){return o.positionals.map(({value:a})=>a)}})}var HT=Et(()=>{Ef()});var fI,TV=Et(()=>{Vp();HT();fI=class extends nt{constructor(){super(...arguments),this.args=uS()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)} +`)}};fI.paths=[["--clipanion=tokens"]]});var pI,NV=Et(()=>{Vp();pI=class extends nt{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};pI.paths=[["-v"],["--version"]]});var jT={};Vt(jT,{DefinitionsCommand:()=>uI,HelpCommand:()=>AI,TokensCommand:()=>fI,VersionCommand:()=>pI});var LV=Et(()=>{FV();RV();TV();NV()});function OV(t,e,r){let[o,a]=Gu(e,r??{}),{arity:n=1}=a,u=t.split(","),A=new Set(u);return Ko({definition(p){p.addOption({names:u,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let I,v=typeof o<"u"?[...o]:void 0;for(let{name:x,value:C}of E.options)!A.has(x)||(I=x,v=v??[],v.push(C));return typeof v<"u"?nd(I??h,v,a.validator):v}})}var MV=Et(()=>{Ef()});function UV(t,e,r){let[o,a]=Gu(e,r??{}),n=t.split(","),u=new Set(n);return Ko({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E=v);return E}})}var _V=Et(()=>{Ef()});function HV(t,e,r){let[o,a]=Gu(e,r??{}),n=t.split(","),u=new Set(n);return Ko({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E??(E=0),v?E+=1:E=0);return E}})}var jV=Et(()=>{Ef()});function GV(t={}){return Ko({definition(e,r){var o;e.addRest({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){let a=u=>{let A=o.positionals[u];return A.extra===el||A.extra===!1&&uu)}})}var qV=Et(()=>{lS();Ef()});function Xje(t,e,r){let[o,a]=Gu(e,r??{}),{arity:n=1}=a,u=t.split(","),A=new Set(u);return Ko({definition(p){p.addOption({names:u,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,I){let v,x=o;typeof a.env<"u"&&I.env[a.env]&&(v=a.env,x=I.env[a.env]);for(let{name:C,value:R}of E.options)!A.has(C)||(v=C,x=R);return typeof x=="string"?nd(v??h,x,a.validator):x}})}function Zje(t={}){let{required:e=!0}=t;return Ko({definition(r,o){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:o,required:t.required})},transformer(r,o,a){var n;for(let u=0;u{lS();Ef()});var ge={};Vt(ge,{Array:()=>OV,Boolean:()=>UV,Counter:()=>HV,Proxy:()=>uS,Rest:()=>GV,String:()=>YV,applyValidator:()=>nd,cleanValidationError:()=>rS,formatError:()=>iI,isOptionSymbol:()=>nI,makeCommandOption:()=>Ko,rerouteArguments:()=>Gu});var KV=Et(()=>{Ef();HT();MV();_V();jV();qV();WV()});var hI={};Vt(hI,{Builtins:()=>jT,Cli:()=>as,Command:()=>nt,Option:()=>ge,UsageError:()=>it,formatMarkdownish:()=>Do,run:()=>xV,runExit:()=>bV});var jt=Et(()=>{tS();kT();Vp();QV();LV();KV()});var VV=_((Pkt,$je)=>{$je.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 ZV=_((bkt,Cf)=>{var JV=ve("fs"),qT=ve("path"),eGe=ve("os"),tGe=ve("crypto"),rGe=VV(),YT=rGe.version,nGe=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function iGe(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,` +`);let o;for(;(o=nGe.exec(r))!=null;){let a=o[1],n=o[2]||"";n=n.trim();let u=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),u==='"'&&(n=n.replace(/\\n/g,` +`),n=n.replace(/\\r/g,"\r")),e[a]=n}return e}function sGe(t){let e=XV(t),r=bs.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let o=zV(t).split(","),a=o.length,n;for(let u=0;u=a)throw A}return bs.parse(n)}function oGe(t){console.log(`[dotenv@${YT}][INFO] ${t}`)}function aGe(t){console.log(`[dotenv@${YT}][WARN] ${t}`)}function GT(t){console.log(`[dotenv@${YT}][DEBUG] ${t}`)}function zV(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 lGe(t,e){let r;try{r=new URL(e)}catch(A){throw A.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"):A}let o=r.password;if(!o)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()}`,u=t.parsed[n];if(!u)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:u,key:o}}function XV(t){let e=qT.resolve(process.cwd(),".env");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(".vault")?e:`${e}.vault`}function cGe(t){return t[0]==="~"?qT.join(eGe.homedir(),t.slice(1)):t}function uGe(t){oGe("Loading env from encrypted .env.vault");let e=bs._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),bs.populate(r,e,t),{parsed:e}}function AGe(t){let e=qT.resolve(process.cwd(),".env"),r="utf8",o=Boolean(t&&t.debug);t&&(t.path!=null&&(e=cGe(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=bs.parse(JV.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),bs.populate(n,a,t),{parsed:a}}catch(a){return o&>(`Failed to load ${e} ${a.message}`),{error:a}}}function fGe(t){let e=XV(t);return zV(t).length===0?bs.configDotenv(t):JV.existsSync(e)?bs._configVault(t):(aGe(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),bs.configDotenv(t))}function pGe(t,e){let r=Buffer.from(e.slice(-64),"hex"),o=Buffer.from(t,"base64"),a=o.slice(0,12),n=o.slice(-16);o=o.slice(12,-16);try{let u=tGe.createDecipheriv("aes-256-gcm",r,a);return u.setAuthTag(n),`${u.update(o)}${u.final()}`}catch(u){let A=u instanceof RangeError,p=u.message==="Invalid key length",h=u.message==="Unsupported state or unable to authenticate data";if(A||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: ",u.code),console.error("Error: ",u.message),u}}function hGe(t,e,r={}){let o=Boolean(r&&r.debug),a=Boolean(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]),o&>(a===!0?`"${n}" is already defined and WAS overwritten`:`"${n}" is already defined and was NOT overwritten`)):t[n]=e[n]}var bs={configDotenv:AGe,_configVault:uGe,_parseVault:sGe,config:fGe,decrypt:pGe,parse:iGe,populate:hGe};Cf.exports.configDotenv=bs.configDotenv;Cf.exports._configVault=bs._configVault;Cf.exports._parseVault=bs._parseVault;Cf.exports.config=bs.config;Cf.exports.decrypt=bs.decrypt;Cf.exports.parse=bs.parse;Cf.exports.populate=bs.populate;Cf.exports=bs});var eJ=_((xkt,$V)=>{"use strict";$V.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var id=_((kkt,WT)=>{"use strict";var gGe=eJ(),tJ=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,o=()=>{r--,e.length>0&&e.shift()()},a=(A,p,...h)=>{r++;let E=gGe(A,...h);p(E),E.then(o,o)},n=(A,p,...h)=>{rnew Promise(h=>n(A,h,...p));return Object.defineProperties(u,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),u};WT.exports=tJ;WT.exports.default=tJ});function Wu(t){return`YN${t.toString(10).padStart(4,"0")}`}function AS(t){let e=Number(t.slice(2));if(typeof wr[e]>"u")throw new Error(`Unknown message name: "${t}"`);return e}var wr,fS=Et(()=>{wr=(Oe=>(Oe[Oe.UNNAMED=0]="UNNAMED",Oe[Oe.EXCEPTION=1]="EXCEPTION",Oe[Oe.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Oe[Oe.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Oe[Oe.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Oe[Oe.BUILD_DISABLED=5]="BUILD_DISABLED",Oe[Oe.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Oe[Oe.MUST_BUILD=7]="MUST_BUILD",Oe[Oe.MUST_REBUILD=8]="MUST_REBUILD",Oe[Oe.BUILD_FAILED=9]="BUILD_FAILED",Oe[Oe.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Oe[Oe.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Oe[Oe.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Oe[Oe.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Oe[Oe.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Oe[Oe.REMOTE_INVALID=15]="REMOTE_INVALID",Oe[Oe.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Oe[Oe.RESOLUTION_PACK=17]="RESOLUTION_PACK",Oe[Oe.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Oe[Oe.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Oe[Oe.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Oe[Oe.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Oe[Oe.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Oe[Oe.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Oe[Oe.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Oe[Oe.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Oe[Oe.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Oe[Oe.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Oe[Oe.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Oe[Oe.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Oe[Oe.FETCH_FAILED=30]="FETCH_FAILED",Oe[Oe.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Oe[Oe.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Oe[Oe.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Oe[Oe.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Oe[Oe.NETWORK_ERROR=35]="NETWORK_ERROR",Oe[Oe.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Oe[Oe.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Oe[Oe.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Oe[Oe.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Oe[Oe.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Oe[Oe.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Oe[Oe.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Oe[Oe.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Oe[Oe.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Oe[Oe.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Oe[Oe.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Oe[Oe.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Oe[Oe.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Oe[Oe.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Oe[Oe.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Oe[Oe.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Oe[Oe.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Oe[Oe.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Oe[Oe.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Oe[Oe.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Oe[Oe.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Oe[Oe.INVALID_MANIFEST=57]="INVALID_MANIFEST",Oe[Oe.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Oe[Oe.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Oe[Oe.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Oe[Oe.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Oe[Oe.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Oe[Oe.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Oe[Oe.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Oe[Oe.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Oe[Oe.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Oe[Oe.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Oe[Oe.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Oe[Oe.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Oe[Oe.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Oe[Oe.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Oe[Oe.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Oe[Oe.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Oe[Oe.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Oe[Oe.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Oe[Oe.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Oe[Oe.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Oe[Oe.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Oe[Oe.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Oe[Oe.NETWORK_DISABLED=80]="NETWORK_DISABLED",Oe[Oe.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Oe[Oe.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Oe[Oe.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",Oe[Oe.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",Oe[Oe.UPDATED_RESOLUTION_RECORD=85]="UPDATED_RESOLUTION_RECORD",Oe[Oe.EXPLAIN_PEER_DEPENDENCIES_CTA=86]="EXPLAIN_PEER_DEPENDENCIES_CTA",Oe[Oe.MIGRATION_SUCCESS=87]="MIGRATION_SUCCESS",Oe[Oe.VERSION_NOTICE=88]="VERSION_NOTICE",Oe[Oe.TIPS_NOTICE=89]="TIPS_NOTICE",Oe[Oe.OFFLINE_MODE_ENABLED=90]="OFFLINE_MODE_ENABLED",Oe))(wr||{})});var gI=_((Fkt,rJ)=>{var dGe="2.0.0",mGe=Number.MAX_SAFE_INTEGER||9007199254740991,yGe=16,EGe=256-6,CGe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];rJ.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:yGe,MAX_SAFE_BUILD_LENGTH:EGe,MAX_SAFE_INTEGER:mGe,RELEASE_TYPES:CGe,SEMVER_SPEC_VERSION:dGe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var dI=_((Rkt,nJ)=>{var wGe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};nJ.exports=wGe});var vy=_((wf,iJ)=>{var{MAX_SAFE_COMPONENT_LENGTH:KT,MAX_SAFE_BUILD_LENGTH:IGe,MAX_LENGTH:BGe}=gI(),vGe=dI();wf=iJ.exports={};var DGe=wf.re=[],SGe=wf.safeRe=[],lr=wf.src=[],cr=wf.t={},PGe=0,VT="[a-zA-Z0-9-]",bGe=[["\\s",1],["\\d",BGe],[VT,IGe]],xGe=t=>{for(let[e,r]of bGe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Jr=(t,e,r)=>{let o=xGe(e),a=PGe++;vGe(t,a,e),cr[t]=a,lr[a]=e,DGe[a]=new RegExp(e,r?"g":void 0),SGe[a]=new RegExp(o,r?"g":void 0)};Jr("NUMERICIDENTIFIER","0|[1-9]\\d*");Jr("NUMERICIDENTIFIERLOOSE","\\d+");Jr("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${VT}*`);Jr("MAINVERSION",`(${lr[cr.NUMERICIDENTIFIER]})\\.(${lr[cr.NUMERICIDENTIFIER]})\\.(${lr[cr.NUMERICIDENTIFIER]})`);Jr("MAINVERSIONLOOSE",`(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})`);Jr("PRERELEASEIDENTIFIER",`(?:${lr[cr.NUMERICIDENTIFIER]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASEIDENTIFIERLOOSE",`(?:${lr[cr.NUMERICIDENTIFIERLOOSE]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASE",`(?:-(${lr[cr.PRERELEASEIDENTIFIER]}(?:\\.${lr[cr.PRERELEASEIDENTIFIER]})*))`);Jr("PRERELEASELOOSE",`(?:-?(${lr[cr.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${lr[cr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr("BUILDIDENTIFIER",`${VT}+`);Jr("BUILD",`(?:\\+(${lr[cr.BUILDIDENTIFIER]}(?:\\.${lr[cr.BUILDIDENTIFIER]})*))`);Jr("FULLPLAIN",`v?${lr[cr.MAINVERSION]}${lr[cr.PRERELEASE]}?${lr[cr.BUILD]}?`);Jr("FULL",`^${lr[cr.FULLPLAIN]}$`);Jr("LOOSEPLAIN",`[v=\\s]*${lr[cr.MAINVERSIONLOOSE]}${lr[cr.PRERELEASELOOSE]}?${lr[cr.BUILD]}?`);Jr("LOOSE",`^${lr[cr.LOOSEPLAIN]}$`);Jr("GTLT","((?:<|>)?=?)");Jr("XRANGEIDENTIFIERLOOSE",`${lr[cr.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Jr("XRANGEIDENTIFIER",`${lr[cr.NUMERICIDENTIFIER]}|x|X|\\*`);Jr("XRANGEPLAIN",`[v=\\s]*(${lr[cr.XRANGEIDENTIFIER]})(?:\\.(${lr[cr.XRANGEIDENTIFIER]})(?:\\.(${lr[cr.XRANGEIDENTIFIER]})(?:${lr[cr.PRERELEASE]})?${lr[cr.BUILD]}?)?)?`);Jr("XRANGEPLAINLOOSE",`[v=\\s]*(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:${lr[cr.PRERELEASELOOSE]})?${lr[cr.BUILD]}?)?)?`);Jr("XRANGE",`^${lr[cr.GTLT]}\\s*${lr[cr.XRANGEPLAIN]}$`);Jr("XRANGELOOSE",`^${lr[cr.GTLT]}\\s*${lr[cr.XRANGEPLAINLOOSE]}$`);Jr("COERCE",`(^|[^\\d])(\\d{1,${KT}})(?:\\.(\\d{1,${KT}}))?(?:\\.(\\d{1,${KT}}))?(?:$|[^\\d])`);Jr("COERCERTL",lr[cr.COERCE],!0);Jr("LONETILDE","(?:~>?)");Jr("TILDETRIM",`(\\s*)${lr[cr.LONETILDE]}\\s+`,!0);wf.tildeTrimReplace="$1~";Jr("TILDE",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAIN]}$`);Jr("TILDELOOSE",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr("LONECARET","(?:\\^)");Jr("CARETTRIM",`(\\s*)${lr[cr.LONECARET]}\\s+`,!0);wf.caretTrimReplace="$1^";Jr("CARET",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAIN]}$`);Jr("CARETLOOSE",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr("COMPARATORLOOSE",`^${lr[cr.GTLT]}\\s*(${lr[cr.LOOSEPLAIN]})$|^$`);Jr("COMPARATOR",`^${lr[cr.GTLT]}\\s*(${lr[cr.FULLPLAIN]})$|^$`);Jr("COMPARATORTRIM",`(\\s*)${lr[cr.GTLT]}\\s*(${lr[cr.LOOSEPLAIN]}|${lr[cr.XRANGEPLAIN]})`,!0);wf.comparatorTrimReplace="$1$2$3";Jr("HYPHENRANGE",`^\\s*(${lr[cr.XRANGEPLAIN]})\\s+-\\s+(${lr[cr.XRANGEPLAIN]})\\s*$`);Jr("HYPHENRANGELOOSE",`^\\s*(${lr[cr.XRANGEPLAINLOOSE]})\\s+-\\s+(${lr[cr.XRANGEPLAINLOOSE]})\\s*$`);Jr("STAR","(<|>)?=?\\s*\\*");Jr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Jr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var pS=_((Tkt,sJ)=>{var kGe=Object.freeze({loose:!0}),QGe=Object.freeze({}),FGe=t=>t?typeof t!="object"?kGe:t:QGe;sJ.exports=FGe});var JT=_((Nkt,lJ)=>{var oJ=/^[0-9]+$/,aJ=(t,e)=>{let r=oJ.test(t),o=oJ.test(e);return r&&o&&(t=+t,e=+e),t===e?0:r&&!o?-1:o&&!r?1:taJ(e,t);lJ.exports={compareIdentifiers:aJ,rcompareIdentifiers:RGe}});var So=_((Lkt,fJ)=>{var hS=dI(),{MAX_LENGTH:cJ,MAX_SAFE_INTEGER:gS}=gI(),{safeRe:uJ,t:AJ}=vy(),TGe=pS(),{compareIdentifiers:Dy}=JT(),tl=class{constructor(e,r){if(r=TGe(r),e instanceof tl){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>cJ)throw new TypeError(`version is longer than ${cJ} characters`);hS("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let o=e.trim().match(r.loose?uJ[AJ.LOOSE]:uJ[AJ.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>gS||this.major<0)throw new TypeError("Invalid major version");if(this.minor>gS||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>gS||this.patch<0)throw new TypeError("Invalid patch version");o[4]?this.prerelease=o[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(".")&&o===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(a)}}if(r){let n=[r,a];o===!1&&(n=[r]),Dy(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}};fJ.exports=tl});var sd=_((Okt,hJ)=>{var pJ=So(),NGe=(t,e,r=!1)=>{if(t instanceof pJ)return t;try{return new pJ(t,e)}catch(o){if(!r)return null;throw o}};hJ.exports=NGe});var dJ=_((Mkt,gJ)=>{var LGe=sd(),OGe=(t,e)=>{let r=LGe(t,e);return r?r.version:null};gJ.exports=OGe});var yJ=_((Ukt,mJ)=>{var MGe=sd(),UGe=(t,e)=>{let r=MGe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};mJ.exports=UGe});var wJ=_((_kt,CJ)=>{var EJ=So(),_Ge=(t,e,r,o,a)=>{typeof r=="string"&&(a=o,o=r,r=void 0);try{return new EJ(t instanceof EJ?t.version:t,r).inc(e,o,a).version}catch{return null}};CJ.exports=_Ge});var vJ=_((Hkt,BJ)=>{var IJ=sd(),HGe=(t,e)=>{let r=IJ(t,null,!0),o=IJ(e,null,!0),a=r.compare(o);if(a===0)return null;let n=a>0,u=n?r:o,A=n?o:r,p=!!u.prerelease.length;if(!!A.prerelease.length&&!p)return!A.patch&&!A.minor?"major":u.patch?"patch":u.minor?"minor":"major";let E=p?"pre":"";return r.major!==o.major?E+"major":r.minor!==o.minor?E+"minor":r.patch!==o.patch?E+"patch":"prerelease"};BJ.exports=HGe});var SJ=_((jkt,DJ)=>{var jGe=So(),GGe=(t,e)=>new jGe(t,e).major;DJ.exports=GGe});var bJ=_((Gkt,PJ)=>{var qGe=So(),YGe=(t,e)=>new qGe(t,e).minor;PJ.exports=YGe});var kJ=_((qkt,xJ)=>{var WGe=So(),KGe=(t,e)=>new WGe(t,e).patch;xJ.exports=KGe});var FJ=_((Ykt,QJ)=>{var VGe=sd(),JGe=(t,e)=>{let r=VGe(t,e);return r&&r.prerelease.length?r.prerelease:null};QJ.exports=JGe});var Ll=_((Wkt,TJ)=>{var RJ=So(),zGe=(t,e,r)=>new RJ(t,r).compare(new RJ(e,r));TJ.exports=zGe});var LJ=_((Kkt,NJ)=>{var XGe=Ll(),ZGe=(t,e,r)=>XGe(e,t,r);NJ.exports=ZGe});var MJ=_((Vkt,OJ)=>{var $Ge=Ll(),eqe=(t,e)=>$Ge(t,e,!0);OJ.exports=eqe});var dS=_((Jkt,_J)=>{var UJ=So(),tqe=(t,e,r)=>{let o=new UJ(t,r),a=new UJ(e,r);return o.compare(a)||o.compareBuild(a)};_J.exports=tqe});var jJ=_((zkt,HJ)=>{var rqe=dS(),nqe=(t,e)=>t.sort((r,o)=>rqe(r,o,e));HJ.exports=nqe});var qJ=_((Xkt,GJ)=>{var iqe=dS(),sqe=(t,e)=>t.sort((r,o)=>iqe(o,r,e));GJ.exports=sqe});var mI=_((Zkt,YJ)=>{var oqe=Ll(),aqe=(t,e,r)=>oqe(t,e,r)>0;YJ.exports=aqe});var mS=_(($kt,WJ)=>{var lqe=Ll(),cqe=(t,e,r)=>lqe(t,e,r)<0;WJ.exports=cqe});var zT=_((eQt,KJ)=>{var uqe=Ll(),Aqe=(t,e,r)=>uqe(t,e,r)===0;KJ.exports=Aqe});var XT=_((tQt,VJ)=>{var fqe=Ll(),pqe=(t,e,r)=>fqe(t,e,r)!==0;VJ.exports=pqe});var yS=_((rQt,JJ)=>{var hqe=Ll(),gqe=(t,e,r)=>hqe(t,e,r)>=0;JJ.exports=gqe});var ES=_((nQt,zJ)=>{var dqe=Ll(),mqe=(t,e,r)=>dqe(t,e,r)<=0;zJ.exports=mqe});var ZT=_((iQt,XJ)=>{var yqe=zT(),Eqe=XT(),Cqe=mI(),wqe=yS(),Iqe=mS(),Bqe=ES(),vqe=(t,e,r,o)=>{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 yqe(t,r,o);case"!=":return Eqe(t,r,o);case">":return Cqe(t,r,o);case">=":return wqe(t,r,o);case"<":return Iqe(t,r,o);case"<=":return Bqe(t,r,o);default:throw new TypeError(`Invalid operator: ${e}`)}};XJ.exports=vqe});var $J=_((sQt,ZJ)=>{var Dqe=So(),Sqe=sd(),{safeRe:CS,t:wS}=vy(),Pqe=(t,e)=>{if(t instanceof Dqe)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(CS[wS.COERCE]);else{let o;for(;(o=CS[wS.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||o.index+o[0].length!==r.index+r[0].length)&&(r=o),CS[wS.COERCERTL].lastIndex=o.index+o[1].length+o[2].length;CS[wS.COERCERTL].lastIndex=-1}return r===null?null:Sqe(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};ZJ.exports=Pqe});var tz=_((oQt,ez)=>{"use strict";ez.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var IS=_((aQt,rz)=>{"use strict";rz.exports=Cn;Cn.Node=od;Cn.create=Cn;function Cn(t){var e=this;if(e instanceof Cn||(e=new Cn),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,o=arguments.length;r1)r=e;else if(this.head)o=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;o!==null;a++)r=t(r,o.value,a),o=o.next;return r};Cn.prototype.reduceReverse=function(t,e){var r,o=this.tail;if(arguments.length>1)r=e;else if(this.tail)o=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;o!==null;a--)r=t(r,o.value,a),o=o.prev;return r};Cn.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};Cn.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};Cn.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 Cn;if(ethis.length&&(e=this.length);for(var o=0,a=this.head;a!==null&&othis.length&&(e=this.length);for(var o=this.length,a=this.tail;a!==null&&o>e;o--)a=a.prev;for(;a!==null&&o>t;o--,a=a.prev)r.push(a.value);return r};Cn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var o=0,a=this.head;a!==null&&o{"use strict";var Qqe=IS(),ad=Symbol("max"),Bf=Symbol("length"),Sy=Symbol("lengthCalculator"),EI=Symbol("allowStale"),ld=Symbol("maxAge"),If=Symbol("dispose"),nz=Symbol("noDisposeOnSet"),xs=Symbol("lruList"),Mc=Symbol("cache"),sz=Symbol("updateAgeOnGet"),$T=()=>1,tN=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[ad]=e.max||1/0,o=e.length||$T;if(this[Sy]=typeof o!="function"?$T:o,this[EI]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[ld]=e.maxAge||0,this[If]=e.dispose,this[nz]=e.noDisposeOnSet||!1,this[sz]=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[ad]=e||1/0,yI(this)}get max(){return this[ad]}set allowStale(e){this[EI]=!!e}get allowStale(){return this[EI]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[ld]=e,yI(this)}get maxAge(){return this[ld]}set lengthCalculator(e){typeof e!="function"&&(e=$T),e!==this[Sy]&&(this[Sy]=e,this[Bf]=0,this[xs].forEach(r=>{r.length=this[Sy](r.value,r.key),this[Bf]+=r.length})),yI(this)}get lengthCalculator(){return this[Sy]}get length(){return this[Bf]}get itemCount(){return this[xs].length}rforEach(e,r){r=r||this;for(let o=this[xs].tail;o!==null;){let a=o.prev;iz(this,e,o,r),o=a}}forEach(e,r){r=r||this;for(let o=this[xs].head;o!==null;){let a=o.next;iz(this,e,o,r),o=a}}keys(){return this[xs].toArray().map(e=>e.key)}values(){return this[xs].toArray().map(e=>e.value)}reset(){this[If]&&this[xs]&&this[xs].length&&this[xs].forEach(e=>this[If](e.key,e.value)),this[Mc]=new Map,this[xs]=new Qqe,this[Bf]=0}dump(){return this[xs].map(e=>BS(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[xs]}set(e,r,o){if(o=o||this[ld],o&&typeof o!="number")throw new TypeError("maxAge must be a number");let a=o?Date.now():0,n=this[Sy](r,e);if(this[Mc].has(e)){if(n>this[ad])return Py(this,this[Mc].get(e)),!1;let p=this[Mc].get(e).value;return this[If]&&(this[nz]||this[If](e,p.value)),p.now=a,p.maxAge=o,p.value=r,this[Bf]+=n-p.length,p.length=n,this.get(e),yI(this),!0}let u=new rN(e,r,n,a,o);return u.length>this[ad]?(this[If]&&this[If](e,r),!1):(this[Bf]+=u.length,this[xs].unshift(u),this[Mc].set(e,this[xs].head),yI(this),!0)}has(e){if(!this[Mc].has(e))return!1;let r=this[Mc].get(e).value;return!BS(this,r)}get(e){return eN(this,e,!0)}peek(e){return eN(this,e,!1)}pop(){let e=this[xs].tail;return e?(Py(this,e),e.value):null}del(e){Py(this,this[Mc].get(e))}load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let a=e[o],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let u=n-r;u>0&&this.set(a.k,a.v,u)}}}prune(){this[Mc].forEach((e,r)=>eN(this,r,!1))}},eN=(t,e,r)=>{let o=t[Mc].get(e);if(o){let a=o.value;if(BS(t,a)){if(Py(t,o),!t[EI])return}else r&&(t[sz]&&(o.value.now=Date.now()),t[xs].unshiftNode(o));return a.value}},BS=(t,e)=>{if(!e||!e.maxAge&&!t[ld])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[ld]&&r>t[ld]},yI=t=>{if(t[Bf]>t[ad])for(let e=t[xs].tail;t[Bf]>t[ad]&&e!==null;){let r=e.prev;Py(t,e),e=r}},Py=(t,e)=>{if(e){let r=e.value;t[If]&&t[If](r.key,r.value),t[Bf]-=r.length,t[Mc].delete(r.key),t[xs].removeNode(e)}},rN=class{constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,this.maxAge=n||0}},iz=(t,e,r,o)=>{let a=r.value;BS(t,a)&&(Py(t,r),t[EI]||(a=void 0)),a&&e.call(o,a.value,a.key,t)};oz.exports=tN});var Ol=_((cQt,Az)=>{var cd=class{constructor(e,r){if(r=Rqe(r),e instanceof cd)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new cd(e.raw,r);if(e instanceof nN)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(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(a=>!cz(a[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&_qe(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 o=((this.options.includePrerelease&&Mqe)|(this.options.loose&&Uqe))+":"+e,a=lz.get(o);if(a)return a;let n=this.options.loose,u=n?Da[zo.HYPHENRANGELOOSE]:Da[zo.HYPHENRANGE];e=e.replace(u,zqe(this.options.includePrerelease)),ci("hyphen replace",e),e=e.replace(Da[zo.COMPARATORTRIM],Nqe),ci("comparator trim",e),e=e.replace(Da[zo.TILDETRIM],Lqe),ci("tilde trim",e),e=e.replace(Da[zo.CARETTRIM],Oqe),ci("caret trim",e);let A=e.split(" ").map(I=>Hqe(I,this.options)).join(" ").split(/\s+/).map(I=>Jqe(I,this.options));n&&(A=A.filter(I=>(ci("loose invalid filter",I,this.options),!!I.match(Da[zo.COMPARATORLOOSE])))),ci("range list",A);let p=new Map,h=A.map(I=>new nN(I,this.options));for(let I of h){if(cz(I))return[I];p.set(I.value,I)}p.size>1&&p.has("")&&p.delete("");let E=[...p.values()];return lz.set(o,E),E}intersects(e,r){if(!(e instanceof cd))throw new TypeError("a Range is required");return this.set.some(o=>uz(o,r)&&e.set.some(a=>uz(a,r)&&o.every(n=>a.every(u=>n.intersects(u,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Tqe(e,this.options)}catch{return!1}for(let r=0;rt.value==="<0.0.0-0",_qe=t=>t.value==="",uz=(t,e)=>{let r=!0,o=t.slice(),a=o.pop();for(;r&&o.length;)r=o.every(n=>a.intersects(n,e)),a=o.pop();return r},Hqe=(t,e)=>(ci("comp",t,e),t=qqe(t,e),ci("caret",t),t=jqe(t,e),ci("tildes",t),t=Wqe(t,e),ci("xrange",t),t=Vqe(t,e),ci("stars",t),t),Xo=t=>!t||t.toLowerCase()==="x"||t==="*",jqe=(t,e)=>t.trim().split(/\s+/).map(r=>Gqe(r,e)).join(" "),Gqe=(t,e)=>{let r=e.loose?Da[zo.TILDELOOSE]:Da[zo.TILDE];return t.replace(r,(o,a,n,u,A)=>{ci("tilde",t,o,a,n,u,A);let p;return Xo(a)?p="":Xo(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Xo(u)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:A?(ci("replaceTilde pr",A),p=`>=${a}.${n}.${u}-${A} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${u} <${a}.${+n+1}.0-0`,ci("tilde return",p),p})},qqe=(t,e)=>t.trim().split(/\s+/).map(r=>Yqe(r,e)).join(" "),Yqe=(t,e)=>{ci("caret",t,e);let r=e.loose?Da[zo.CARETLOOSE]:Da[zo.CARET],o=e.includePrerelease?"-0":"";return t.replace(r,(a,n,u,A,p)=>{ci("caret",t,a,n,u,A,p);let h;return Xo(n)?h="":Xo(u)?h=`>=${n}.0.0${o} <${+n+1}.0.0-0`:Xo(A)?n==="0"?h=`>=${n}.${u}.0${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.0${o} <${+n+1}.0.0-0`:p?(ci("replaceCaret pr",p),n==="0"?u==="0"?h=`>=${n}.${u}.${A}-${p} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}-${p} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A}-${p} <${+n+1}.0.0-0`):(ci("no pr"),n==="0"?u==="0"?h=`>=${n}.${u}.${A}${o} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A} <${+n+1}.0.0-0`),ci("caret return",h),h})},Wqe=(t,e)=>(ci("replaceXRanges",t,e),t.split(/\s+/).map(r=>Kqe(r,e)).join(" ")),Kqe=(t,e)=>{t=t.trim();let r=e.loose?Da[zo.XRANGELOOSE]:Da[zo.XRANGE];return t.replace(r,(o,a,n,u,A,p)=>{ci("xRange",t,o,a,n,u,A,p);let h=Xo(n),E=h||Xo(u),I=E||Xo(A),v=I;return a==="="&&v&&(a=""),p=e.includePrerelease?"-0":"",h?a===">"||a==="<"?o="<0.0.0-0":o="*":a&&v?(E&&(u=0),A=0,a===">"?(a=">=",E?(n=+n+1,u=0,A=0):(u=+u+1,A=0)):a==="<="&&(a="<",E?n=+n+1:u=+u+1),a==="<"&&(p="-0"),o=`${a+n}.${u}.${A}${p}`):E?o=`>=${n}.0.0${p} <${+n+1}.0.0-0`:I&&(o=`>=${n}.${u}.0${p} <${n}.${+u+1}.0-0`),ci("xRange return",o),o})},Vqe=(t,e)=>(ci("replaceStars",t,e),t.trim().replace(Da[zo.STAR],"")),Jqe=(t,e)=>(ci("replaceGTE0",t,e),t.trim().replace(Da[e.includePrerelease?zo.GTE0PRE:zo.GTE0],"")),zqe=t=>(e,r,o,a,n,u,A,p,h,E,I,v,x)=>(Xo(o)?r="":Xo(a)?r=`>=${o}.0.0${t?"-0":""}`:Xo(n)?r=`>=${o}.${a}.0${t?"-0":""}`:u?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Xo(h)?p="":Xo(E)?p=`<${+h+1}.0.0-0`:Xo(I)?p=`<${h}.${+E+1}.0-0`:v?p=`<=${h}.${E}.${I}-${v}`:t?p=`<${h}.${E}.${+I+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),Xqe=(t,e,r)=>{for(let o=0;o0){let a=t[o].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var CI=_((uQt,mz)=>{var wI=Symbol("SemVer ANY"),by=class{static get ANY(){return wI}constructor(e,r){if(r=fz(r),e instanceof by){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),sN("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===wI?this.value="":this.value=this.operator+this.semver.version,sN("comp",this)}parse(e){let r=this.options.loose?pz[hz.COMPARATORLOOSE]:pz[hz.COMPARATOR],o=e.match(r);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:"",this.operator==="="&&(this.operator=""),o[2]?this.semver=new gz(o[2],this.options.loose):this.semver=wI}toString(){return this.value}test(e){if(sN("Comparator.test",e,this.options.loose),this.semver===wI||e===wI)return!0;if(typeof e=="string")try{e=new gz(e,this.options)}catch{return!1}return iN(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof by))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new dz(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new dz(this.value,r).test(e.semver):(r=fz(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("=")||iN(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||iN(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};mz.exports=by;var fz=pS(),{safeRe:pz,t:hz}=vy(),iN=ZT(),sN=dI(),gz=So(),dz=Ol()});var II=_((AQt,yz)=>{var Zqe=Ol(),$qe=(t,e,r)=>{try{e=new Zqe(e,r)}catch{return!1}return e.test(t)};yz.exports=$qe});var Cz=_((fQt,Ez)=>{var e9e=Ol(),t9e=(t,e)=>new e9e(t,e).set.map(r=>r.map(o=>o.value).join(" ").trim().split(" "));Ez.exports=t9e});var Iz=_((pQt,wz)=>{var r9e=So(),n9e=Ol(),i9e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new n9e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===-1)&&(o=u,a=new r9e(o,r))}),o};wz.exports=i9e});var vz=_((hQt,Bz)=>{var s9e=So(),o9e=Ol(),a9e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new o9e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===1)&&(o=u,a=new s9e(o,r))}),o};Bz.exports=a9e});var Pz=_((gQt,Sz)=>{var oN=So(),l9e=Ol(),Dz=mI(),c9e=(t,e)=>{t=new l9e(t,e);let r=new oN("0.0.0");if(t.test(r)||(r=new oN("0.0.0-0"),t.test(r)))return r;r=null;for(let o=0;o{let A=new oN(u.semver.version);switch(u.operator){case">":A.prerelease.length===0?A.patch++:A.prerelease.push(0),A.raw=A.format();case"":case">=":(!n||Dz(A,n))&&(n=A);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),n&&(!r||Dz(r,n))&&(r=n)}return r&&t.test(r)?r:null};Sz.exports=c9e});var xz=_((dQt,bz)=>{var u9e=Ol(),A9e=(t,e)=>{try{return new u9e(t,e).range||"*"}catch{return null}};bz.exports=A9e});var vS=_((mQt,Rz)=>{var f9e=So(),Fz=CI(),{ANY:p9e}=Fz,h9e=Ol(),g9e=II(),kz=mI(),Qz=mS(),d9e=ES(),m9e=yS(),y9e=(t,e,r,o)=>{t=new f9e(t,o),e=new h9e(e,o);let a,n,u,A,p;switch(r){case">":a=kz,n=d9e,u=Qz,A=">",p=">=";break;case"<":a=Qz,n=m9e,u=kz,A="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(g9e(t,e,o))return!1;for(let h=0;h{x.semver===p9e&&(x=new Fz(">=0.0.0")),I=I||x,v=v||x,a(x.semver,I.semver,o)?I=x:u(x.semver,v.semver,o)&&(v=x)}),I.operator===A||I.operator===p||(!v.operator||v.operator===A)&&n(t,v.semver))return!1;if(v.operator===p&&u(t,v.semver))return!1}return!0};Rz.exports=y9e});var Nz=_((yQt,Tz)=>{var E9e=vS(),C9e=(t,e,r)=>E9e(t,e,">",r);Tz.exports=C9e});var Oz=_((EQt,Lz)=>{var w9e=vS(),I9e=(t,e,r)=>w9e(t,e,"<",r);Lz.exports=I9e});var _z=_((CQt,Uz)=>{var Mz=Ol(),B9e=(t,e,r)=>(t=new Mz(t,r),e=new Mz(e,r),t.intersects(e,r));Uz.exports=B9e});var jz=_((wQt,Hz)=>{var v9e=II(),D9e=Ll();Hz.exports=(t,e,r)=>{let o=[],a=null,n=null,u=t.sort((E,I)=>D9e(E,I,r));for(let E of u)v9e(E,e,r)?(n=E,a||(a=E)):(n&&o.push([a,n]),n=null,a=null);a&&o.push([a,null]);let A=[];for(let[E,I]of o)E===I?A.push(E):!I&&E===u[0]?A.push("*"):I?E===u[0]?A.push(`<=${I}`):A.push(`${E} - ${I}`):A.push(`>=${E}`);let p=A.join(" || "),h=typeof e.raw=="string"?e.raw:String(e);return p.length{var Gz=Ol(),lN=CI(),{ANY:aN}=lN,BI=II(),cN=Ll(),S9e=(t,e,r={})=>{if(t===e)return!0;t=new Gz(t,r),e=new Gz(e,r);let o=!1;e:for(let a of t.set){for(let n of e.set){let u=b9e(a,n,r);if(o=o||u!==null,u)continue e}if(o)return!1}return!0},P9e=[new lN(">=0.0.0-0")],qz=[new lN(">=0.0.0")],b9e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===aN){if(e.length===1&&e[0].semver===aN)return!0;r.includePrerelease?t=P9e:t=qz}if(e.length===1&&e[0].semver===aN){if(r.includePrerelease)return!0;e=qz}let o=new Set,a,n;for(let x of t)x.operator===">"||x.operator===">="?a=Yz(a,x,r):x.operator==="<"||x.operator==="<="?n=Wz(n,x,r):o.add(x.semver);if(o.size>1)return null;let u;if(a&&n){if(u=cN(a.semver,n.semver,r),u>0)return null;if(u===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let x of o){if(a&&!BI(x,String(a),r)||n&&!BI(x,String(n),r))return null;for(let C of e)if(!BI(x,String(C),r))return!1;return!0}let A,p,h,E,I=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;I&&I.prerelease.length===1&&n.operator==="<"&&I.prerelease[0]===0&&(I=!1);for(let x of e){if(E=E||x.operator===">"||x.operator===">=",h=h||x.operator==="<"||x.operator==="<=",a){if(v&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===v.major&&x.semver.minor===v.minor&&x.semver.patch===v.patch&&(v=!1),x.operator===">"||x.operator===">="){if(A=Yz(a,x,r),A===x&&A!==a)return!1}else if(a.operator===">="&&!BI(a.semver,String(x),r))return!1}if(n){if(I&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===I.major&&x.semver.minor===I.minor&&x.semver.patch===I.patch&&(I=!1),x.operator==="<"||x.operator==="<="){if(p=Wz(n,x,r),p===x&&p!==n)return!1}else if(n.operator==="<="&&!BI(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&u!==0)return!1}return!(a&&h&&!n&&u!==0||n&&E&&!a&&u!==0||v||I)},Yz=(t,e,r)=>{if(!t)return e;let o=cN(t.semver,e.semver,r);return o>0?t:o<0||e.operator===">"&&t.operator===">="?e:t},Wz=(t,e,r)=>{if(!t)return e;let o=cN(t.semver,e.semver,r);return o<0?t:o>0||e.operator==="<"&&t.operator==="<="?e:t};Kz.exports=S9e});var zn=_((BQt,Xz)=>{var uN=vy(),Jz=gI(),x9e=So(),zz=JT(),k9e=sd(),Q9e=dJ(),F9e=yJ(),R9e=wJ(),T9e=vJ(),N9e=SJ(),L9e=bJ(),O9e=kJ(),M9e=FJ(),U9e=Ll(),_9e=LJ(),H9e=MJ(),j9e=dS(),G9e=jJ(),q9e=qJ(),Y9e=mI(),W9e=mS(),K9e=zT(),V9e=XT(),J9e=yS(),z9e=ES(),X9e=ZT(),Z9e=$J(),$9e=CI(),e5e=Ol(),t5e=II(),r5e=Cz(),n5e=Iz(),i5e=vz(),s5e=Pz(),o5e=xz(),a5e=vS(),l5e=Nz(),c5e=Oz(),u5e=_z(),A5e=jz(),f5e=Vz();Xz.exports={parse:k9e,valid:Q9e,clean:F9e,inc:R9e,diff:T9e,major:N9e,minor:L9e,patch:O9e,prerelease:M9e,compare:U9e,rcompare:_9e,compareLoose:H9e,compareBuild:j9e,sort:G9e,rsort:q9e,gt:Y9e,lt:W9e,eq:K9e,neq:V9e,gte:J9e,lte:z9e,cmp:X9e,coerce:Z9e,Comparator:$9e,Range:e5e,satisfies:t5e,toComparators:r5e,maxSatisfying:n5e,minSatisfying:i5e,minVersion:s5e,validRange:o5e,outside:a5e,gtr:l5e,ltr:c5e,intersects:u5e,simplifyRange:A5e,subset:f5e,SemVer:x9e,re:uN.re,src:uN.src,tokens:uN.t,SEMVER_SPEC_VERSION:Jz.SEMVER_SPEC_VERSION,RELEASE_TYPES:Jz.RELEASE_TYPES,compareIdentifiers:zz.compareIdentifiers,rcompareIdentifiers:zz.rcompareIdentifiers}});var $z=_((vQt,Zz)=>{"use strict";function p5e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ud(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ud)}p5e(ud,Error);ud.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",I;for(I=0;I0){for(I=1,v=1;I{switch(Ne[1]){case"|":return Pe|Ne[3];case"&":return Pe&Ne[3];case"^":return Pe^Ne[3]}},Z)},v="!",x=Re("!",!1),C=function(Z){return!Z},R="(",L=Re("(",!1),U=")",J=Re(")",!1),te=function(Z){return Z},ae=/^[^ \t\n\r()!|&\^]/,fe=ke([" "," ",` +`,"\r","(",")","!","|","&","^"],!0,!1),ce=function(Z){return e.queryPattern.test(Z)},me=function(Z){return e.checkFn(Z)},he=Te("whitespace"),Be=/^[ \t\n\r]/,we=ke([" "," ",` +`,"\r"],!1,!1),g=0,Ee=0,Se=[{line:1,column:1}],le=0,ne=[],ee=0,Ie;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function Fe(){return t.substring(Ee,g)}function At(){return je(Ee,g)}function H(Z,ie){throw ie=ie!==void 0?ie:je(Ee,g),P([Te(Z)],t.substring(Ee,g),ie)}function at(Z,ie){throw ie=ie!==void 0?ie:je(Ee,g),w(Z,ie)}function Re(Z,ie){return{type:"literal",text:Z,ignoreCase:ie}}function ke(Z,ie,Pe){return{type:"class",parts:Z,inverted:ie,ignoreCase:Pe}}function xe(){return{type:"any"}}function He(){return{type:"end"}}function Te(Z){return{type:"other",description:Z}}function Je(Z){var ie=Se[Z],Pe;if(ie)return ie;for(Pe=Z-1;!Se[Pe];)Pe--;for(ie=Se[Pe],ie={line:ie.line,column:ie.column};Pele&&(le=g,ne=[]),ne.push(Z))}function w(Z,ie){return new ud(Z,null,null,ie)}function P(Z,ie,Pe){return new ud(ud.buildMessage(Z,ie),Z,ie,Pe)}function y(){var Z,ie,Pe,Ne,ot,dt,Gt,$t;if(Z=g,ie=F(),ie!==r){for(Pe=[],Ne=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&b(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&b(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&b(E)))),dt!==r?(Gt=X(),Gt!==r?($t=F(),$t!==r?(ot=[ot,dt,Gt,$t],Ne=ot):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Ne!==r;)Pe.push(Ne),Ne=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&b(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&b(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&b(E)))),dt!==r?(Gt=X(),Gt!==r?($t=F(),$t!==r?(ot=[ot,dt,Gt,$t],Ne=ot):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Pe!==r?(Ee=Z,ie=I(ie,Pe),Z=ie):(g=Z,Z=r)}else g=Z,Z=r;return Z}function F(){var Z,ie,Pe,Ne,ot,dt;return Z=g,t.charCodeAt(g)===33?(ie=v,g++):(ie=r,ee===0&&b(x)),ie!==r?(Pe=F(),Pe!==r?(Ee=Z,ie=C(Pe),Z=ie):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=g,t.charCodeAt(g)===40?(ie=R,g++):(ie=r,ee===0&&b(L)),ie!==r?(Pe=X(),Pe!==r?(Ne=y(),Ne!==r?(ot=X(),ot!==r?(t.charCodeAt(g)===41?(dt=U,g++):(dt=r,ee===0&&b(J)),dt!==r?(Ee=Z,ie=te(Ne),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=z())),Z}function z(){var Z,ie,Pe,Ne,ot;if(Z=g,ie=X(),ie!==r){if(Pe=g,Ne=[],ae.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&b(fe)),ot!==r)for(;ot!==r;)Ne.push(ot),ae.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&b(fe));else Ne=r;Ne!==r?Pe=t.substring(Pe,g):Pe=Ne,Pe!==r?(Ee=g,Ne=ce(Pe),Ne?Ne=void 0:Ne=r,Ne!==r?(Ee=Z,ie=me(Pe),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)}else g=Z,Z=r;return Z}function X(){var Z,ie;for(ee++,Z=[],Be.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&b(we));ie!==r;)Z.push(ie),Be.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&b(we));return ee--,Z===r&&(ie=r,ee===0&&b(he)),Z}if(Ie=a(),Ie!==r&&g===t.length)return Ie;throw Ie!==r&&g{var{parse:g5e}=$z();DS.makeParser=(t=/[a-z]+/)=>(e,r)=>g5e(e,{queryPattern:t,checkFn:r});DS.parse=DS.makeParser()});var rX=_((SQt,tX)=>{"use strict";tX.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 AN=_((PQt,iX)=>{var vI=rX(),nX={};for(let t of Object.keys(vI))nX[vI[t]]=t;var Ar={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"]}};iX.exports=Ar;for(let t of Object.keys(Ar)){if(!("channels"in Ar[t]))throw new Error("missing channels property: "+t);if(!("labels"in Ar[t]))throw new Error("missing channel labels property: "+t);if(Ar[t].labels.length!==Ar[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Ar[t];delete Ar[t].channels,delete Ar[t].labels,Object.defineProperty(Ar[t],"channels",{value:e}),Object.defineProperty(Ar[t],"labels",{value:r})}Ar.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(e,r,o),n=Math.max(e,r,o),u=n-a,A,p;n===a?A=0:e===n?A=(r-o)/u:r===n?A=2+(o-e)/u:o===n&&(A=4+(e-r)/u),A=Math.min(A*60,360),A<0&&(A+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=u/(n+a):p=u/(2-n-a),[A,p*100,h*100]};Ar.rgb.hsv=function(t){let e,r,o,a,n,u=t[0]/255,A=t[1]/255,p=t[2]/255,h=Math.max(u,A,p),E=h-Math.min(u,A,p),I=function(v){return(h-v)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=I(u),r=I(A),o=I(p),u===h?a=o-r:A===h?a=1/3+e-o:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};Ar.rgb.hwb=function(t){let e=t[0],r=t[1],o=t[2],a=Ar.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,o));return o=1-1/255*Math.max(e,Math.max(r,o)),[a,n*100,o*100]};Ar.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(1-e,1-r,1-o),n=(1-e-a)/(1-a)||0,u=(1-r-a)/(1-a)||0,A=(1-o-a)/(1-a)||0;return[n*100,u*100,A*100,a*100]};function d5e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Ar.rgb.keyword=function(t){let e=nX[t];if(e)return e;let r=1/0,o;for(let a of Object.keys(vI)){let n=vI[a],u=d5e(t,n);u.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;let a=e*.4124+r*.3576+o*.1805,n=e*.2126+r*.7152+o*.0722,u=e*.0193+r*.1192+o*.9505;return[a*100,n*100,u*100]};Ar.rgb.lab=function(t){let e=Ar.rgb.xyz(t),r=e[0],o=e[1],a=e[2];r/=95.047,o/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*o-16,u=500*(r-o),A=200*(o-a);return[n,u,A]};Ar.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a,n,u;if(r===0)return u=o*255,[u,u,u];o<.5?a=o*(1+r):a=o+r-o*r;let A=2*o-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?u=A+(a-A)*6*n:2*n<1?u=a:3*n<2?u=A+(a-A)*(2/3-n)*6:u=A,p[h]=u*255;return p};Ar.hsl.hsv=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=r,n=Math.max(o,.01);o*=2,r*=o<=1?o:2-o,a*=n<=1?n:2-n;let u=(o+r)/2,A=o===0?2*a/(n+a):2*r/(o+r);return[e,A*100,u*100]};Ar.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,o=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),u=255*o*(1-r),A=255*o*(1-r*n),p=255*o*(1-r*(1-n));switch(o*=255,a){case 0:return[o,p,u];case 1:return[A,o,u];case 2:return[u,o,p];case 3:return[u,A,o];case 4:return[p,u,o];case 5:return[o,u,A]}};Ar.hsv.hsl=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=Math.max(o,.01),n,u;u=(2-r)*o;let A=(2-r)*a;return n=r*a,n/=A<=1?A:2-A,n=n||0,u/=2,[e,n*100,u*100]};Ar.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a=r+o,n;a>1&&(r/=a,o/=a);let u=Math.floor(6*e),A=1-o;n=6*e-u,(u&1)!==0&&(n=1-n);let p=r+n*(A-r),h,E,I;switch(u){default:case 6:case 0:h=A,E=p,I=r;break;case 1:h=p,E=A,I=r;break;case 2:h=r,E=A,I=p;break;case 3:h=r,E=p,I=A;break;case 4:h=p,E=r,I=A;break;case 5:h=A,E=r,I=p;break}return[h*255,E*255,I*255]};Ar.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),u=1-Math.min(1,r*(1-a)+a),A=1-Math.min(1,o*(1-a)+a);return[n*255,u*255,A*255]};Ar.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a,n,u;return a=e*3.2406+r*-1.5372+o*-.4986,n=e*-.9689+r*1.8758+o*.0415,u=e*.0557+r*-.204+o*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,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),u=Math.min(Math.max(0,u),1),[a*255,n*255,u*255]};Ar.xyz.lab=function(t){let e=t[0],r=t[1],o=t[2];e/=95.047,r/=100,o/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let a=116*r-16,n=500*(e-r),u=200*(r-o);return[a,n,u]};Ar.lab.xyz=function(t){let e=t[0],r=t[1],o=t[2],a,n,u;n=(e+16)/116,a=r/500+n,u=n-o/200;let A=n**3,p=a**3,h=u**3;return n=A>.008856?A:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,u=h>.008856?h:(u-16/116)/7.787,a*=95.047,n*=100,u*=108.883,[a,n,u]};Ar.lab.lch=function(t){let e=t[0],r=t[1],o=t[2],a;a=Math.atan2(o,r)*360/2/Math.PI,a<0&&(a+=360);let u=Math.sqrt(r*r+o*o);return[e,u,a]};Ar.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),u=r*Math.sin(a);return[e,n,u]};Ar.rgb.ansi16=function(t,e=null){let[r,o,a]=t,n=e===null?Ar.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let u=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(r/255));return n===2&&(u+=60),u};Ar.hsv.ansi16=function(t){return Ar.rgb.ansi16(Ar.hsv.rgb(t),t[2])};Ar.rgb.ansi256=function(t){let e=t[0],r=t[1],o=t[2];return e===r&&r===o?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(o/255*5)};Ar.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,o=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[o,a,n]};Ar.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,o=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,o,a]};Ar.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};Ar.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(A=>A+A).join(""));let o=parseInt(r,16),a=o>>16&255,n=o>>8&255,u=o&255;return[a,n,u]};Ar.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.max(Math.max(e,r),o),n=Math.min(Math.min(e,r),o),u=a-n,A,p;return u<1?A=n/(1-u):A=0,u<=0?p=0:a===e?p=(r-o)/u%6:a===r?p=2+(o-e)/u:p=4+(e-r)/u,p/=6,p%=1,[p*360,u*100,A*100]};Ar.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=r<.5?2*e*r:2*e*(1-r),a=0;return o<1&&(a=(r-.5*o)/(1-o)),[t[0],o*100,a*100]};Ar.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=e*r,a=0;return o<1&&(a=(r-o)/(1-o)),[t[0],o*100,a*100]};Ar.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100;if(r===0)return[o*255,o*255,o*255];let a=[0,0,0],n=e%1*6,u=n%1,A=1-u,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=u,a[2]=0;break;case 1:a[0]=A,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=u;break;case 3:a[0]=0,a[1]=A,a[2]=1;break;case 4:a[0]=u,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=A}return p=(1-r)*o,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};Ar.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e),a=0;return o>0&&(a=e/o),[t[0],a*100,o*100]};Ar.hcg.hsl=function(t){let e=t[1]/100,o=t[2]/100*(1-e)+.5*e,a=0;return o>0&&o<.5?a=e/(2*o):o>=.5&&o<1&&(a=e/(2*(1-o))),[t[0],a*100,o*100]};Ar.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e);return[t[0],(o-e)*100,(1-o)*100]};Ar.hwb.hcg=function(t){let e=t[1]/100,o=1-t[2]/100,a=o-e,n=0;return a<1&&(n=(o-a)/(1-a)),[t[0],a*100,n*100]};Ar.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Ar.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Ar.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Ar.gray.hsl=function(t){return[0,0,t[0]]};Ar.gray.hsv=Ar.gray.hsl;Ar.gray.hwb=function(t){return[0,100,t[0]]};Ar.gray.cmyk=function(t){return[0,0,0,t[0]]};Ar.gray.lab=function(t){return[t[0],0,0]};Ar.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(o.length)+o};Ar.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var oX=_((bQt,sX)=>{var SS=AN();function m5e(){let t={},e=Object.keys(SS);for(let r=e.length,o=0;o{var fN=AN(),w5e=oX(),xy={},I5e=Object.keys(fN);function B5e(t){let e=function(...r){let o=r[0];return o==null?o:(o.length>1&&(r=o),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function v5e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.length>1&&(r=o);let a=t(r);if(typeof a=="object")for(let n=a.length,u=0;u{xy[t]={},Object.defineProperty(xy[t],"channels",{value:fN[t].channels}),Object.defineProperty(xy[t],"labels",{value:fN[t].labels});let e=w5e(t);Object.keys(e).forEach(o=>{let a=e[o];xy[t][o]=v5e(a),xy[t][o].raw=B5e(a)})});aX.exports=xy});var DI=_((kQt,pX)=>{"use strict";var cX=(t,e)=>(...r)=>`\x1B[${t(...r)+e}m`,uX=(t,e)=>(...r)=>{let o=t(...r);return`\x1B[${38+e};5;${o}m`},AX=(t,e)=>(...r)=>{let o=t(...r);return`\x1B[${38+e};2;${o[0]};${o[1]};${o[2]}m`},PS=t=>t,fX=(t,e,r)=>[t,e,r],ky=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let o=r();return Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0}),o},enumerable:!0,configurable:!0})},pN,Qy=(t,e,r,o)=>{pN===void 0&&(pN=lX());let a=o?10:0,n={};for(let[u,A]of Object.entries(pN)){let p=u==="ansi16"?"ansi":u;u===e?n[p]=t(r,a):typeof A=="object"&&(n[p]=t(A[e],a))}return n};function D5e(){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,o]of Object.entries(e)){for(let[a,n]of Object.entries(o))e[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},o[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:o,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",ky(e.color,"ansi",()=>Qy(cX,"ansi16",PS,!1)),ky(e.color,"ansi256",()=>Qy(uX,"ansi256",PS,!1)),ky(e.color,"ansi16m",()=>Qy(AX,"rgb",fX,!1)),ky(e.bgColor,"ansi",()=>Qy(cX,"ansi16",PS,!0)),ky(e.bgColor,"ansi256",()=>Qy(uX,"ansi256",PS,!0)),ky(e.bgColor,"ansi16m",()=>Qy(AX,"rgb",fX,!0)),e}Object.defineProperty(pX,"exports",{enumerable:!0,get:D5e})});var gX=_((QQt,hX)=>{"use strict";hX.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(r+t),a=e.indexOf("--");return o!==-1&&(a===-1||o{"use strict";var S5e=ve("os"),dX=ve("tty"),Ml=gX(),{env:ls}=process,Jp;Ml("no-color")||Ml("no-colors")||Ml("color=false")||Ml("color=never")?Jp=0:(Ml("color")||Ml("colors")||Ml("color=true")||Ml("color=always"))&&(Jp=1);"FORCE_COLOR"in ls&&(ls.FORCE_COLOR==="true"?Jp=1:ls.FORCE_COLOR==="false"?Jp=0:Jp=ls.FORCE_COLOR.length===0?1:Math.min(parseInt(ls.FORCE_COLOR,10),3));function hN(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function gN(t,e){if(Jp===0)return 0;if(Ml("color=16m")||Ml("color=full")||Ml("color=truecolor"))return 3;if(Ml("color=256"))return 2;if(t&&!e&&Jp===void 0)return 0;let r=Jp||0;if(ls.TERM==="dumb")return r;if(process.platform==="win32"){let o=S5e.release().split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if("CI"in ls)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(o=>o in ls)||ls.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in ls)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ls.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in ls)return 1;if(ls.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ls){let o=parseInt((ls.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ls.TERM_PROGRAM){case"iTerm.app":return o>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ls.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ls.TERM)||"COLORTERM"in ls?1:r}function P5e(t){let e=gN(t,t&&t.isTTY);return hN(e)}mX.exports={supportsColor:P5e,stdout:hN(gN(!0,dX.isatty(1))),stderr:hN(gN(!0,dX.isatty(2)))}});var EX=_((RQt,yX)=>{"use strict";var b5e=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u="";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},x5e=(t,e,r,o)=>{let a=0,n="";do{let u=t[o-1]==="\r";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\r +`:` +`)+r,a=o+1,o=t.indexOf(` +`,a)}while(o!==-1);return n+=t.substr(a),n};yX.exports={stringReplaceAll:b5e,stringEncaseCRLFWithFirstIndex:x5e}});var vX=_((TQt,BX)=>{"use strict";var k5e=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,CX=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Q5e=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,F5e=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,R5e=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function IX(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)):R5e.get(t)||t}function T5e(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(Q5e))r.push(a[2].replace(F5e,(A,p,h)=>p?IX(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function N5e(t){CX.lastIndex=0;let e=[],r;for(;(r=CX.exec(t))!==null;){let o=r[1];if(r[2]){let a=T5e(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function wX(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 o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}BX.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(k5e,(n,u,A,p,h,E)=>{if(u)a.push(IX(u));else if(p){let I=a.join("");a=[],o.push(r.length===0?I:wX(t,r)(I)),r.push({inverse:A,styles:N5e(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");o.push(wX(t,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),o.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 o.join("")}});var IN=_((NQt,bX)=>{"use strict";var SI=DI(),{stdout:yN,stderr:EN}=dN(),{stringReplaceAll:L5e,stringEncaseCRLFWithFirstIndex:O5e}=EX(),DX=["ansi","ansi","ansi256","ansi16m"],Fy=Object.create(null),M5e=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=yN?yN.level:0;t.level=e.level===void 0?r:e.level},CN=class{constructor(e){return SX(e)}},SX=t=>{let e={};return M5e(e,t),e.template=(...r)=>H5e(e.template,...r),Object.setPrototypeOf(e,bS.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=CN,e.template};function bS(t){return SX(t)}for(let[t,e]of Object.entries(SI))Fy[t]={get(){let r=xS(this,wN(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Fy.visible={get(){let t=xS(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var PX=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of PX)Fy[t]={get(){let{level:e}=this;return function(...r){let o=wN(SI.color[DX[e]][t](...r),SI.color.close,this._styler);return xS(this,o,this._isEmpty)}}};for(let t of PX){let e="bg"+t[0].toUpperCase()+t.slice(1);Fy[e]={get(){let{level:r}=this;return function(...o){let a=wN(SI.bgColor[DX[r]][t](...o),SI.bgColor.close,this._styler);return xS(this,a,this._isEmpty)}}}}var U5e=Object.defineProperties(()=>{},{...Fy,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),wN=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},xS=(t,e,r)=>{let o=(...a)=>_5e(o,a.length===1?""+a[0]:a.join(" "));return o.__proto__=U5e,o._generator=t,o._styler=e,o._isEmpty=r,o},_5e=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=L5e(e,r.close,r.open),r=r.parent;let n=e.indexOf(` +`);return n!==-1&&(e=O5e(e,a,o,n)),o+e+a},mN,H5e=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";Ul.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;Ul.find=(t,e)=>t.nodes.find(r=>r.type===e);Ul.exceedsLimit=(t,e,r=1,o)=>o===!1||!Ul.isInteger(t)||!Ul.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=o;Ul.escapeNode=(t,e=0,r)=>{let o=t.nodes[e];!o||(r&&o.type===r||o.type==="open"||o.type==="close")&&o.escaped!==!0&&(o.value="\\"+o.value,o.escaped=!0)};Ul.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;Ul.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Ul.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;Ul.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);Ul.flatten=(...t)=>{let e=[],r=o=>{for(let a=0;a{"use strict";var xX=kS();kX.exports=(t,e={})=>{let r=(o,a={})=>{let n=e.escapeInvalid&&xX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A="";if(o.value)return(n||u)&&xX.isOpenOrClose(o)?"\\"+o.value:o.value;if(o.value)return o.value;if(o.nodes)for(let p of o.nodes)A+=r(p);return A};return r(t)}});var FX=_((MQt,QX)=>{"use strict";QX.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var HX=_((UQt,_X)=>{"use strict";var RX=FX(),Ad=(t,e,r)=>{if(RX(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(RX(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let o={relaxZeros:!0,...r};typeof o.strictZeros=="boolean"&&(o.relaxZeros=o.strictZeros===!1);let a=String(o.relaxZeros),n=String(o.shorthand),u=String(o.capture),A=String(o.wrap),p=t+":"+e+"="+a+n+u+A;if(Ad.cache.hasOwnProperty(p))return Ad.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let R=t+"|"+e;return o.capture?`(${R})`:o.wrap===!1?R:`(?:${R})`}let I=UX(t)||UX(e),v={min:t,max:e,a:h,b:E},x=[],C=[];if(I&&(v.isPadded=I,v.maxLen=String(v.max).length),h<0){let R=E<0?Math.abs(E):1;C=TX(R,Math.abs(h),v,o),h=v.a=0}return E>=0&&(x=TX(h,E,v,o)),v.negatives=C,v.positives=x,v.result=j5e(C,x,o),o.capture===!0?v.result=`(${v.result})`:o.wrap!==!1&&x.length+C.length>1&&(v.result=`(?:${v.result})`),Ad.cache[p]=v,v.result};function j5e(t,e,r){let o=BN(t,e,"-",!1,r)||[],a=BN(e,t,"",!1,r)||[],n=BN(t,e,"-?",!0,r)||[];return o.concat(n).concat(a).join("|")}function G5e(t,e){let r=1,o=1,a=LX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=LX(t,r);for(a=OX(e+1,o)-1;t1&&A.count.pop(),A.count.push(E.count[0]),A.string=A.pattern+MX(A.count),u=h+1;continue}r.isPadded&&(I=V5e(h,r,o)),E.string=I+E.pattern+MX(E.count),n.push(E),u=h+1,A=E}return n}function BN(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!NX(e,"string",A)&&n.push(r+A),o&&NX(e,"string",A)&&n.push(r+A)}return n}function Y5e(t,e){let r=[];for(let o=0;oe?1:e>t?-1:0}function NX(t,e,r){return t.some(o=>o[e]===r)}function LX(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function OX(t,e){return t-t%Math.pow(10,e)}function MX(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function K5e(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function UX(t){return/^-?(0+)\d/.test(t)}function V5e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(o){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${o}}`:`0{${o}}`}}Ad.cache={};Ad.clearCache=()=>Ad.cache={};_X.exports=Ad});var SN=_((_Qt,JX)=>{"use strict";var J5e=ve("util"),qX=HX(),jX=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),z5e=t=>e=>t===!0?Number(e):String(e),vN=t=>typeof t=="number"||typeof t=="string"&&t!=="",bI=t=>Number.isInteger(+t),DN=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},X5e=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,Z5e=(t,e,r)=>{if(e>0){let o=t[0]==="-"?"-":"";o&&(t=t.slice(1)),t=o+t.padStart(o?e-1:e,"0")}return r===!1?String(t):t},GX=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((u,A)=>uA?1:0),t.positives.sort((u,A)=>uA?1:0);let r=e.capture?"":"?:",o="",a="",n;return t.positives.length&&(o=t.positives.join("|")),t.negatives.length&&(a=`-(${r}${t.negatives.join("|")})`),o&&a?n=`${o}|${a}`:n=o||a,e.wrap?`(${r}${n})`:n},YX=(t,e,r,o)=>{if(r)return qX(t,e,{wrap:!1,...o});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},WX=(t,e,r)=>{if(Array.isArray(t)){let o=r.wrap===!0,a=r.capture?"":"?:";return o?`(${a}${t.join("|")})`:t.join("|")}return qX(t,e,r)},KX=(...t)=>new RangeError("Invalid range arguments: "+J5e.inspect(...t)),VX=(t,e,r)=>{if(r.strictRanges===!0)throw KX([t,e]);return[]},e7e=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},t7e=(t,e,r=1,o={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(o.strictRanges===!0)throw KX([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let u=a>n,A=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=DN(A)||DN(p)||DN(h),I=E?Math.max(A.length,p.length,h.length):0,v=E===!1&&X5e(t,e,o)===!1,x=o.transform||z5e(v);if(o.toRegex&&r===1)return YX(GX(t,I),GX(e,I),!0,o);let C={negatives:[],positives:[]},R=J=>C[J<0?"negatives":"positives"].push(Math.abs(J)),L=[],U=0;for(;u?a>=n:a<=n;)o.toRegex===!0&&r>1?R(a):L.push(Z5e(x(a,U),I,v)),a=u?a-r:a+r,U++;return o.toRegex===!0?r>1?$5e(C,o):WX(L,null,{wrap:!1,...o}):L},r7e=(t,e,r=1,o={})=>{if(!bI(t)&&t.length>1||!bI(e)&&e.length>1)return VX(t,e,o);let a=o.transform||(v=>String.fromCharCode(v)),n=`${t}`.charCodeAt(0),u=`${e}`.charCodeAt(0),A=n>u,p=Math.min(n,u),h=Math.max(n,u);if(o.toRegex&&r===1)return YX(p,h,!1,o);let E=[],I=0;for(;A?n>=u:n<=u;)E.push(a(n,I)),n=A?n-r:n+r,I++;return o.toRegex===!0?WX(E,null,{wrap:!1,options:o}):E},RS=(t,e,r,o={})=>{if(e==null&&vN(t))return[t];if(!vN(t)||!vN(e))return VX(t,e,o);if(typeof r=="function")return RS(t,e,1,{transform:r});if(jX(r))return RS(t,e,0,r);let a={...o};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,bI(r)?bI(t)&&bI(e)?t7e(t,e,r,a):r7e(t,e,Math.max(Math.abs(r),1),a):r!=null&&!jX(r)?e7e(r,a):RS(t,e,1,r)};JX.exports=RS});var ZX=_((HQt,XX)=>{"use strict";var n7e=SN(),zX=kS(),i7e=(t,e={})=>{let r=(o,a={})=>{let n=zX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=n===!0||u===!0,p=e.escapeInvalid===!0?"\\":"",h="";if(o.isOpen===!0||o.isClose===!0)return p+o.value;if(o.type==="open")return A?p+o.value:"(";if(o.type==="close")return A?p+o.value:")";if(o.type==="comma")return o.prev.type==="comma"?"":A?o.value:"|";if(o.value)return o.value;if(o.nodes&&o.ranges>0){let E=zX.reduce(o.nodes),I=n7e(...E,{...e,wrap:!1,toRegex:!0});if(I.length!==0)return E.length>1&&I.length>1?`(${I})`:I}if(o.nodes)for(let E of o.nodes)h+=r(E,o);return h};return r(t)};XX.exports=i7e});var tZ=_((jQt,eZ)=>{"use strict";var s7e=SN(),$X=QS(),Ry=kS(),fd=(t="",e="",r=!1)=>{let o=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?Ry.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)o.push(fd(n,e,r));else for(let n of e)r===!0&&typeof n=="string"&&(n=`{${n}}`),o.push(Array.isArray(n)?fd(a,n,r):a+n);return Ry.flatten(o)},o7e=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,o=(a,n={})=>{a.queue=[];let u=n,A=n.queue;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,A=u.queue;if(a.invalid||a.dollar){A.push(fd(A.pop(),$X(a,e)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){A.push(fd(A.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let I=Ry.reduce(a.nodes);if(Ry.exceedsLimit(...I,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let v=s7e(...I,e);v.length===0&&(v=$X(a,e)),A.push(fd(A.pop(),v)),a.nodes=[];return}let p=Ry.encloseBrace(a),h=a.queue,E=a;for(;E.type!=="brace"&&E.type!=="root"&&E.parent;)E=E.parent,h=E.queue;for(let I=0;I{"use strict";rZ.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 lZ=_((qQt,aZ)=>{"use strict";var a7e=QS(),{MAX_LENGTH:iZ,CHAR_BACKSLASH:PN,CHAR_BACKTICK:l7e,CHAR_COMMA:c7e,CHAR_DOT:u7e,CHAR_LEFT_PARENTHESES:A7e,CHAR_RIGHT_PARENTHESES:f7e,CHAR_LEFT_CURLY_BRACE:p7e,CHAR_RIGHT_CURLY_BRACE:h7e,CHAR_LEFT_SQUARE_BRACKET:sZ,CHAR_RIGHT_SQUARE_BRACKET:oZ,CHAR_DOUBLE_QUOTE:g7e,CHAR_SINGLE_QUOTE:d7e,CHAR_NO_BREAK_SPACE:m7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:y7e}=nZ(),E7e=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},o=typeof r.maxLength=="number"?Math.min(iZ,r.maxLength):iZ;if(t.length>o)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${o})`);let a={type:"root",input:t,nodes:[]},n=[a],u=a,A=a,p=0,h=t.length,E=0,I=0,v,x={},C=()=>t[E++],R=L=>{if(L.type==="text"&&A.type==="dot"&&(A.type="text"),A&&A.type==="text"&&L.type==="text"){A.value+=L.value;return}return u.nodes.push(L),L.parent=u,L.prev=A,A=L,L};for(R({type:"bos"});E0){if(u.ranges>0){u.ranges=0;let L=u.nodes.shift();u.nodes=[L,{type:"text",value:a7e(u)}]}R({type:"comma",value:v}),u.commas++;continue}if(v===u7e&&I>0&&u.commas===0){let L=u.nodes;if(I===0||L.length===0){R({type:"text",value:v});continue}if(A.type==="dot"){if(u.range=[],A.value+=v,A.type="range",u.nodes.length!==3&&u.nodes.length!==5){u.invalid=!0,u.ranges=0,A.type="text";continue}u.ranges++,u.args=[];continue}if(A.type==="range"){L.pop();let U=L[L.length-1];U.value+=A.value+v,A=U,u.ranges--;continue}R({type:"dot",value:v});continue}R({type:"text",value:v})}do if(u=n.pop(),u.type!=="root"){u.nodes.forEach(J=>{J.nodes||(J.type==="open"&&(J.isOpen=!0),J.type==="close"&&(J.isClose=!0),J.nodes||(J.type="text"),J.invalid=!0)});let L=n[n.length-1],U=L.nodes.indexOf(u);L.nodes.splice(U,1,...u.nodes)}while(n.length>0);return R({type:"eos"}),a};aZ.exports=E7e});var AZ=_((YQt,uZ)=>{"use strict";var cZ=QS(),C7e=ZX(),w7e=tZ(),I7e=lZ(),rl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let o of t){let a=rl.create(o,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(rl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};rl.parse=(t,e={})=>I7e(t,e);rl.stringify=(t,e={})=>cZ(typeof t=="string"?rl.parse(t,e):t,e);rl.compile=(t,e={})=>(typeof t=="string"&&(t=rl.parse(t,e)),C7e(t,e));rl.expand=(t,e={})=>{typeof t=="string"&&(t=rl.parse(t,e));let r=w7e(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};rl.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?rl.compile(t,e):rl.expand(t,e);uZ.exports=rl});var xI=_((WQt,dZ)=>{"use strict";var B7e=ve("path"),Ku="\\\\/",fZ=`[^${Ku}]`,vf="\\.",v7e="\\+",D7e="\\?",TS="\\/",S7e="(?=.)",pZ="[^/]",bN=`(?:${TS}|$)`,hZ=`(?:^|${TS})`,xN=`${vf}{1,2}${bN}`,P7e=`(?!${vf})`,b7e=`(?!${hZ}${xN})`,x7e=`(?!${vf}{0,1}${bN})`,k7e=`(?!${xN})`,Q7e=`[^.${TS}]`,F7e=`${pZ}*?`,gZ={DOT_LITERAL:vf,PLUS_LITERAL:v7e,QMARK_LITERAL:D7e,SLASH_LITERAL:TS,ONE_CHAR:S7e,QMARK:pZ,END_ANCHOR:bN,DOTS_SLASH:xN,NO_DOT:P7e,NO_DOTS:b7e,NO_DOT_SLASH:x7e,NO_DOTS_SLASH:k7e,QMARK_NO_DOT:Q7e,STAR:F7e,START_ANCHOR:hZ},R7e={...gZ,SLASH_LITERAL:`[${Ku}]`,QMARK:fZ,STAR:`${fZ}*?`,DOTS_SLASH:`${vf}{1,2}(?:[${Ku}]|$)`,NO_DOT:`(?!${vf})`,NO_DOTS:`(?!(?:^|[${Ku}])${vf}{1,2}(?:[${Ku}]|$))`,NO_DOT_SLASH:`(?!${vf}{0,1}(?:[${Ku}]|$))`,NO_DOTS_SLASH:`(?!${vf}{1,2}(?:[${Ku}]|$))`,QMARK_NO_DOT:`[^.${Ku}]`,START_ANCHOR:`(?:^|[${Ku}])`,END_ANCHOR:`(?:[${Ku}]|$)`},T7e={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"};dZ.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:T7e,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:B7e.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?R7e:gZ}}});var kI=_(Sa=>{"use strict";var N7e=ve("path"),L7e=process.platform==="win32",{REGEX_BACKSLASH:O7e,REGEX_REMOVE_BACKSLASH:M7e,REGEX_SPECIAL_CHARS:U7e,REGEX_SPECIAL_CHARS_GLOBAL:_7e}=xI();Sa.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Sa.hasRegexChars=t=>U7e.test(t);Sa.isRegexChar=t=>t.length===1&&Sa.hasRegexChars(t);Sa.escapeRegex=t=>t.replace(_7e,"\\$1");Sa.toPosixSlashes=t=>t.replace(O7e,"/");Sa.removeBackslashes=t=>t.replace(M7e,e=>e==="\\"?"":e);Sa.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Sa.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:L7e===!0||N7e.sep==="\\";Sa.escapeLast=(t,e,r)=>{let o=t.lastIndexOf(e,r);return o===-1?t:t[o-1]==="\\"?Sa.escapeLast(t,e,o-1):`${t.slice(0,o)}\\${t.slice(o)}`};Sa.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Sa.wrapOutput=(t,e={},r={})=>{let o=r.contains?"":"^",a=r.contains?"":"$",n=`${o}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var vZ=_((VQt,BZ)=>{"use strict";var mZ=kI(),{CHAR_ASTERISK:kN,CHAR_AT:H7e,CHAR_BACKWARD_SLASH:QI,CHAR_COMMA:j7e,CHAR_DOT:QN,CHAR_EXCLAMATION_MARK:FN,CHAR_FORWARD_SLASH:IZ,CHAR_LEFT_CURLY_BRACE:RN,CHAR_LEFT_PARENTHESES:TN,CHAR_LEFT_SQUARE_BRACKET:G7e,CHAR_PLUS:q7e,CHAR_QUESTION_MARK:yZ,CHAR_RIGHT_CURLY_BRACE:Y7e,CHAR_RIGHT_PARENTHESES:EZ,CHAR_RIGHT_SQUARE_BRACKET:W7e}=xI(),CZ=t=>t===IZ||t===QI,wZ=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},K7e=(t,e)=>{let r=e||{},o=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],u=[],A=[],p=t,h=-1,E=0,I=0,v=!1,x=!1,C=!1,R=!1,L=!1,U=!1,J=!1,te=!1,ae=!1,fe=!1,ce=0,me,he,Be={value:"",depth:0,isGlob:!1},we=()=>h>=o,g=()=>p.charCodeAt(h+1),Ee=()=>(me=he,p.charCodeAt(++h));for(;h0&&(le=p.slice(0,E),p=p.slice(E),I-=E),Se&&C===!0&&I>0?(Se=p.slice(0,I),ne=p.slice(I)):C===!0?(Se="",ne=p):Se=p,Se&&Se!==""&&Se!=="/"&&Se!==p&&CZ(Se.charCodeAt(Se.length-1))&&(Se=Se.slice(0,-1)),r.unescape===!0&&(ne&&(ne=mZ.removeBackslashes(ne)),Se&&J===!0&&(Se=mZ.removeBackslashes(Se)));let ee={prefix:le,input:t,start:E,base:Se,glob:ne,isBrace:v,isBracket:x,isGlob:C,isExtglob:R,isGlobstar:L,negated:te,negatedExtglob:ae};if(r.tokens===!0&&(ee.maxDepth=0,CZ(he)||u.push(Be),ee.tokens=u),r.parts===!0||r.tokens===!0){let Ie;for(let Fe=0;Fe{"use strict";var NS=xI(),nl=kI(),{MAX_LENGTH:LS,POSIX_REGEX_SOURCE:V7e,REGEX_NON_SPECIAL_CHARS:J7e,REGEX_SPECIAL_CHARS_BACKREF:z7e,REPLACEMENTS:DZ}=NS,X7e=(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=>nl.escapeRegex(a)).join("..")}return r},Ty=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,NN=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=DZ[t]||t;let r={...e},o=typeof r.maxLength=="number"?Math.min(LS,r.maxLength):LS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);let n={type:"bos",value:"",output:r.prepend||""},u=[n],A=r.capture?"":"?:",p=nl.isWindows(e),h=NS.globChars(p),E=NS.extglobChars(h),{DOT_LITERAL:I,PLUS_LITERAL:v,SLASH_LITERAL:x,ONE_CHAR:C,DOTS_SLASH:R,NO_DOT:L,NO_DOT_SLASH:U,NO_DOTS_SLASH:J,QMARK:te,QMARK_NO_DOT:ae,STAR:fe,START_ANCHOR:ce}=h,me=b=>`(${A}(?:(?!${ce}${b.dot?R:I}).)*?)`,he=r.dot?"":L,Be=r.dot?te:ae,we=r.bash===!0?me(r):fe;r.capture&&(we=`(${we})`),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:u};t=nl.removePrefix(t,g),a=t.length;let Ee=[],Se=[],le=[],ne=n,ee,Ie=()=>g.index===a-1,Fe=g.peek=(b=1)=>t[g.index+b],At=g.advance=()=>t[++g.index]||"",H=()=>t.slice(g.index+1),at=(b="",w=0)=>{g.consumed+=b,g.index+=w},Re=b=>{g.output+=b.output!=null?b.output:b.value,at(b.value)},ke=()=>{let b=1;for(;Fe()==="!"&&(Fe(2)!=="("||Fe(3)==="?");)At(),g.start++,b++;return b%2===0?!1:(g.negated=!0,g.start++,!0)},xe=b=>{g[b]++,le.push(b)},He=b=>{g[b]--,le.pop()},Te=b=>{if(ne.type==="globstar"){let w=g.braces>0&&(b.type==="comma"||b.type==="brace"),P=b.extglob===!0||Ee.length&&(b.type==="pipe"||b.type==="paren");b.type!=="slash"&&b.type!=="paren"&&!w&&!P&&(g.output=g.output.slice(0,-ne.output.length),ne.type="star",ne.value="*",ne.output=we,g.output+=ne.output)}if(Ee.length&&b.type!=="paren"&&(Ee[Ee.length-1].inner+=b.value),(b.value||b.output)&&Re(b),ne&&ne.type==="text"&&b.type==="text"){ne.value+=b.value,ne.output=(ne.output||"")+b.value;return}b.prev=ne,u.push(b),ne=b},Je=(b,w)=>{let P={...E[w],conditions:1,inner:""};P.prev=ne,P.parens=g.parens,P.output=g.output;let y=(r.capture?"(":"")+P.open;xe("parens"),Te({type:b,value:w,output:g.output?"":C}),Te({type:"paren",extglob:!0,value:At(),output:y}),Ee.push(P)},je=b=>{let w=b.close+(r.capture?")":""),P;if(b.type==="negate"){let y=we;if(b.inner&&b.inner.length>1&&b.inner.includes("/")&&(y=me(r)),(y!==we||Ie()||/^\)+$/.test(H()))&&(w=b.close=`)$))${y}`),b.inner.includes("*")&&(P=H())&&/^\.[^\\/.]+$/.test(P)){let F=NN(P,{...e,fastpaths:!1}).output;w=b.close=`)${F})${y})`}b.prev.type==="bos"&&(g.negatedExtglob=!0)}Te({type:"paren",extglob:!0,value:ee,output:w}),He("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let b=!1,w=t.replace(z7e,(P,y,F,z,X,Z)=>z==="\\"?(b=!0,P):z==="?"?y?y+z+(X?te.repeat(X.length):""):Z===0?Be+(X?te.repeat(X.length):""):te.repeat(F.length):z==="."?I.repeat(F.length):z==="*"?y?y+z+(X?we:""):we:y?P:`\\${P}`);return b===!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=nl.wrapOutput(w,g,e),g)}for(;!Ie();){if(ee=At(),ee==="\0")continue;if(ee==="\\"){let P=Fe();if(P==="/"&&r.bash!==!0||P==="."||P===";")continue;if(!P){ee+="\\",Te({type:"text",value:ee});continue}let y=/^\\+/.exec(H()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(ee+="\\")),r.unescape===!0?ee=At():ee+=At(),g.brackets===0){Te({type:"text",value:ee});continue}}if(g.brackets>0&&(ee!=="]"||ne.value==="["||ne.value==="[^")){if(r.posix!==!1&&ee===":"){let P=ne.value.slice(1);if(P.includes("[")&&(ne.posix=!0,P.includes(":"))){let y=ne.value.lastIndexOf("["),F=ne.value.slice(0,y),z=ne.value.slice(y+2),X=V7e[z];if(X){ne.value=F+X,g.backtrack=!0,At(),!n.output&&u.indexOf(ne)===1&&(n.output=C);continue}}}(ee==="["&&Fe()!==":"||ee==="-"&&Fe()==="]")&&(ee=`\\${ee}`),ee==="]"&&(ne.value==="["||ne.value==="[^")&&(ee=`\\${ee}`),r.posix===!0&&ee==="!"&&ne.value==="["&&(ee="^"),ne.value+=ee,Re({value:ee});continue}if(g.quotes===1&&ee!=='"'){ee=nl.escapeRegex(ee),ne.value+=ee,Re({value:ee});continue}if(ee==='"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&Te({type:"text",value:ee});continue}if(ee==="("){xe("parens"),Te({type:"paren",value:ee});continue}if(ee===")"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Ty("opening","("));let P=Ee[Ee.length-1];if(P&&g.parens===P.parens+1){je(Ee.pop());continue}Te({type:"paren",value:ee,output:g.parens?")":"\\)"}),He("parens");continue}if(ee==="["){if(r.nobracket===!0||!H().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Ty("closing","]"));ee=`\\${ee}`}else xe("brackets");Te({type:"bracket",value:ee});continue}if(ee==="]"){if(r.nobracket===!0||ne&&ne.type==="bracket"&&ne.value.length===1){Te({type:"text",value:ee,output:`\\${ee}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Ty("opening","["));Te({type:"text",value:ee,output:`\\${ee}`});continue}He("brackets");let P=ne.value.slice(1);if(ne.posix!==!0&&P[0]==="^"&&!P.includes("/")&&(ee=`/${ee}`),ne.value+=ee,Re({value:ee}),r.literalBrackets===!1||nl.hasRegexChars(P))continue;let y=nl.escapeRegex(ne.value);if(g.output=g.output.slice(0,-ne.value.length),r.literalBrackets===!0){g.output+=y,ne.value=y;continue}ne.value=`(${A}${y}|${ne.value})`,g.output+=ne.value;continue}if(ee==="{"&&r.nobrace!==!0){xe("braces");let P={type:"brace",value:ee,output:"(",outputIndex:g.output.length,tokensIndex:g.tokens.length};Se.push(P),Te(P);continue}if(ee==="}"){let P=Se[Se.length-1];if(r.nobrace===!0||!P){Te({type:"text",value:ee,output:ee});continue}let y=")";if(P.dots===!0){let F=u.slice(),z=[];for(let X=F.length-1;X>=0&&(u.pop(),F[X].type!=="brace");X--)F[X].type!=="dots"&&z.unshift(F[X].value);y=X7e(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="\\{",ee=y="\\}",g.output=F;for(let X of z)g.output+=X.output||X.value}Te({type:"brace",value:ee,output:y}),He("braces"),Se.pop();continue}if(ee==="|"){Ee.length>0&&Ee[Ee.length-1].conditions++,Te({type:"text",value:ee});continue}if(ee===","){let P=ee,y=Se[Se.length-1];y&&le[le.length-1]==="braces"&&(y.comma=!0,P="|"),Te({type:"comma",value:ee,output:P});continue}if(ee==="/"){if(ne.type==="dot"&&g.index===g.start+1){g.start=g.index+1,g.consumed="",g.output="",u.pop(),ne=n;continue}Te({type:"slash",value:ee,output:x});continue}if(ee==="."){if(g.braces>0&&ne.type==="dot"){ne.value==="."&&(ne.output=I);let P=Se[Se.length-1];ne.type="dots",ne.output+=ee,ne.value+=ee,P.dots=!0;continue}if(g.braces+g.parens===0&&ne.type!=="bos"&&ne.type!=="slash"){Te({type:"text",value:ee,output:I});continue}Te({type:"dot",value:ee,output:I});continue}if(ee==="?"){if(!(ne&&ne.value==="(")&&r.noextglob!==!0&&Fe()==="("&&Fe(2)!=="?"){Je("qmark",ee);continue}if(ne&&ne.type==="paren"){let y=Fe(),F=ee;if(y==="<"&&!nl.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(ne.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(H()))&&(F=`\\${ee}`),Te({type:"text",value:ee,output:F});continue}if(r.dot!==!0&&(ne.type==="slash"||ne.type==="bos")){Te({type:"qmark",value:ee,output:ae});continue}Te({type:"qmark",value:ee,output:te});continue}if(ee==="!"){if(r.noextglob!==!0&&Fe()==="("&&(Fe(2)!=="?"||!/[!=<:]/.test(Fe(3)))){Je("negate",ee);continue}if(r.nonegate!==!0&&g.index===0){ke();continue}}if(ee==="+"){if(r.noextglob!==!0&&Fe()==="("&&Fe(2)!=="?"){Je("plus",ee);continue}if(ne&&ne.value==="("||r.regex===!1){Te({type:"plus",value:ee,output:v});continue}if(ne&&(ne.type==="bracket"||ne.type==="paren"||ne.type==="brace")||g.parens>0){Te({type:"plus",value:ee});continue}Te({type:"plus",value:v});continue}if(ee==="@"){if(r.noextglob!==!0&&Fe()==="("&&Fe(2)!=="?"){Te({type:"at",extglob:!0,value:ee,output:""});continue}Te({type:"text",value:ee});continue}if(ee!=="*"){(ee==="$"||ee==="^")&&(ee=`\\${ee}`);let P=J7e.exec(H());P&&(ee+=P[0],g.index+=P[0].length),Te({type:"text",value:ee});continue}if(ne&&(ne.type==="globstar"||ne.star===!0)){ne.type="star",ne.star=!0,ne.value+=ee,ne.output=we,g.backtrack=!0,g.globstar=!0,at(ee);continue}let b=H();if(r.noextglob!==!0&&/^\([^?]/.test(b)){Je("star",ee);continue}if(ne.type==="star"){if(r.noglobstar===!0){at(ee);continue}let P=ne.prev,y=P.prev,F=P.type==="slash"||P.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||b[0]&&b[0]!=="/")){Te({type:"star",value:ee,output:""});continue}let X=g.braces>0&&(P.type==="comma"||P.type==="brace"),Z=Ee.length&&(P.type==="pipe"||P.type==="paren");if(!F&&P.type!=="paren"&&!X&&!Z){Te({type:"star",value:ee,output:""});continue}for(;b.slice(0,3)==="/**";){let ie=t[g.index+4];if(ie&&ie!=="/")break;b=b.slice(3),at("/**",3)}if(P.type==="bos"&&Ie()){ne.type="globstar",ne.value+=ee,ne.output=me(r),g.output=ne.output,g.globstar=!0,at(ee);continue}if(P.type==="slash"&&P.prev.type!=="bos"&&!z&&Ie()){g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type="globstar",ne.output=me(r)+(r.strictSlashes?")":"|$)"),ne.value+=ee,g.globstar=!0,g.output+=P.output+ne.output,at(ee);continue}if(P.type==="slash"&&P.prev.type!=="bos"&&b[0]==="/"){let ie=b[1]!==void 0?"|$":"";g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type="globstar",ne.output=`${me(r)}${x}|${x}${ie})`,ne.value+=ee,g.output+=P.output+ne.output,g.globstar=!0,at(ee+At()),Te({type:"slash",value:"/",output:""});continue}if(P.type==="bos"&&b[0]==="/"){ne.type="globstar",ne.value+=ee,ne.output=`(?:^|${x}|${me(r)}${x})`,g.output=ne.output,g.globstar=!0,at(ee+At()),Te({type:"slash",value:"/",output:""});continue}g.output=g.output.slice(0,-ne.output.length),ne.type="globstar",ne.output=me(r),ne.value+=ee,g.output+=ne.output,g.globstar=!0,at(ee);continue}let w={type:"star",value:ee,output:we};if(r.bash===!0){w.output=".*?",(ne.type==="bos"||ne.type==="slash")&&(w.output=he+w.output),Te(w);continue}if(ne&&(ne.type==="bracket"||ne.type==="paren")&&r.regex===!0){w.output=ee,Te(w);continue}(g.index===g.start||ne.type==="slash"||ne.type==="dot")&&(ne.type==="dot"?(g.output+=U,ne.output+=U):r.dot===!0?(g.output+=J,ne.output+=J):(g.output+=he,ne.output+=he),Fe()!=="*"&&(g.output+=C,ne.output+=C)),Te(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty("closing","]"));g.output=nl.escapeLast(g.output,"["),He("brackets")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty("closing",")"));g.output=nl.escapeLast(g.output,"("),He("parens")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty("closing","}"));g.output=nl.escapeLast(g.output,"{"),He("braces")}if(r.strictSlashes!==!0&&(ne.type==="star"||ne.type==="bracket")&&Te({type:"maybe_slash",value:"",output:`${x}?`}),g.backtrack===!0){g.output="";for(let b of g.tokens)g.output+=b.output!=null?b.output:b.value,b.suffix&&(g.output+=b.suffix)}return g};NN.fastpaths=(t,e)=>{let r={...e},o=typeof r.maxLength=="number"?Math.min(LS,r.maxLength):LS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);t=DZ[t]||t;let n=nl.isWindows(e),{DOT_LITERAL:u,SLASH_LITERAL:A,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:I,NO_DOTS_SLASH:v,STAR:x,START_ANCHOR:C}=NS.globChars(n),R=r.dot?I:E,L=r.dot?v:E,U=r.capture?"":"?:",J={negated:!1,prefix:""},te=r.bash===!0?".*?":x;r.capture&&(te=`(${te})`);let ae=he=>he.noglobstar===!0?te:`(${U}(?:(?!${C}${he.dot?h:u}).)*?)`,fe=he=>{switch(he){case"*":return`${R}${p}${te}`;case".*":return`${u}${p}${te}`;case"*.*":return`${R}${te}${u}${p}${te}`;case"*/*":return`${R}${te}${A}${p}${L}${te}`;case"**":return R+ae(r);case"**/*":return`(?:${R}${ae(r)}${A})?${L}${p}${te}`;case"**/*.*":return`(?:${R}${ae(r)}${A})?${L}${te}${u}${p}${te}`;case"**/.*":return`(?:${R}${ae(r)}${A})?${u}${p}${te}`;default:{let Be=/^(.*?)\.(\w+)$/.exec(he);if(!Be)return;let we=fe(Be[1]);return we?we+u+Be[2]:void 0}}},ce=nl.removePrefix(t,J),me=fe(ce);return me&&r.strictSlashes!==!0&&(me+=`${A}?`),me};SZ.exports=NN});var xZ=_((zQt,bZ)=>{"use strict";var Z7e=ve("path"),$7e=vZ(),LN=PZ(),ON=kI(),eYe=xI(),tYe=t=>t&&typeof t=="object"&&!Array.isArray(t),Mi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(v=>Mi(v,e,r));return v=>{for(let x of E){let C=x(v);if(C)return C}return!1}}let o=tYe(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!o)throw new TypeError("Expected pattern to be a non-empty string");let a=e||{},n=ON.isWindows(e),u=o?Mi.compileRe(t,e):Mi.makeRe(t,e,!1,!0),A=u.state;delete u.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Mi(a.ignore,E,r)}let h=(E,I=!1)=>{let{isMatch:v,match:x,output:C}=Mi.test(E,u,e,{glob:t,posix:n}),R={glob:t,state:A,regex:u,posix:n,input:E,output:C,match:x,isMatch:v};return typeof a.onResult=="function"&&a.onResult(R),v===!1?(R.isMatch=!1,I?R:!1):p(E)?(typeof a.onIgnore=="function"&&a.onIgnore(R),R.isMatch=!1,I?R:!1):(typeof a.onMatch=="function"&&a.onMatch(R),I?R:!0)};return r&&(h.state=A),h};Mi.test=(t,e,r,{glob:o,posix:a}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let n=r||{},u=n.format||(a?ON.toPosixSlashes:null),A=t===o,p=A&&u?u(t):t;return A===!1&&(p=u?u(t):t,A=p===o),(A===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?A=Mi.matchBase(t,e,r,a):A=e.exec(p)),{isMatch:Boolean(A),match:A,output:p}};Mi.matchBase=(t,e,r,o=ON.isWindows(r))=>(e instanceof RegExp?e:Mi.makeRe(e,r)).test(Z7e.basename(t));Mi.isMatch=(t,e,r)=>Mi(e,r)(t);Mi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Mi.parse(r,e)):LN(t,{...e,fastpaths:!1});Mi.scan=(t,e)=>$7e(t,e);Mi.compileRe=(t,e,r=!1,o=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?"":"^",u=a.contains?"":"$",A=`${n}(?:${t.output})${u}`;t&&t.negated===!0&&(A=`^(?!${A}).*$`);let p=Mi.toRegex(A,e);return o===!0&&(p.state=t),p};Mi.makeRe=(t,e={},r=!1,o=!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=LN.fastpaths(t,e)),a.output||(a=LN(t,e)),Mi.compileRe(a,e,r,o)};Mi.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/$^/}};Mi.constants=eYe;bZ.exports=Mi});var QZ=_((XQt,kZ)=>{"use strict";kZ.exports=xZ()});var Zo=_((ZQt,NZ)=>{"use strict";var RZ=ve("util"),TZ=AZ(),Vu=QZ(),MN=kI(),FZ=t=>t===""||t==="./",yi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let o=new Set,a=new Set,n=new Set,u=0,A=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E!o.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};yi.match=yi;yi.matcher=(t,e)=>Vu(t,e);yi.isMatch=(t,e,r)=>Vu(e,r)(t);yi.any=yi.isMatch;yi.not=(t,e,r={})=>{e=[].concat(e).map(String);let o=new Set,a=[],n=A=>{r.onResult&&r.onResult(A),a.push(A.output)},u=new Set(yi(t,e,{...r,onResult:n}));for(let A of a)u.has(A)||o.add(A);return[...o]};yi.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${RZ.inspect(t)}"`);if(Array.isArray(e))return e.some(o=>yi.contains(t,o,r));if(typeof e=="string"){if(FZ(t)||FZ(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return yi.isMatch(t,e,{...r,contains:!0})};yi.matchKeys=(t,e,r)=>{if(!MN.isObject(t))throw new TypeError("Expected the first argument to be an object");let o=yi(Object.keys(t),e,r),a={};for(let n of o)a[n]=t[n];return a};yi.some=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(o.some(u=>n(u)))return!0}return!1};yi.every=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(!o.every(u=>n(u)))return!1}return!0};yi.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${RZ.inspect(t)}"`);return[].concat(e).every(o=>Vu(o,r)(t))};yi.capture=(t,e,r)=>{let o=MN.isWindows(r),n=Vu.makeRe(String(t),{...r,capture:!0}).exec(o?MN.toPosixSlashes(e):e);if(n)return n.slice(1).map(u=>u===void 0?"":u)};yi.makeRe=(...t)=>Vu.makeRe(...t);yi.scan=(...t)=>Vu.scan(...t);yi.parse=(t,e)=>{let r=[];for(let o of[].concat(t||[]))for(let a of TZ(String(o),e))r.push(Vu.parse(a,e));return r};yi.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:TZ(t,e)};yi.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return yi.braces(t,{...e,expand:!0})};NZ.exports=yi});var OZ=_(($Qt,LZ)=>{"use strict";LZ.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 OS=_((eFt,MZ)=>{"use strict";var rYe=OZ();MZ.exports=t=>typeof t=="string"?t.replace(rYe(),""):t});var _Z=_((tFt,UZ)=>{function nYe(){this.__data__=[],this.size=0}UZ.exports=nYe});var Ny=_((rFt,HZ)=>{function iYe(t,e){return t===e||t!==t&&e!==e}HZ.exports=iYe});var FI=_((nFt,jZ)=>{var sYe=Ny();function oYe(t,e){for(var r=t.length;r--;)if(sYe(t[r][0],e))return r;return-1}jZ.exports=oYe});var qZ=_((iFt,GZ)=>{var aYe=FI(),lYe=Array.prototype,cYe=lYe.splice;function uYe(t){var e=this.__data__,r=aYe(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():cYe.call(e,r,1),--this.size,!0}GZ.exports=uYe});var WZ=_((sFt,YZ)=>{var AYe=FI();function fYe(t){var e=this.__data__,r=AYe(e,t);return r<0?void 0:e[r][1]}YZ.exports=fYe});var VZ=_((oFt,KZ)=>{var pYe=FI();function hYe(t){return pYe(this.__data__,t)>-1}KZ.exports=hYe});var zZ=_((aFt,JZ)=>{var gYe=FI();function dYe(t,e){var r=this.__data__,o=gYe(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}JZ.exports=dYe});var RI=_((lFt,XZ)=>{var mYe=_Z(),yYe=qZ(),EYe=WZ(),CYe=VZ(),wYe=zZ();function Ly(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var IYe=RI();function BYe(){this.__data__=new IYe,this.size=0}ZZ.exports=BYe});var t$=_((uFt,e$)=>{function vYe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}e$.exports=vYe});var n$=_((AFt,r$)=>{function DYe(t){return this.__data__.get(t)}r$.exports=DYe});var s$=_((fFt,i$)=>{function SYe(t){return this.__data__.has(t)}i$.exports=SYe});var UN=_((pFt,o$)=>{var PYe=typeof global=="object"&&global&&global.Object===Object&&global;o$.exports=PYe});var _l=_((hFt,a$)=>{var bYe=UN(),xYe=typeof self=="object"&&self&&self.Object===Object&&self,kYe=bYe||xYe||Function("return this")();a$.exports=kYe});var pd=_((gFt,l$)=>{var QYe=_l(),FYe=QYe.Symbol;l$.exports=FYe});var f$=_((dFt,A$)=>{var c$=pd(),u$=Object.prototype,RYe=u$.hasOwnProperty,TYe=u$.toString,TI=c$?c$.toStringTag:void 0;function NYe(t){var e=RYe.call(t,TI),r=t[TI];try{t[TI]=void 0;var o=!0}catch{}var a=TYe.call(t);return o&&(e?t[TI]=r:delete t[TI]),a}A$.exports=NYe});var h$=_((mFt,p$)=>{var LYe=Object.prototype,OYe=LYe.toString;function MYe(t){return OYe.call(t)}p$.exports=MYe});var hd=_((yFt,m$)=>{var g$=pd(),UYe=f$(),_Ye=h$(),HYe="[object Null]",jYe="[object Undefined]",d$=g$?g$.toStringTag:void 0;function GYe(t){return t==null?t===void 0?jYe:HYe:d$&&d$ in Object(t)?UYe(t):_Ye(t)}m$.exports=GYe});var il=_((EFt,y$)=>{function qYe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}y$.exports=qYe});var MS=_((CFt,E$)=>{var YYe=hd(),WYe=il(),KYe="[object AsyncFunction]",VYe="[object Function]",JYe="[object GeneratorFunction]",zYe="[object Proxy]";function XYe(t){if(!WYe(t))return!1;var e=YYe(t);return e==VYe||e==JYe||e==KYe||e==zYe}E$.exports=XYe});var w$=_((wFt,C$)=>{var ZYe=_l(),$Ye=ZYe["__core-js_shared__"];C$.exports=$Ye});var v$=_((IFt,B$)=>{var _N=w$(),I$=function(){var t=/[^.]+$/.exec(_N&&_N.keys&&_N.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function eWe(t){return!!I$&&I$ in t}B$.exports=eWe});var HN=_((BFt,D$)=>{var tWe=Function.prototype,rWe=tWe.toString;function nWe(t){if(t!=null){try{return rWe.call(t)}catch{}try{return t+""}catch{}}return""}D$.exports=nWe});var P$=_((vFt,S$)=>{var iWe=MS(),sWe=v$(),oWe=il(),aWe=HN(),lWe=/[\\^$.*+?()[\]{}|]/g,cWe=/^\[object .+?Constructor\]$/,uWe=Function.prototype,AWe=Object.prototype,fWe=uWe.toString,pWe=AWe.hasOwnProperty,hWe=RegExp("^"+fWe.call(pWe).replace(lWe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function gWe(t){if(!oWe(t)||sWe(t))return!1;var e=iWe(t)?hWe:cWe;return e.test(aWe(t))}S$.exports=gWe});var x$=_((DFt,b$)=>{function dWe(t,e){return t?.[e]}b$.exports=dWe});var zp=_((SFt,k$)=>{var mWe=P$(),yWe=x$();function EWe(t,e){var r=yWe(t,e);return mWe(r)?r:void 0}k$.exports=EWe});var US=_((PFt,Q$)=>{var CWe=zp(),wWe=_l(),IWe=CWe(wWe,"Map");Q$.exports=IWe});var NI=_((bFt,F$)=>{var BWe=zp(),vWe=BWe(Object,"create");F$.exports=vWe});var N$=_((xFt,T$)=>{var R$=NI();function DWe(){this.__data__=R$?R$(null):{},this.size=0}T$.exports=DWe});var O$=_((kFt,L$)=>{function SWe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}L$.exports=SWe});var U$=_((QFt,M$)=>{var PWe=NI(),bWe="__lodash_hash_undefined__",xWe=Object.prototype,kWe=xWe.hasOwnProperty;function QWe(t){var e=this.__data__;if(PWe){var r=e[t];return r===bWe?void 0:r}return kWe.call(e,t)?e[t]:void 0}M$.exports=QWe});var H$=_((FFt,_$)=>{var FWe=NI(),RWe=Object.prototype,TWe=RWe.hasOwnProperty;function NWe(t){var e=this.__data__;return FWe?e[t]!==void 0:TWe.call(e,t)}_$.exports=NWe});var G$=_((RFt,j$)=>{var LWe=NI(),OWe="__lodash_hash_undefined__";function MWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=LWe&&e===void 0?OWe:e,this}j$.exports=MWe});var Y$=_((TFt,q$)=>{var UWe=N$(),_We=O$(),HWe=U$(),jWe=H$(),GWe=G$();function Oy(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var W$=Y$(),qWe=RI(),YWe=US();function WWe(){this.size=0,this.__data__={hash:new W$,map:new(YWe||qWe),string:new W$}}K$.exports=WWe});var z$=_((LFt,J$)=>{function KWe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}J$.exports=KWe});var LI=_((OFt,X$)=>{var VWe=z$();function JWe(t,e){var r=t.__data__;return VWe(e)?r[typeof e=="string"?"string":"hash"]:r.map}X$.exports=JWe});var $$=_((MFt,Z$)=>{var zWe=LI();function XWe(t){var e=zWe(this,t).delete(t);return this.size-=e?1:0,e}Z$.exports=XWe});var tee=_((UFt,eee)=>{var ZWe=LI();function $We(t){return ZWe(this,t).get(t)}eee.exports=$We});var nee=_((_Ft,ree)=>{var eKe=LI();function tKe(t){return eKe(this,t).has(t)}ree.exports=tKe});var see=_((HFt,iee)=>{var rKe=LI();function nKe(t,e){var r=rKe(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}iee.exports=nKe});var _S=_((jFt,oee)=>{var iKe=V$(),sKe=$$(),oKe=tee(),aKe=nee(),lKe=see();function My(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var cKe=RI(),uKe=US(),AKe=_S(),fKe=200;function pKe(t,e){var r=this.__data__;if(r instanceof cKe){var o=r.__data__;if(!uKe||o.length{var hKe=RI(),gKe=$Z(),dKe=t$(),mKe=n$(),yKe=s$(),EKe=lee();function Uy(t){var e=this.__data__=new hKe(t);this.size=e.size}Uy.prototype.clear=gKe;Uy.prototype.delete=dKe;Uy.prototype.get=mKe;Uy.prototype.has=yKe;Uy.prototype.set=EKe;cee.exports=Uy});var Aee=_((YFt,uee)=>{var CKe="__lodash_hash_undefined__";function wKe(t){return this.__data__.set(t,CKe),this}uee.exports=wKe});var pee=_((WFt,fee)=>{function IKe(t){return this.__data__.has(t)}fee.exports=IKe});var gee=_((KFt,hee)=>{var BKe=_S(),vKe=Aee(),DKe=pee();function jS(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new BKe;++e{function SKe(t,e){for(var r=-1,o=t==null?0:t.length;++r{function PKe(t,e){return t.has(e)}yee.exports=PKe});var jN=_((zFt,Cee)=>{var bKe=gee(),xKe=mee(),kKe=Eee(),QKe=1,FKe=2;function RKe(t,e,r,o,a,n){var u=r&QKe,A=t.length,p=e.length;if(A!=p&&!(u&&p>A))return!1;var h=n.get(t),E=n.get(e);if(h&&E)return h==e&&E==t;var I=-1,v=!0,x=r&FKe?new bKe:void 0;for(n.set(t,e),n.set(e,t);++I{var TKe=_l(),NKe=TKe.Uint8Array;wee.exports=NKe});var Bee=_((ZFt,Iee)=>{function LKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){r[++e]=[a,o]}),r}Iee.exports=LKe});var Dee=_(($Ft,vee)=>{function OKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}vee.exports=OKe});var kee=_((eRt,xee)=>{var See=pd(),Pee=GN(),MKe=Ny(),UKe=jN(),_Ke=Bee(),HKe=Dee(),jKe=1,GKe=2,qKe="[object Boolean]",YKe="[object Date]",WKe="[object Error]",KKe="[object Map]",VKe="[object Number]",JKe="[object RegExp]",zKe="[object Set]",XKe="[object String]",ZKe="[object Symbol]",$Ke="[object ArrayBuffer]",eVe="[object DataView]",bee=See?See.prototype:void 0,qN=bee?bee.valueOf:void 0;function tVe(t,e,r,o,a,n,u){switch(r){case eVe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case $Ke:return!(t.byteLength!=e.byteLength||!n(new Pee(t),new Pee(e)));case qKe:case YKe:case VKe:return MKe(+t,+e);case WKe:return t.name==e.name&&t.message==e.message;case JKe:case XKe:return t==e+"";case KKe:var A=_Ke;case zKe:var p=o&jKe;if(A||(A=HKe),t.size!=e.size&&!p)return!1;var h=u.get(t);if(h)return h==e;o|=GKe,u.set(t,e);var E=UKe(A(t),A(e),o,a,n,u);return u.delete(t),E;case ZKe:if(qN)return qN.call(t)==qN.call(e)}return!1}xee.exports=tVe});var GS=_((tRt,Qee)=>{function rVe(t,e){for(var r=-1,o=e.length,a=t.length;++r{var nVe=Array.isArray;Fee.exports=nVe});var YN=_((nRt,Ree)=>{var iVe=GS(),sVe=Hl();function oVe(t,e,r){var o=e(t);return sVe(t)?o:iVe(o,r(t))}Ree.exports=oVe});var Nee=_((iRt,Tee)=>{function aVe(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r{function lVe(){return[]}Lee.exports=lVe});var qS=_((oRt,Mee)=>{var cVe=Nee(),uVe=WN(),AVe=Object.prototype,fVe=AVe.propertyIsEnumerable,Oee=Object.getOwnPropertySymbols,pVe=Oee?function(t){return t==null?[]:(t=Object(t),cVe(Oee(t),function(e){return fVe.call(t,e)}))}:uVe;Mee.exports=pVe});var _ee=_((aRt,Uee)=>{function hVe(t,e){for(var r=-1,o=Array(t);++r{function gVe(t){return t!=null&&typeof t=="object"}Hee.exports=gVe});var Gee=_((cRt,jee)=>{var dVe=hd(),mVe=Ju(),yVe="[object Arguments]";function EVe(t){return mVe(t)&&dVe(t)==yVe}jee.exports=EVe});var OI=_((uRt,Wee)=>{var qee=Gee(),CVe=Ju(),Yee=Object.prototype,wVe=Yee.hasOwnProperty,IVe=Yee.propertyIsEnumerable,BVe=qee(function(){return arguments}())?qee:function(t){return CVe(t)&&wVe.call(t,"callee")&&!IVe.call(t,"callee")};Wee.exports=BVe});var Vee=_((ARt,Kee)=>{function vVe(){return!1}Kee.exports=vVe});var UI=_((MI,_y)=>{var DVe=_l(),SVe=Vee(),Xee=typeof MI=="object"&&MI&&!MI.nodeType&&MI,Jee=Xee&&typeof _y=="object"&&_y&&!_y.nodeType&&_y,PVe=Jee&&Jee.exports===Xee,zee=PVe?DVe.Buffer:void 0,bVe=zee?zee.isBuffer:void 0,xVe=bVe||SVe;_y.exports=xVe});var _I=_((fRt,Zee)=>{var kVe=9007199254740991,QVe=/^(?:0|[1-9]\d*)$/;function FVe(t,e){var r=typeof t;return e=e??kVe,!!e&&(r=="number"||r!="symbol"&&QVe.test(t))&&t>-1&&t%1==0&&t{var RVe=9007199254740991;function TVe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=RVe}$ee.exports=TVe});var tte=_((hRt,ete)=>{var NVe=hd(),LVe=YS(),OVe=Ju(),MVe="[object Arguments]",UVe="[object Array]",_Ve="[object Boolean]",HVe="[object Date]",jVe="[object Error]",GVe="[object Function]",qVe="[object Map]",YVe="[object Number]",WVe="[object Object]",KVe="[object RegExp]",VVe="[object Set]",JVe="[object String]",zVe="[object WeakMap]",XVe="[object ArrayBuffer]",ZVe="[object DataView]",$Ve="[object Float32Array]",eJe="[object Float64Array]",tJe="[object Int8Array]",rJe="[object Int16Array]",nJe="[object Int32Array]",iJe="[object Uint8Array]",sJe="[object Uint8ClampedArray]",oJe="[object Uint16Array]",aJe="[object Uint32Array]",ui={};ui[$Ve]=ui[eJe]=ui[tJe]=ui[rJe]=ui[nJe]=ui[iJe]=ui[sJe]=ui[oJe]=ui[aJe]=!0;ui[MVe]=ui[UVe]=ui[XVe]=ui[_Ve]=ui[ZVe]=ui[HVe]=ui[jVe]=ui[GVe]=ui[qVe]=ui[YVe]=ui[WVe]=ui[KVe]=ui[VVe]=ui[JVe]=ui[zVe]=!1;function lJe(t){return OVe(t)&&LVe(t.length)&&!!ui[NVe(t)]}ete.exports=lJe});var WS=_((gRt,rte)=>{function cJe(t){return function(e){return t(e)}}rte.exports=cJe});var KS=_((HI,Hy)=>{var uJe=UN(),nte=typeof HI=="object"&&HI&&!HI.nodeType&&HI,jI=nte&&typeof Hy=="object"&&Hy&&!Hy.nodeType&&Hy,AJe=jI&&jI.exports===nte,KN=AJe&&uJe.process,fJe=function(){try{var t=jI&&jI.require&&jI.require("util").types;return t||KN&&KN.binding&&KN.binding("util")}catch{}}();Hy.exports=fJe});var VS=_((dRt,ote)=>{var pJe=tte(),hJe=WS(),ite=KS(),ste=ite&&ite.isTypedArray,gJe=ste?hJe(ste):pJe;ote.exports=gJe});var VN=_((mRt,ate)=>{var dJe=_ee(),mJe=OI(),yJe=Hl(),EJe=UI(),CJe=_I(),wJe=VS(),IJe=Object.prototype,BJe=IJe.hasOwnProperty;function vJe(t,e){var r=yJe(t),o=!r&&mJe(t),a=!r&&!o&&EJe(t),n=!r&&!o&&!a&&wJe(t),u=r||o||a||n,A=u?dJe(t.length,String):[],p=A.length;for(var h in t)(e||BJe.call(t,h))&&!(u&&(h=="length"||a&&(h=="offset"||h=="parent")||n&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||CJe(h,p)))&&A.push(h);return A}ate.exports=vJe});var JS=_((yRt,lte)=>{var DJe=Object.prototype;function SJe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||DJe;return t===r}lte.exports=SJe});var JN=_((ERt,cte)=>{function PJe(t,e){return function(r){return t(e(r))}}cte.exports=PJe});var Ate=_((CRt,ute)=>{var bJe=JN(),xJe=bJe(Object.keys,Object);ute.exports=xJe});var pte=_((wRt,fte)=>{var kJe=JS(),QJe=Ate(),FJe=Object.prototype,RJe=FJe.hasOwnProperty;function TJe(t){if(!kJe(t))return QJe(t);var e=[];for(var r in Object(t))RJe.call(t,r)&&r!="constructor"&&e.push(r);return e}fte.exports=TJe});var GI=_((IRt,hte)=>{var NJe=MS(),LJe=YS();function OJe(t){return t!=null&&LJe(t.length)&&!NJe(t)}hte.exports=OJe});var zS=_((BRt,gte)=>{var MJe=VN(),UJe=pte(),_Je=GI();function HJe(t){return _Je(t)?MJe(t):UJe(t)}gte.exports=HJe});var zN=_((vRt,dte)=>{var jJe=YN(),GJe=qS(),qJe=zS();function YJe(t){return jJe(t,qJe,GJe)}dte.exports=YJe});var Ete=_((DRt,yte)=>{var mte=zN(),WJe=1,KJe=Object.prototype,VJe=KJe.hasOwnProperty;function JJe(t,e,r,o,a,n){var u=r&WJe,A=mte(t),p=A.length,h=mte(e),E=h.length;if(p!=E&&!u)return!1;for(var I=p;I--;){var v=A[I];if(!(u?v in e:VJe.call(e,v)))return!1}var x=n.get(t),C=n.get(e);if(x&&C)return x==e&&C==t;var R=!0;n.set(t,e),n.set(e,t);for(var L=u;++I{var zJe=zp(),XJe=_l(),ZJe=zJe(XJe,"DataView");Cte.exports=ZJe});var Bte=_((PRt,Ite)=>{var $Je=zp(),eze=_l(),tze=$Je(eze,"Promise");Ite.exports=tze});var Dte=_((bRt,vte)=>{var rze=zp(),nze=_l(),ize=rze(nze,"Set");vte.exports=ize});var Pte=_((xRt,Ste)=>{var sze=zp(),oze=_l(),aze=sze(oze,"WeakMap");Ste.exports=aze});var qI=_((kRt,Tte)=>{var XN=wte(),ZN=US(),$N=Bte(),eL=Dte(),tL=Pte(),Rte=hd(),jy=HN(),bte="[object Map]",lze="[object Object]",xte="[object Promise]",kte="[object Set]",Qte="[object WeakMap]",Fte="[object DataView]",cze=jy(XN),uze=jy(ZN),Aze=jy($N),fze=jy(eL),pze=jy(tL),gd=Rte;(XN&&gd(new XN(new ArrayBuffer(1)))!=Fte||ZN&&gd(new ZN)!=bte||$N&&gd($N.resolve())!=xte||eL&&gd(new eL)!=kte||tL&&gd(new tL)!=Qte)&&(gd=function(t){var e=Rte(t),r=e==lze?t.constructor:void 0,o=r?jy(r):"";if(o)switch(o){case cze:return Fte;case uze:return bte;case Aze:return xte;case fze:return kte;case pze:return Qte}return e});Tte.exports=gd});var jte=_((QRt,Hte)=>{var rL=HS(),hze=jN(),gze=kee(),dze=Ete(),Nte=qI(),Lte=Hl(),Ote=UI(),mze=VS(),yze=1,Mte="[object Arguments]",Ute="[object Array]",XS="[object Object]",Eze=Object.prototype,_te=Eze.hasOwnProperty;function Cze(t,e,r,o,a,n){var u=Lte(t),A=Lte(e),p=u?Ute:Nte(t),h=A?Ute:Nte(e);p=p==Mte?XS:p,h=h==Mte?XS:h;var E=p==XS,I=h==XS,v=p==h;if(v&&Ote(t)){if(!Ote(e))return!1;u=!0,E=!1}if(v&&!E)return n||(n=new rL),u||mze(t)?hze(t,e,r,o,a,n):gze(t,e,p,r,o,a,n);if(!(r&yze)){var x=E&&_te.call(t,"__wrapped__"),C=I&&_te.call(e,"__wrapped__");if(x||C){var R=x?t.value():t,L=C?e.value():e;return n||(n=new rL),a(R,L,r,o,n)}}return v?(n||(n=new rL),dze(t,e,r,o,a,n)):!1}Hte.exports=Cze});var Wte=_((FRt,Yte)=>{var wze=jte(),Gte=Ju();function qte(t,e,r,o,a){return t===e?!0:t==null||e==null||!Gte(t)&&!Gte(e)?t!==t&&e!==e:wze(t,e,r,o,qte,a)}Yte.exports=qte});var Vte=_((RRt,Kte)=>{var Ize=Wte();function Bze(t,e){return Ize(t,e)}Kte.exports=Bze});var nL=_((TRt,Jte)=>{var vze=zp(),Dze=function(){try{var t=vze(Object,"defineProperty");return t({},"",{}),t}catch{}}();Jte.exports=Dze});var ZS=_((NRt,Xte)=>{var zte=nL();function Sze(t,e,r){e=="__proto__"&&zte?zte(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}Xte.exports=Sze});var iL=_((LRt,Zte)=>{var Pze=ZS(),bze=Ny();function xze(t,e,r){(r!==void 0&&!bze(t[e],r)||r===void 0&&!(e in t))&&Pze(t,e,r)}Zte.exports=xze});var ere=_((ORt,$te)=>{function kze(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A=u.length;A--;){var p=u[t?A:++a];if(r(n[p],p,n)===!1)break}return e}}$te.exports=kze});var rre=_((MRt,tre)=>{var Qze=ere(),Fze=Qze();tre.exports=Fze});var sL=_((YI,Gy)=>{var Rze=_l(),ore=typeof YI=="object"&&YI&&!YI.nodeType&&YI,nre=ore&&typeof Gy=="object"&&Gy&&!Gy.nodeType&&Gy,Tze=nre&&nre.exports===ore,ire=Tze?Rze.Buffer:void 0,sre=ire?ire.allocUnsafe:void 0;function Nze(t,e){if(e)return t.slice();var r=t.length,o=sre?sre(r):new t.constructor(r);return t.copy(o),o}Gy.exports=Nze});var $S=_((URt,lre)=>{var are=GN();function Lze(t){var e=new t.constructor(t.byteLength);return new are(e).set(new are(t)),e}lre.exports=Lze});var oL=_((_Rt,cre)=>{var Oze=$S();function Mze(t,e){var r=e?Oze(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}cre.exports=Mze});var eP=_((HRt,ure)=>{function Uze(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r{var _ze=il(),Are=Object.create,Hze=function(){function t(){}return function(e){if(!_ze(e))return{};if(Are)return Are(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();fre.exports=Hze});var tP=_((GRt,hre)=>{var jze=JN(),Gze=jze(Object.getPrototypeOf,Object);hre.exports=Gze});var aL=_((qRt,gre)=>{var qze=pre(),Yze=tP(),Wze=JS();function Kze(t){return typeof t.constructor=="function"&&!Wze(t)?qze(Yze(t)):{}}gre.exports=Kze});var mre=_((YRt,dre)=>{var Vze=GI(),Jze=Ju();function zze(t){return Jze(t)&&Vze(t)}dre.exports=zze});var lL=_((WRt,Ere)=>{var Xze=hd(),Zze=tP(),$ze=Ju(),eXe="[object Object]",tXe=Function.prototype,rXe=Object.prototype,yre=tXe.toString,nXe=rXe.hasOwnProperty,iXe=yre.call(Object);function sXe(t){if(!$ze(t)||Xze(t)!=eXe)return!1;var e=Zze(t);if(e===null)return!0;var r=nXe.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&yre.call(r)==iXe}Ere.exports=sXe});var cL=_((KRt,Cre)=>{function oXe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}Cre.exports=oXe});var rP=_((VRt,wre)=>{var aXe=ZS(),lXe=Ny(),cXe=Object.prototype,uXe=cXe.hasOwnProperty;function AXe(t,e,r){var o=t[e];(!(uXe.call(t,e)&&lXe(o,r))||r===void 0&&!(e in t))&&aXe(t,e,r)}wre.exports=AXe});var dd=_((JRt,Ire)=>{var fXe=rP(),pXe=ZS();function hXe(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n{function gXe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Bre.exports=gXe});var Sre=_((XRt,Dre)=>{var dXe=il(),mXe=JS(),yXe=vre(),EXe=Object.prototype,CXe=EXe.hasOwnProperty;function wXe(t){if(!dXe(t))return yXe(t);var e=mXe(t),r=[];for(var o in t)o=="constructor"&&(e||!CXe.call(t,o))||r.push(o);return r}Dre.exports=wXe});var qy=_((ZRt,Pre)=>{var IXe=VN(),BXe=Sre(),vXe=GI();function DXe(t){return vXe(t)?IXe(t,!0):BXe(t)}Pre.exports=DXe});var xre=_(($Rt,bre)=>{var SXe=dd(),PXe=qy();function bXe(t){return SXe(t,PXe(t))}bre.exports=bXe});var Nre=_((eTt,Tre)=>{var kre=iL(),xXe=sL(),kXe=oL(),QXe=eP(),FXe=aL(),Qre=OI(),Fre=Hl(),RXe=mre(),TXe=UI(),NXe=MS(),LXe=il(),OXe=lL(),MXe=VS(),Rre=cL(),UXe=xre();function _Xe(t,e,r,o,a,n,u){var A=Rre(t,r),p=Rre(e,r),h=u.get(p);if(h){kre(t,r,h);return}var E=n?n(A,p,r+"",t,e,u):void 0,I=E===void 0;if(I){var v=Fre(p),x=!v&&TXe(p),C=!v&&!x&&MXe(p);E=p,v||x||C?Fre(A)?E=A:RXe(A)?E=QXe(A):x?(I=!1,E=xXe(p,!0)):C?(I=!1,E=kXe(p,!0)):E=[]:OXe(p)||Qre(p)?(E=A,Qre(A)?E=UXe(A):(!LXe(A)||NXe(A))&&(E=FXe(p))):I=!1}I&&(u.set(p,E),a(E,p,o,n,u),u.delete(p)),kre(t,r,E)}Tre.exports=_Xe});var Mre=_((tTt,Ore)=>{var HXe=HS(),jXe=iL(),GXe=rre(),qXe=Nre(),YXe=il(),WXe=qy(),KXe=cL();function Lre(t,e,r,o,a){t!==e&&GXe(e,function(n,u){if(a||(a=new HXe),YXe(n))qXe(t,e,u,r,Lre,o,a);else{var A=o?o(KXe(t,u),n,u+"",t,e,a):void 0;A===void 0&&(A=n),jXe(t,u,A)}},WXe)}Ore.exports=Lre});var uL=_((rTt,Ure)=>{function VXe(t){return t}Ure.exports=VXe});var Hre=_((nTt,_re)=>{function JXe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}_re.exports=JXe});var AL=_((iTt,Gre)=>{var zXe=Hre(),jre=Math.max;function XXe(t,e,r){return e=jre(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=jre(o.length-e,0),u=Array(n);++a{function ZXe(t){return function(){return t}}qre.exports=ZXe});var Vre=_((oTt,Kre)=>{var $Xe=Yre(),Wre=nL(),eZe=uL(),tZe=Wre?function(t,e){return Wre(t,"toString",{configurable:!0,enumerable:!1,value:$Xe(e),writable:!0})}:eZe;Kre.exports=tZe});var zre=_((aTt,Jre)=>{var rZe=800,nZe=16,iZe=Date.now;function sZe(t){var e=0,r=0;return function(){var o=iZe(),a=nZe-(o-r);if(r=o,a>0){if(++e>=rZe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Jre.exports=sZe});var fL=_((lTt,Xre)=>{var oZe=Vre(),aZe=zre(),lZe=aZe(oZe);Xre.exports=lZe});var $re=_((cTt,Zre)=>{var cZe=uL(),uZe=AL(),AZe=fL();function fZe(t,e){return AZe(uZe(t,e,cZe),t+"")}Zre.exports=fZe});var tne=_((uTt,ene)=>{var pZe=Ny(),hZe=GI(),gZe=_I(),dZe=il();function mZe(t,e,r){if(!dZe(r))return!1;var o=typeof e;return(o=="number"?hZe(r)&&gZe(e,r.length):o=="string"&&e in r)?pZe(r[e],t):!1}ene.exports=mZe});var nne=_((ATt,rne)=>{var yZe=$re(),EZe=tne();function CZe(t){return yZe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1]:void 0,u=a>2?r[2]:void 0;for(n=t.length>3&&typeof n=="function"?(a--,n):void 0,u&&EZe(r[0],r[1],u)&&(n=a<3?void 0:n,a=1),e=Object(e);++o{var wZe=Mre(),IZe=nne(),BZe=IZe(function(t,e,r,o){wZe(t,e,r,o)});ine.exports=BZe});var _e={};Vt(_e,{AsyncActions:()=>gL,BufferStream:()=>hL,CachingStrategy:()=>mne,DefaultStream:()=>dL,allSettledSafe:()=>Uc,assertNever:()=>yL,bufferStream:()=>Vy,buildIgnorePattern:()=>kZe,convertMapsToIndexableObjects:()=>iP,dynamicRequire:()=>Df,escapeRegExp:()=>DZe,getArrayWithDefault:()=>Yy,getFactoryWithDefault:()=>ol,getMapWithDefault:()=>Wy,getSetWithDefault:()=>md,groupBy:()=>wL,isIndexableObject:()=>pL,isPathLike:()=>QZe,isTaggedYarnVersion:()=>vZe,makeDeferred:()=>hne,mapAndFilter:()=>sl,mapAndFind:()=>KI,mergeIntoTarget:()=>Ene,overrideType:()=>SZe,parseBoolean:()=>VI,parseInt:()=>Jy,parseOptionalBoolean:()=>yne,plural:()=>nP,prettifyAsyncErrors:()=>Ky,prettifySyncErrors:()=>EL,releaseAfterUseAsync:()=>bZe,replaceEnvVariables:()=>sP,sortMap:()=>ks,toMerged:()=>FZe,tryParseOptionalBoolean:()=>CL,validateEnum:()=>PZe});function vZe(t){return!!(Ane.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9]+)?$/))}function nP(t,{one:e,more:r,zero:o=r}){return t===0?o:t===1?e:r}function DZe(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function SZe(t){}function yL(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function PZe(t,e){let r=Object.values(t);if(!r.includes(e))throw new it(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(o=>JSON.stringify(o)).join(", ")})`);return e}function sl(t,e){let r=[];for(let o of t){let a=e(o);a!==fne&&r.push(a)}return r}function KI(t,e){for(let r of t){let o=e(r);if(o!==pne)return o}}function pL(t){return typeof t=="object"&&t!==null}async function Uc(t){let e=await Promise.allSettled(t),r=[];for(let o of e){if(o.status==="rejected")throw o.reason;r.push(o.value)}return r}function iP(t){if(t instanceof Map&&(t=Object.fromEntries(t)),pL(t))for(let e of Object.keys(t)){let r=t[e];pL(r)&&(t[e]=iP(r))}return t}function ol(t,e,r){let o=t.get(e);return typeof o>"u"&&t.set(e,o=r()),o}function Yy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}function md(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}function Wy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}async function bZe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function Ky(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function EL(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Vy(t){return await new Promise((e,r)=>{let o=[];t.on("error",a=>{r(a)}),t.on("data",a=>{o.push(a)}),t.on("end",()=>{e(Buffer.concat(o))})})}function hne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),resolve:t,reject:e}}function gne(t){return WI(ue.fromPortablePath(t))}function dne(path){let physicalPath=ue.fromPortablePath(path),currentCacheEntry=WI.cache[physicalPath];delete WI.cache[physicalPath];let result;try{result=gne(physicalPath);let freshCacheEntry=WI.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{WI.cache[physicalPath]=currentCacheEntry}return result}function xZe(t){let e=one.get(t),r=oe.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let o=dne(t);return one.set(t,{mtime:r.mtimeMs,instance:o}),o}function Df(t,{cachingStrategy:e=2}={}){switch(e){case 0:return dne(t);case 1:return xZe(t);case 2:return gne(t);default:throw new Error("Unsupported caching strategy")}}function ks(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function kZe(t){return t.length===0?null:t.map(e=>`(${cne.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function sP(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...o)=>{let{variableName:a,colon:n,fallback:u}=o[o.length-1],A=Object.hasOwn(e,a),p=e[a];if(p||A&&!n)return p;if(u!=null)return u;throw new it(`Environment variable not found (${a})`)})}function VI(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 yne(t){return typeof t>"u"?t:VI(t)}function CL(t){try{return yne(t)}catch{return null}}function QZe(t){return!!(ue.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}function Ene(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value:n}=(0,lne.default)(o,...a,(u,A)=>{if(Array.isArray(u)&&Array.isArray(A)){for(let p of A)u.find(h=>(0,ane.default)(h,p))||u.push(p);return u}});return n}function FZe(...t){return Ene({},...t)}function wL(t,e){let r=Object.create(null);for(let o of t){let a=o[e];r[a]??=[],r[a].push(o)}return r}function Jy(t){return typeof t=="string"?Number.parseInt(t,10):t}var ane,lne,cne,une,Ane,mL,fne,pne,hL,gL,dL,WI,one,mne,jl=Et(()=>{St();jt();ane=$e(Vte()),lne=$e(sne()),cne=$e(Zo()),une=$e(id()),Ane=$e(zn()),mL=ve("stream");fne=Symbol();sl.skip=fne;pne=Symbol();KI.skip=pne;hL=class extends mL.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,o,a){if(o!=="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))}};gL=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,une.default)(e)}set(e,r){let o=this.deferred.get(e);typeof o>"u"&&this.deferred.set(e,o=hne());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&o.resolve()},n=>{this.promises.get(e)===a&&o.reject(n)}),o.promise}reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(o))}async wait(){await Promise.all(this.promises.values())}},dL=class extends mL.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,o,a){if(o!=="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)}},WI=eval("require");one=new Map;mne=(o=>(o[o.NoCache=0]="NoCache",o[o.FsTime=1]="FsTime",o[o.Node=2]="Node",o))(mne||{})});var zy,IL,BL,Cne=Et(()=>{zy=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(zy||{}),IL=(o=>(o.Dependency="Dependency",o.PeerDependency="PeerDependency",o.PeerDependencyMeta="PeerDependencyMeta",o))(IL||{}),BL=(o=>(o.Inactive="inactive",o.Redundant="redundant",o.Active="active",o))(BL||{})});var de={};Vt(de,{LogLevel:()=>uP,Style:()=>aP,Type:()=>yt,addLogFilterSupport:()=>XI,applyColor:()=>Vs,applyHyperlink:()=>Zy,applyStyle:()=>yd,json:()=>Ed,jsonOrPretty:()=>NZe,mark:()=>bL,pretty:()=>Mt,prettyField:()=>zu,prettyList:()=>PL,prettyTruncatedLocatorList:()=>cP,stripAnsi:()=>Xy.default,supportsColor:()=>lP,supportsHyperlinks:()=>SL,tuple:()=>_c});function wne(t){let e=["KiB","MiB","GiB","TiB"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let o=1024**r;return`${Math.floor(t*100/o)/100} ${e[r-1]}`}function _c(t,e){return[e,t]}function yd(t,e,r){return t.get("enableColors")&&r&2&&(e=zI.default.bold(e)),e}function Vs(t,e,r){if(!t.get("enableColors"))return e;let o=RZe.get(r);if(o===null)return e;let a=typeof o>"u"?r:DL.level>=3?o[0]:o[1],n=typeof a=="number"?vL.ansi256(a):a.startsWith("#")?vL.hex(a):vL[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(e)}function Zy(t,e,r){return t.get("enableHyperlinks")?TZe?`\x1B]8;;${r}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${e}\x1B]8;;\x07`:e}function Mt(t,e,r){if(e===null)return Vs(t,"null",yt.NULL);if(Object.hasOwn(oP,r))return oP[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Vs(t,e,r)}function PL(t,e,r,{separator:o=", "}={}){return[...e].map(a=>Mt(t,a,r)).join(o)}function Ed(t,e){if(t===null)return null;if(Object.hasOwn(oP,e))return oP[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 NZe(t,e,[r,o]){return t?Ed(r,o):Mt(e,r,o)}function bL(t){return{Check:Vs(t,"\u2713","green"),Cross:Vs(t,"\u2718","red"),Question:Vs(t,"?","cyan")}}function zu(t,{label:e,value:[r,o]}){return`${Mt(t,e,yt.CODE)}: ${Mt(t,r,o)}`}function cP(t,e,r){let o=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${jr(t,h)}, `,I=xL(h).length+2;if(o.length>0&&nh).join("").slice(0,-2);let u="X".repeat(a.length.toString().length),A=`and ${u} more.`,p=a.length;for(;o.length>1&&nh).join(""),A.replace(u,Mt(t,p,yt.NUMBER))].join("")}function XI(t,{configuration:e}){let r=e.get("logFilters"),o=new Map,a=new Map,n=[];for(let I of r){let v=I.get("level");if(typeof v>"u")continue;let x=I.get("code");typeof x<"u"&&o.set(x,v);let C=I.get("text");typeof C<"u"&&a.set(C,v);let R=I.get("pattern");typeof R<"u"&&n.push([Ine.default.matcher(R,{contains:!0}),v])}n.reverse();let u=(I,v,x)=>{if(I===null||I===0)return x;let C=a.size>0||n.length>0?(0,Xy.default)(v):v;if(a.size>0){let R=a.get(C);if(typeof R<"u")return R??x}if(n.length>0){for(let[R,L]of n)if(R(C))return L??x}if(o.size>0){let R=o.get(Wu(I));if(typeof R<"u")return R??x}return x},A=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(I,v,x,C){switch(u(v,x,C)){case"info":A.call(I,v,x);break;case"warning":p.call(I,v??0,x);break;case"error":h.call(I,v??0,x);break}};t.reportInfo=function(...I){return E(this,...I,"info")},t.reportWarning=function(...I){return E(this,...I,"warning")},t.reportError=function(...I){return E(this,...I,"error")}}var zI,JI,Ine,Xy,Bne,yt,aP,DL,lP,SL,vL,RZe,Po,oP,TZe,uP,Gl=Et(()=>{St();zI=$e(IN()),JI=$e(td());jt();Ine=$e(Zo()),Xy=$e(OS()),Bne=ve("util");fS();bo();yt={NO_HINT:"NO_HINT",ID:"ID",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",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"},aP=(e=>(e[e.BOLD=2]="BOLD",e))(aP||{}),DL=JI.default.GITHUB_ACTIONS?{level:2}:zI.default.supportsColor?{level:zI.default.supportsColor.level}:{level:0},lP=DL.level!==0,SL=lP&&!JI.default.GITHUB_ACTIONS&&!JI.default.CIRCLE&&!JI.default.GITLAB,vL=new zI.default.Instance(DL),RZe=new Map([[yt.NO_HINT,null],[yt.NULL,["#a853b5",129]],[yt.SCOPE,["#d75f00",166]],[yt.NAME,["#d7875f",173]],[yt.RANGE,["#00afaf",37]],[yt.REFERENCE,["#87afff",111]],[yt.NUMBER,["#ffd700",220]],[yt.PATH,["#d75fd7",170]],[yt.URL,["#d75fd7",170]],[yt.ADDED,["#5faf00",70]],[yt.REMOVED,["#ff3131",160]],[yt.CODE,["#87afff",111]],[yt.SIZE,["#ffd700",220]]]),Po=t=>t;oP={[yt.ID]:Po({pretty:(t,e)=>typeof e=="number"?Vs(t,`${e}`,yt.NUMBER):Vs(t,e,yt.CODE),json:t=>t}),[yt.INSPECT]:Po({pretty:(t,e)=>(0,Bne.inspect)(e,{depth:1/0,colors:t.get("enableColors"),compact:!0,breakLength:1/0}),json:t=>t}),[yt.NUMBER]:Po({pretty:(t,e)=>Vs(t,`${e}`,yt.NUMBER),json:t=>t}),[yt.IDENT]:Po({pretty:(t,e)=>cs(t,e),json:t=>fn(t)}),[yt.LOCATOR]:Po({pretty:(t,e)=>jr(t,e),json:t=>ba(t)}),[yt.DESCRIPTOR]:Po({pretty:(t,e)=>Gn(t,e),json:t=>Pa(t)}),[yt.RESOLUTION]:Po({pretty:(t,{descriptor:e,locator:r})=>ZI(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:Pa(t),locator:e!==null?ba(e):null})}),[yt.DEPENDENT]:Po({pretty:(t,{locator:e,descriptor:r})=>kL(t,e,r),json:({locator:t,descriptor:e})=>({locator:ba(t),descriptor:Pa(e)})}),[yt.PACKAGE_EXTENSION]:Po({pretty:(t,e)=>{switch(e.type){case"Dependency":return`${cs(t,e.parentDescriptor)} \u27A4 ${Vs(t,"dependencies",yt.CODE)} \u27A4 ${cs(t,e.descriptor)}`;case"PeerDependency":return`${cs(t,e.parentDescriptor)} \u27A4 ${Vs(t,"peerDependencies",yt.CODE)} \u27A4 ${cs(t,e.descriptor)}`;case"PeerDependencyMeta":return`${cs(t,e.parentDescriptor)} \u27A4 ${Vs(t,"peerDependenciesMeta",yt.CODE)} \u27A4 ${cs(t,Js(e.selector))} \u27A4 ${Vs(t,e.key,yt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case"Dependency":return`${fn(t.parentDescriptor)} > ${fn(t.descriptor)}`;case"PeerDependency":return`${fn(t.parentDescriptor)} >> ${fn(t.descriptor)}`;case"PeerDependencyMeta":return`${fn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[yt.SETTING]:Po({pretty:(t,e)=>(t.get(e),Zy(t,Vs(t,e,yt.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[yt.DURATION]:Po({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),o=Math.ceil((e-r*60*1e3)/1e3);return o===0?`${r}m`:`${r}m ${o}s`}else{let r=Math.floor(e/1e3),o=e-r*1e3;return o===0?`${r}s`:`${r}s ${o}ms`}},json:t=>t}),[yt.SIZE]:Po({pretty:(t,e)=>Vs(t,wne(e),yt.NUMBER),json:t=>t}),[yt.SIZE_DIFF]:Po({pretty:(t,e)=>{let r=e>=0?"+":"-",o=r==="+"?yt.REMOVED:yt.ADDED;return Vs(t,`${r} ${wne(Math.max(Math.abs(e),1))}`,o)},json:t=>t}),[yt.PATH]:Po({pretty:(t,e)=>Vs(t,ue.fromPortablePath(e),yt.PATH),json:t=>ue.fromPortablePath(t)}),[yt.MARKDOWN]:Po({pretty:(t,{text:e,format:r,paragraphs:o})=>Do(e,{format:r,paragraphs:o}),json:({text:t})=>t}),[yt.MARKDOWN_INLINE]:Po({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\n])*?)\1/g,(r,o,a)=>Mt(t,o+a+o,yt.CODE)),e=e.replace(/(\*\*)((?:.|[\n])*?)\1/g,(r,o,a)=>yd(t,a,2)),e),json:t=>t})};TZe=!!process.env.KONSOLE_VERSION;uP=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))(uP||{})});var vne=_($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.splitWhen=$y.flatten=void 0;function LZe(t){return t.reduce((e,r)=>[].concat(e,r),[])}$y.flatten=LZe;function OZe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o].push(a);return r}$y.splitWhen=OZe});var Dne=_(AP=>{"use strict";Object.defineProperty(AP,"__esModule",{value:!0});AP.isEnoentCodeError=void 0;function MZe(t){return t.code==="ENOENT"}AP.isEnoentCodeError=MZe});var Sne=_(fP=>{"use strict";Object.defineProperty(fP,"__esModule",{value:!0});fP.createDirentFromStats=void 0;var QL=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 UZe(t,e){return new QL(t,e)}fP.createDirentFromStats=UZe});var Pne=_(Xu=>{"use strict";Object.defineProperty(Xu,"__esModule",{value:!0});Xu.removeLeadingDotSegment=Xu.escape=Xu.makeAbsolute=Xu.unixify=void 0;var _Ze=ve("path"),HZe=2,jZe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function GZe(t){return t.replace(/\\/g,"/")}Xu.unixify=GZe;function qZe(t,e){return _Ze.resolve(t,e)}Xu.makeAbsolute=qZe;function YZe(t){return t.replace(jZe,"\\$2")}Xu.escape=YZe;function WZe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(HZe)}return t}Xu.removeLeadingDotSegment=WZe});var xne=_((PTt,bne)=>{bne.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 Fne=_((bTt,Qne)=>{var KZe=xne(),kne={"{":"}","(":")","[":"]"},VZe=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,o=-2,a=-2,n=-2,u=-2;ee&&(u===-1||u>o||(u=t.indexOf("\\",e),u===-1||u>o)))||a!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(a=t.indexOf("}",e),a>e&&(u=t.indexOf("\\",e),u===-1||u>a))||n!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(n=t.indexOf(")",e),n>e&&(u=t.indexOf("\\",e),u===-1||u>n))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(rr&&(u=t.indexOf("\\",r),u===-1||u>n))))return!0;if(t[e]==="\\"){var A=t[e+1];e+=2;var p=kne[A];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]==="!")return!0}else e++}return!1},JZe=function(t){if(t[0]==="!")return!0;for(var e=0;e{"use strict";var zZe=Fne(),XZe=ve("path").posix.dirname,ZZe=ve("os").platform()==="win32",FL="/",$Ze=/\\/g,e$e=/[\{\[].*[\}\]]$/,t$e=/(^|[^\\])([\{\[]|\([^\)]+$)/,r$e=/\\([\!\*\?\|\[\]\(\)\{\}])/g;Rne.exports=function(e,r){var o=Object.assign({flipBackslashes:!0},r);o.flipBackslashes&&ZZe&&e.indexOf(FL)<0&&(e=e.replace($Ze,FL)),e$e.test(e)&&(e+=FL),e+="a";do e=XZe(e);while(zZe(e)||t$e.test(e));return e.replace(r$e,"$1")}});var jne=_(Gr=>{"use strict";Object.defineProperty(Gr,"__esModule",{value:!0});Gr.matchAny=Gr.convertPatternsToRe=Gr.makeRe=Gr.getPatternParts=Gr.expandBraceExpansion=Gr.expandPatternsWithBraceExpansion=Gr.isAffectDepthOfReadingPattern=Gr.endsWithSlashGlobStar=Gr.hasGlobStar=Gr.getBaseDirectory=Gr.isPatternRelatedToParentDirectory=Gr.getPatternsOutsideCurrentDirectory=Gr.getPatternsInsideCurrentDirectory=Gr.getPositivePatterns=Gr.getNegativePatterns=Gr.isPositivePattern=Gr.isNegativePattern=Gr.convertToNegativePattern=Gr.convertToPositivePattern=Gr.isDynamicPattern=Gr.isStaticPattern=void 0;var n$e=ve("path"),i$e=Tne(),RL=Zo(),Nne="**",s$e="\\",o$e=/[*?]|^!/,a$e=/\[[^[]*]/,l$e=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,c$e=/[!*+?@]\([^(]*\)/,u$e=/,|\.\./;function Lne(t,e={}){return!One(t,e)}Gr.isStaticPattern=Lne;function One(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(s$e)||o$e.test(t)||a$e.test(t)||l$e.test(t)||e.extglob!==!1&&c$e.test(t)||e.braceExpansion!==!1&&A$e(t))}Gr.isDynamicPattern=One;function A$e(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let o=t.slice(e,r);return u$e.test(o)}function f$e(t){return pP(t)?t.slice(1):t}Gr.convertToPositivePattern=f$e;function p$e(t){return"!"+t}Gr.convertToNegativePattern=p$e;function pP(t){return t.startsWith("!")&&t[1]!=="("}Gr.isNegativePattern=pP;function Mne(t){return!pP(t)}Gr.isPositivePattern=Mne;function h$e(t){return t.filter(pP)}Gr.getNegativePatterns=h$e;function g$e(t){return t.filter(Mne)}Gr.getPositivePatterns=g$e;function d$e(t){return t.filter(e=>!TL(e))}Gr.getPatternsInsideCurrentDirectory=d$e;function m$e(t){return t.filter(TL)}Gr.getPatternsOutsideCurrentDirectory=m$e;function TL(t){return t.startsWith("..")||t.startsWith("./..")}Gr.isPatternRelatedToParentDirectory=TL;function y$e(t){return i$e(t,{flipBackslashes:!1})}Gr.getBaseDirectory=y$e;function E$e(t){return t.includes(Nne)}Gr.hasGlobStar=E$e;function Une(t){return t.endsWith("/"+Nne)}Gr.endsWithSlashGlobStar=Une;function C$e(t){let e=n$e.basename(t);return Une(t)||Lne(e)}Gr.isAffectDepthOfReadingPattern=C$e;function w$e(t){return t.reduce((e,r)=>e.concat(_ne(r)),[])}Gr.expandPatternsWithBraceExpansion=w$e;function _ne(t){return RL.braces(t,{expand:!0,nodupes:!0})}Gr.expandBraceExpansion=_ne;function I$e(t,e){let{parts:r}=RL.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}Gr.getPatternParts=I$e;function Hne(t,e){return RL.makeRe(t,e)}Gr.makeRe=Hne;function B$e(t,e){return t.map(r=>Hne(r,e))}Gr.convertPatternsToRe=B$e;function v$e(t,e){return e.some(r=>r.test(t))}Gr.matchAny=v$e});var Wne=_((QTt,Yne)=>{"use strict";var D$e=ve("stream"),Gne=D$e.PassThrough,S$e=Array.prototype.slice;Yne.exports=P$e;function P$e(){let t=[],e=S$e.call(arguments),r=!1,o=e[e.length-1];o&&!Array.isArray(o)&&o.pipe==null?e.pop():o={};let a=o.end!==!1,n=o.pipeError===!0;o.objectMode==null&&(o.objectMode=!0),o.highWaterMark==null&&(o.highWaterMark=64*1024);let u=Gne(o);function A(){for(let E=0,I=arguments.length;E0||(r=!1,p())}function x(C){function R(){C.removeListener("merge2UnpipeEnd",R),C.removeListener("end",R),n&&C.removeListener("error",L),v()}function L(U){u.emit("error",U)}if(C._readableState.endEmitted)return v();C.on("merge2UnpipeEnd",R),C.on("end",R),n&&C.on("error",L),C.pipe(u,{end:!1}),C.resume()}for(let C=0;C{"use strict";Object.defineProperty(hP,"__esModule",{value:!0});hP.merge=void 0;var b$e=Wne();function x$e(t){let e=b$e(t);return t.forEach(r=>{r.once("error",o=>e.emit("error",o))}),e.once("close",()=>Kne(t)),e.once("end",()=>Kne(t)),e}hP.merge=x$e;function Kne(t){t.forEach(e=>e.emit("close"))}});var Jne=_(eE=>{"use strict";Object.defineProperty(eE,"__esModule",{value:!0});eE.isEmpty=eE.isString=void 0;function k$e(t){return typeof t=="string"}eE.isString=k$e;function Q$e(t){return t===""}eE.isEmpty=Q$e});var Sf=_(xo=>{"use strict";Object.defineProperty(xo,"__esModule",{value:!0});xo.string=xo.stream=xo.pattern=xo.path=xo.fs=xo.errno=xo.array=void 0;var F$e=vne();xo.array=F$e;var R$e=Dne();xo.errno=R$e;var T$e=Sne();xo.fs=T$e;var N$e=Pne();xo.path=N$e;var L$e=jne();xo.pattern=L$e;var O$e=Vne();xo.stream=O$e;var M$e=Jne();xo.string=M$e});var Zne=_(ko=>{"use strict";Object.defineProperty(ko,"__esModule",{value:!0});ko.convertPatternGroupToTask=ko.convertPatternGroupsToTasks=ko.groupPatternsByBaseDirectory=ko.getNegativePatternsAsPositive=ko.getPositivePatterns=ko.convertPatternsToTasks=ko.generate=void 0;var Pf=Sf();function U$e(t,e){let r=zne(t),o=Xne(t,e.ignore),a=r.filter(p=>Pf.pattern.isStaticPattern(p,e)),n=r.filter(p=>Pf.pattern.isDynamicPattern(p,e)),u=NL(a,o,!1),A=NL(n,o,!0);return u.concat(A)}ko.generate=U$e;function NL(t,e,r){let o=[],a=Pf.pattern.getPatternsOutsideCurrentDirectory(t),n=Pf.pattern.getPatternsInsideCurrentDirectory(t),u=LL(a),A=LL(n);return o.push(...OL(u,e,r)),"."in A?o.push(ML(".",n,e,r)):o.push(...OL(A,e,r)),o}ko.convertPatternsToTasks=NL;function zne(t){return Pf.pattern.getPositivePatterns(t)}ko.getPositivePatterns=zne;function Xne(t,e){return Pf.pattern.getNegativePatterns(t).concat(e).map(Pf.pattern.convertToPositivePattern)}ko.getNegativePatternsAsPositive=Xne;function LL(t){let e={};return t.reduce((r,o)=>{let a=Pf.pattern.getBaseDirectory(o);return a in r?r[a].push(o):r[a]=[o],r},e)}ko.groupPatternsByBaseDirectory=LL;function OL(t,e,r){return Object.keys(t).map(o=>ML(o,t[o],e,r))}ko.convertPatternGroupsToTasks=OL;function ML(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Pf.pattern.convertToNegativePattern))}}ko.convertPatternGroupToTask=ML});var eie=_(tE=>{"use strict";Object.defineProperty(tE,"__esModule",{value:!0});tE.removeDuplicateSlashes=tE.transform=void 0;var _$e=/(?!^)\/{2,}/g;function H$e(t){return t.map(e=>$ne(e))}tE.transform=H$e;function $ne(t){return t.replace(_$e,"/")}tE.removeDuplicateSlashes=$ne});var rie=_(gP=>{"use strict";Object.defineProperty(gP,"__esModule",{value:!0});gP.read=void 0;function j$e(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){tie(r,o);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){UL(r,a);return}e.fs.stat(t,(n,u)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){tie(r,n);return}UL(r,a);return}e.markSymbolicLink&&(u.isSymbolicLink=()=>!0),UL(r,u)})})}gP.read=j$e;function tie(t,e){t(e)}function UL(t,e){t(null,e)}});var nie=_(dP=>{"use strict";Object.defineProperty(dP,"__esModule",{value:!0});dP.read=void 0;function G$e(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let o=e.fs.statSync(t);return e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),o}catch(o){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw o}}dP.read=G$e});var iie=_(Xp=>{"use strict";Object.defineProperty(Xp,"__esModule",{value:!0});Xp.createFileSystemAdapter=Xp.FILE_SYSTEM_ADAPTER=void 0;var mP=ve("fs");Xp.FILE_SYSTEM_ADAPTER={lstat:mP.lstat,stat:mP.stat,lstatSync:mP.lstatSync,statSync:mP.statSync};function q$e(t){return t===void 0?Xp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Xp.FILE_SYSTEM_ADAPTER),t)}Xp.createFileSystemAdapter=q$e});var sie=_(HL=>{"use strict";Object.defineProperty(HL,"__esModule",{value:!0});var Y$e=iie(),_L=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Y$e.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}};HL.default=_L});var Cd=_(Zp=>{"use strict";Object.defineProperty(Zp,"__esModule",{value:!0});Zp.statSync=Zp.stat=Zp.Settings=void 0;var oie=rie(),W$e=nie(),jL=sie();Zp.Settings=jL.default;function K$e(t,e,r){if(typeof e=="function"){oie.read(t,qL(),e);return}oie.read(t,qL(e),r)}Zp.stat=K$e;function V$e(t,e){let r=qL(e);return W$e.read(t,r)}Zp.statSync=V$e;function qL(t={}){return t instanceof jL.default?t:new jL.default(t)}});var lie=_((jTt,aie)=>{aie.exports=J$e;function J$e(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=Object.keys(t),r={},o=a.length);function u(p){function h(){e&&e(p,r),e=null}n?process.nextTick(h):h()}function A(p,h,E){r[p]=E,(--o===0||h)&&u(h)}o?a?a.forEach(function(p){t[p](function(h,E){A(p,h,E)})}):t.forEach(function(p,h){p(function(E,I){A(h,E,I)})}):u(null),n=!1}});var YL=_(EP=>{"use strict";Object.defineProperty(EP,"__esModule",{value:!0});EP.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var yP=process.versions.node.split(".");if(yP[0]===void 0||yP[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var cie=Number.parseInt(yP[0],10),z$e=Number.parseInt(yP[1],10),uie=10,X$e=10,Z$e=cie>uie,$$e=cie===uie&&z$e>=X$e;EP.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Z$e||$$e});var Aie=_(CP=>{"use strict";Object.defineProperty(CP,"__esModule",{value:!0});CP.createDirentFromStats=void 0;var WL=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 eet(t,e){return new WL(t,e)}CP.createDirentFromStats=eet});var KL=_(wP=>{"use strict";Object.defineProperty(wP,"__esModule",{value:!0});wP.fs=void 0;var tet=Aie();wP.fs=tet});var VL=_(IP=>{"use strict";Object.defineProperty(IP,"__esModule",{value:!0});IP.joinPathSegments=void 0;function ret(t,e,r){return t.endsWith(r)?t+e:t+r+e}IP.joinPathSegments=ret});var mie=_($p=>{"use strict";Object.defineProperty($p,"__esModule",{value:!0});$p.readdir=$p.readdirWithFileTypes=$p.read=void 0;var net=Cd(),fie=lie(),iet=YL(),pie=KL(),hie=VL();function set(t,e,r){if(!e.stats&&iet.IS_SUPPORT_READDIR_WITH_FILE_TYPES){gie(t,e,r);return}die(t,e,r)}$p.read=set;function gie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==null){BP(r,o);return}let n=a.map(A=>({dirent:A,name:A.name,path:hie.joinPathSegments(t,A.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){JL(r,n);return}let u=n.map(A=>oet(A,e));fie(u,(A,p)=>{if(A!==null){BP(r,A);return}JL(r,p)})})}$p.readdirWithFileTypes=gie;function oet(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(o,a)=>{if(o!==null){if(e.throwErrorOnBrokenSymbolicLink){r(o);return}r(null,t);return}t.dirent=pie.fs.createDirentFromStats(t.name,a),r(null,t)})}}function die(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){BP(r,o);return}let n=a.map(u=>{let A=hie.joinPathSegments(t,u,e.pathSegmentSeparator);return p=>{net.stat(A,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let I={name:u,path:A,dirent:pie.fs.createDirentFromStats(u,E)};e.stats&&(I.stats=E),p(null,I)})}});fie(n,(u,A)=>{if(u!==null){BP(r,u);return}JL(r,A)})})}$p.readdir=die;function BP(t,e){t(e)}function JL(t,e){t(null,e)}});var Iie=_(eh=>{"use strict";Object.defineProperty(eh,"__esModule",{value:!0});eh.readdir=eh.readdirWithFileTypes=eh.read=void 0;var aet=Cd(),cet=YL(),yie=KL(),Eie=VL();function uet(t,e){return!e.stats&&cet.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Cie(t,e):wie(t,e)}eh.read=uet;function Cie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{let a={dirent:o,name:o.name,path:Eie.joinPathSegments(t,o.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=yie.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}eh.readdirWithFileTypes=Cie;function wie(t,e){return e.fs.readdirSync(t).map(o=>{let a=Eie.joinPathSegments(t,o,e.pathSegmentSeparator),n=aet.statSync(a,e.fsStatSettings),u={name:o,path:a,dirent:yie.fs.createDirentFromStats(o,n)};return e.stats&&(u.stats=n),u})}eh.readdir=wie});var Bie=_(th=>{"use strict";Object.defineProperty(th,"__esModule",{value:!0});th.createFileSystemAdapter=th.FILE_SYSTEM_ADAPTER=void 0;var rE=ve("fs");th.FILE_SYSTEM_ADAPTER={lstat:rE.lstat,stat:rE.stat,lstatSync:rE.lstatSync,statSync:rE.statSync,readdir:rE.readdir,readdirSync:rE.readdirSync};function Aet(t){return t===void 0?th.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},th.FILE_SYSTEM_ADAPTER),t)}th.createFileSystemAdapter=Aet});var vie=_(XL=>{"use strict";Object.defineProperty(XL,"__esModule",{value:!0});var fet=ve("path"),pet=Cd(),het=Bie(),zL=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=het.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,fet.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new pet.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};XL.default=zL});var vP=_(rh=>{"use strict";Object.defineProperty(rh,"__esModule",{value:!0});rh.Settings=rh.scandirSync=rh.scandir=void 0;var Die=mie(),get=Iie(),ZL=vie();rh.Settings=ZL.default;function det(t,e,r){if(typeof e=="function"){Die.read(t,$L(),e);return}Die.read(t,$L(e),r)}rh.scandir=det;function met(t,e){let r=$L(e);return get.read(t,r)}rh.scandirSync=met;function $L(t={}){return t instanceof ZL.default?t:new ZL.default(t)}});var Pie=_((ZTt,Sie)=>{"use strict";function yet(t){var e=new t,r=e;function o(){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:o,release:a}}Sie.exports=yet});var xie=_(($Tt,eO)=>{"use strict";var Eet=Pie();function bie(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var o=Eet(Cet),a=null,n=null,u=0,A=null,p={push:R,drain:ql,saturated:ql,pause:E,paused:!1,concurrency:r,running:h,resume:x,idle:C,length:I,getQueue:v,unshift:L,empty:ql,kill:J,killAndDrain:te,error:ae};return p;function h(){return u}function E(){p.paused=!0}function I(){for(var fe=a,ce=0;fe;)fe=fe.next,ce++;return ce}function v(){for(var fe=a,ce=[];fe;)ce.push(fe.value),fe=fe.next;return ce}function x(){if(!!p.paused){p.paused=!1;for(var fe=0;fe{"use strict";Object.defineProperty(Zu,"__esModule",{value:!0});Zu.joinPathSegments=Zu.replacePathSegmentSeparator=Zu.isAppliedFilter=Zu.isFatalError=void 0;function Iet(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Zu.isFatalError=Iet;function Bet(t,e){return t===null||t(e)}Zu.isAppliedFilter=Bet;function vet(t,e){return t.split(/[/\\]/).join(e)}Zu.replacePathSegmentSeparator=vet;function Det(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Zu.joinPathSegments=Det});var nO=_(rO=>{"use strict";Object.defineProperty(rO,"__esModule",{value:!0});var Pet=DP(),tO=class{constructor(e,r){this._root=e,this._settings=r,this._root=Pet.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};rO.default=tO});var oO=_(sO=>{"use strict";Object.defineProperty(sO,"__esModule",{value:!0});var bet=ve("events"),xet=vP(),ket=xie(),SP=DP(),Qet=nO(),iO=class extends Qet.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=xet.scandir,this._emitter=new bet.EventEmitter,this._queue=ket(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 o={directory:e,base:r};this._queue.push(o,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(o,a)=>{if(o!==null){r(o,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!SP.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 o=e.path;r!==void 0&&(e.path=SP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),SP.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&SP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};sO.default=iO});var kie=_(lO=>{"use strict";Object.defineProperty(lO,"__esModule",{value:!0});var Fet=oO(),aO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Fet.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{Ret(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Tet(e,this._storage)}),this._reader.read()}};lO.default=aO;function Ret(t,e){t(e)}function Tet(t,e){t(null,e)}});var Qie=_(uO=>{"use strict";Object.defineProperty(uO,"__esModule",{value:!0});var Net=ve("stream"),Let=oO(),cO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Let.default(this._root,this._settings),this._stream=new Net.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}};uO.default=cO});var Fie=_(fO=>{"use strict";Object.defineProperty(fO,"__esModule",{value:!0});var Oet=vP(),PP=DP(),Met=nO(),AO=class extends Met.default{constructor(){super(...arguments),this._scandir=Oet.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 o=this._scandir(e,this._settings.fsScandirSettings);for(let a of o)this._handleEntry(a,r)}catch(o){this._handleError(o)}}_handleError(e){if(!!PP.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=PP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),PP.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&PP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};fO.default=AO});var Rie=_(hO=>{"use strict";Object.defineProperty(hO,"__esModule",{value:!0});var Uet=Fie(),pO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Uet.default(this._root,this._settings)}read(){return this._reader.read()}};hO.default=pO});var Tie=_(dO=>{"use strict";Object.defineProperty(dO,"__esModule",{value:!0});var _et=ve("path"),Het=vP(),gO=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,_et.sep),this.fsScandirSettings=new Het.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}};dO.default=gO});var xP=_($u=>{"use strict";Object.defineProperty($u,"__esModule",{value:!0});$u.Settings=$u.walkStream=$u.walkSync=$u.walk=void 0;var Nie=kie(),jet=Qie(),Get=Rie(),mO=Tie();$u.Settings=mO.default;function qet(t,e,r){if(typeof e=="function"){new Nie.default(t,bP()).read(e);return}new Nie.default(t,bP(e)).read(r)}$u.walk=qet;function Yet(t,e){let r=bP(e);return new Get.default(t,r).read()}$u.walkSync=Yet;function Wet(t,e){let r=bP(e);return new jet.default(t,r).read()}$u.walkStream=Wet;function bP(t={}){return t instanceof mO.default?t:new mO.default(t)}});var kP=_(EO=>{"use strict";Object.defineProperty(EO,"__esModule",{value:!0});var Ket=ve("path"),Vet=Cd(),Lie=Sf(),yO=class{constructor(e){this._settings=e,this._fsStatSettings=new Vet.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return Ket.resolve(this._settings.cwd,e)}_makeEntry(e,r){let o={name:r,path:r,dirent:Lie.fs.createDirentFromStats(r,e)};return this._settings.stats&&(o.stats=e),o}_isFatalError(e){return!Lie.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};EO.default=yO});var IO=_(wO=>{"use strict";Object.defineProperty(wO,"__esModule",{value:!0});var Jet=ve("stream"),zet=Cd(),Xet=xP(),Zet=kP(),CO=class extends Zet.default{constructor(){super(...arguments),this._walkStream=Xet.walkStream,this._stat=zet.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let o=e.map(this._getFullEntryPath,this),a=new Jet.PassThrough({objectMode:!0});a._write=(n,u,A)=>this._getEntry(o[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===o.length-1&&a.end(),A()}).catch(A);for(let n=0;nthis._makeEntry(a,r)).catch(a=>{if(o.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):o(a))})}};wO.default=CO});var Oie=_(vO=>{"use strict";Object.defineProperty(vO,"__esModule",{value:!0});var $et=xP(),ett=kP(),ttt=IO(),BO=class extends ett.default{constructor(){super(...arguments),this._walkAsync=$et.walk,this._readerStream=new ttt.default(this._settings)}dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===null?o(u):a(n)})})}async static(e,r){let o=[],a=this._readerStream.static(e,r);return new Promise((n,u)=>{a.once("error",u),a.on("data",A=>o.push(A)),a.once("end",()=>n(o))})}};vO.default=BO});var Mie=_(SO=>{"use strict";Object.defineProperty(SO,"__esModule",{value:!0});var nE=Sf(),DO=class{constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOptions=o,this._storage=[],this._fillStorage()}_fillStorage(){let e=nE.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let o=this._getPatternSegments(r),a=this._splitSegmentsIntoSections(o);this._storage.push({complete:a.length<=1,pattern:r,segments:o,sections:a})}}_getPatternSegments(e){return nE.pattern.getPatternParts(e,this._micromatchOptions).map(o=>nE.pattern.isDynamicPattern(o,this._settings)?{dynamic:!0,pattern:o,patternRe:nE.pattern.makeRe(o,this._micromatchOptions)}:{dynamic:!1,pattern:o})}_splitSegmentsIntoSections(e){return nE.array.splitWhen(e,r=>r.dynamic&&nE.pattern.hasGlobStar(r.pattern))}};SO.default=DO});var Uie=_(bO=>{"use strict";Object.defineProperty(bO,"__esModule",{value:!0});var rtt=Mie(),PO=class extends rtt.default{match(e){let r=e.split("/"),o=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>o);for(let n of a){let u=n.sections[0];if(!n.complete&&o>u.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}};bO.default=PO});var _ie=_(kO=>{"use strict";Object.defineProperty(kO,"__esModule",{value:!0});var QP=Sf(),ntt=Uie(),xO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe(o);return u=>this._filter(e,u,a,n)}_getMatcher(e){return new ntt.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(QP.pattern.isAffectDepthOfReadingPattern);return QP.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=QP.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,o)?!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 o=r.split("/").length;if(e==="")return o;let a=e.split("/").length;return o-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!QP.pattern.matchAny(e,r)}};kO.default=xO});var Hie=_(FO=>{"use strict";Object.defineProperty(FO,"__esModule",{value:!0});var wd=Sf(),QO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let o=wd.pattern.convertPatternsToRe(e,this._micromatchOptions),a=wd.pattern.convertPatternsToRe(r,this._micromatchOptions);return n=>this._filter(n,o,a)}_filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e.path,o))return!1;let a=this._settings.baseNameMatch?e.name:e.path,n=e.dirent.isDirectory(),u=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(e.path,o,n);return this._settings.unique&&u&&this._createIndexRecord(e),u}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,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 o=wd.path.makeAbsolute(this._settings.cwd,e);return wd.pattern.matchAny(o,r)}_isMatchToPatterns(e,r,o){let a=wd.path.removeLeadingDotSegment(e),n=wd.pattern.matchAny(a,r);return!n&&o?wd.pattern.matchAny(a+"/",r):n}};FO.default=QO});var jie=_(TO=>{"use strict";Object.defineProperty(TO,"__esModule",{value:!0});var itt=Sf(),RO=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return itt.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};TO.default=RO});var qie=_(LO=>{"use strict";Object.defineProperty(LO,"__esModule",{value:!0});var Gie=Sf(),NO=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=Gie.path.makeAbsolute(this._settings.cwd,r),r=Gie.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};LO.default=NO});var FP=_(MO=>{"use strict";Object.defineProperty(MO,"__esModule",{value:!0});var stt=ve("path"),ott=_ie(),att=Hie(),ltt=jie(),ctt=qie(),OO=class{constructor(e){this._settings=e,this.errorFilter=new ltt.default(this._settings),this.entryFilter=new att.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new ott.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new ctt.default(this._settings)}_getRootDirectory(e){return stt.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}}};MO.default=OO});var Yie=_(_O=>{"use strict";Object.defineProperty(_O,"__esModule",{value:!0});var utt=Oie(),Att=FP(),UO=class extends Att.default{constructor(){super(...arguments),this._reader=new utt.default(this._settings)}async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return(await this.api(r,e,o)).map(n=>o.transform(n))}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};_O.default=UO});var Wie=_(jO=>{"use strict";Object.defineProperty(jO,"__esModule",{value:!0});var ftt=ve("stream"),ptt=IO(),htt=FP(),HO=class extends htt.default{constructor(){super(...arguments),this._reader=new ptt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=this.api(r,e,o),n=new ftt.Readable({objectMode:!0,read:()=>{}});return a.once("error",u=>n.emit("error",u)).on("data",u=>n.emit("data",o.transform(u))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};jO.default=HO});var Kie=_(qO=>{"use strict";Object.defineProperty(qO,"__esModule",{value:!0});var gtt=Cd(),dtt=xP(),mtt=kP(),GO=class extends mtt.default{constructor(){super(...arguments),this._walkSync=dtt.walkSync,this._statSync=gtt.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=this._getEntry(n,a,r);u===null||!r.entryFilter(u)||o.push(u)}return o}_getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(o.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};qO.default=GO});var Vie=_(WO=>{"use strict";Object.defineProperty(WO,"__esModule",{value:!0});var ytt=Kie(),Ett=FP(),YO=class extends Ett.default{constructor(){super(...arguments),this._reader=new ytt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return this.api(r,e,o).map(o.transform)}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};WO.default=YO});var Jie=_(sE=>{"use strict";Object.defineProperty(sE,"__esModule",{value:!0});sE.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var iE=ve("fs"),Ctt=ve("os"),wtt=Math.max(Ctt.cpus().length,1);sE.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:iE.lstat,lstatSync:iE.lstatSync,stat:iE.stat,statSync:iE.statSync,readdir:iE.readdir,readdirSync:iE.readdirSync};var KO=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,wtt),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)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},sE.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};sE.default=KO});var RP=_((vNt,Zie)=>{"use strict";var zie=Zne(),Xie=eie(),Itt=Yie(),Btt=Wie(),vtt=Vie(),VO=Jie(),Id=Sf();async function JO(t,e){oE(t);let r=zO(t,Itt.default,e),o=await Promise.all(r);return Id.array.flatten(o)}(function(t){function e(u,A){oE(u);let p=zO(u,vtt.default,A);return Id.array.flatten(p)}t.sync=e;function r(u,A){oE(u);let p=zO(u,Btt.default,A);return Id.stream.merge(p)}t.stream=r;function o(u,A){oE(u);let p=Xie.transform([].concat(u)),h=new VO.default(A);return zie.generate(p,h)}t.generateTasks=o;function a(u,A){oE(u);let p=new VO.default(A);return Id.pattern.isDynamicPattern(u,p)}t.isDynamicPattern=a;function n(u){return oE(u),Id.path.escape(u)}t.escapePath=n})(JO||(JO={}));function zO(t,e,r){let o=Xie.transform([].concat(t)),a=new VO.default(r),n=zie.generate(o,a),u=new e(a);return n.map(u.read,u)}function oE(t){if(![].concat(t).every(o=>Id.string.isString(o)&&!Id.string.isEmpty(o)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Zie.exports=JO});var wn={};Vt(wn,{checksumFile:()=>NP,checksumPattern:()=>LP,makeHash:()=>zs});function zs(...t){let e=(0,TP.createHash)("sha512"),r="";for(let o of t)typeof o=="string"?r+=o:o&&(r&&(e.update(r),r=""),e.update(o));return r&&e.update(r),e.digest("hex")}async function NP(t,{baseFs:e,algorithm:r}={baseFs:oe,algorithm:"sha512"}){let o=await e.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,TP.createHash)(r),A=0;for(;(A=await e.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest("hex")}finally{await e.closePromise(o)}}async function LP(t,{cwd:e}){let o=(await(0,XO.default)(t,{cwd:ue.fromPortablePath(e),onlyDirectories:!0})).map(A=>`${A}/**/*`),a=await(0,XO.default)([t,...o],{cwd:ue.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async A=>{let p=[Buffer.from(A)],h=ue.toPortablePath(A),E=await oe.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await oe.readlinkPromise(h))):E.isFile()&&p.push(await oe.readFilePromise(h)),p.join("\0")})),u=(0,TP.createHash)("sha512");for(let A of n)u.update(A);return u.digest("hex")}var TP,XO,nh=Et(()=>{St();TP=ve("crypto"),XO=$e(RP())});var W={};Vt(W,{areDescriptorsEqual:()=>nse,areIdentsEqual:()=>n1,areLocatorsEqual:()=>i1,areVirtualPackagesEquivalent:()=>Rtt,bindDescriptor:()=>Qtt,bindLocator:()=>Ftt,convertDescriptorToLocator:()=>OP,convertLocatorToDescriptor:()=>$O,convertPackageToLocator:()=>btt,convertToIdent:()=>Ptt,convertToManifestRange:()=>Gtt,copyPackage:()=>e1,devirtualizeDescriptor:()=>t1,devirtualizeLocator:()=>r1,ensureDevirtualizedDescriptor:()=>xtt,ensureDevirtualizedLocator:()=>ktt,getIdentVendorPath:()=>nM,isPackageCompatible:()=>jP,isVirtualDescriptor:()=>bf,isVirtualLocator:()=>Hc,makeDescriptor:()=>In,makeIdent:()=>eA,makeLocator:()=>Qs,makeRange:()=>_P,parseDescriptor:()=>ih,parseFileStyleRange:()=>Htt,parseIdent:()=>Js,parseLocator:()=>xf,parseRange:()=>Bd,prettyDependent:()=>kL,prettyDescriptor:()=>Gn,prettyIdent:()=>cs,prettyLocator:()=>jr,prettyLocatorNoColors:()=>xL,prettyRange:()=>cE,prettyReference:()=>o1,prettyResolution:()=>ZI,prettyWorkspace:()=>a1,renamePackage:()=>eM,slugifyIdent:()=>ZO,slugifyLocator:()=>lE,sortDescriptors:()=>uE,stringifyDescriptor:()=>Pa,stringifyIdent:()=>fn,stringifyLocator:()=>ba,tryParseDescriptor:()=>s1,tryParseIdent:()=>ise,tryParseLocator:()=>UP,tryParseRange:()=>_tt,virtualizeDescriptor:()=>tM,virtualizePackage:()=>rM});function eA(t,e){if(t?.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:zs(t,e),scope:t,name:e}}function In(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zs(t.identHash,e),range:e}}function Qs(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zs(t.identHash,e),reference:e}}function Ptt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function OP(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function $O(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function btt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function eM(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 e1(t){return eM(t,t)}function tM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return In(t,`virtual:${e}#${t.range}`)}function rM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return eM(t,Qs(t,`virtual:${e}#${t.reference}`))}function bf(t){return t.range.startsWith($I)}function Hc(t){return t.reference.startsWith($I)}function t1(t){if(!bf(t))throw new Error("Not a virtual descriptor");return In(t,t.range.replace(MP,""))}function r1(t){if(!Hc(t))throw new Error("Not a virtual descriptor");return Qs(t,t.reference.replace(MP,""))}function xtt(t){return bf(t)?In(t,t.range.replace(MP,"")):t}function ktt(t){return Hc(t)?Qs(t,t.reference.replace(MP,"")):t}function Qtt(t,e){return t.range.includes("::")?t:In(t,`${t.range}::${aE.default.stringify(e)}`)}function Ftt(t,e){return t.reference.includes("::")?t:Qs(t,`${t.reference}::${aE.default.stringify(e)}`)}function n1(t,e){return t.identHash===e.identHash}function nse(t,e){return t.descriptorHash===e.descriptorHash}function i1(t,e){return t.locatorHash===e.locatorHash}function Rtt(t,e){if(!Hc(t))throw new Error("Invalid package type");if(!Hc(e))throw new Error("Invalid package type");if(!n1(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let o=e.dependencies.get(r.identHash);if(!o||!nse(r,o))return!1}return!0}function Js(t){let e=ise(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function ise(t){let e=t.match(Ttt);if(!e)return null;let[,r,o]=e;return eA(typeof r<"u"?r:null,o)}function ih(t,e=!1){let r=s1(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function s1(t,e=!1){let r=e?t.match(Ntt):t.match(Ltt);if(!r)return null;let[,o,a,n]=r;if(n==="unknown")throw new Error(`Invalid range (${t})`);let u=typeof o<"u"?o:null,A=typeof n<"u"?n:"unknown";return In(eA(u,a),A)}function xf(t,e=!1){let r=UP(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function UP(t,e=!1){let r=e?t.match(Ott):t.match(Mtt);if(!r)return null;let[,o,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${t})`);let u=typeof o<"u"?o:null,A=typeof n<"u"?n:"unknown";return Qs(eA(u,a),A)}function Bd(t,e){let r=t.match(Utt);if(r===null)throw new Error(`Invalid range (${t})`);let o=typeof r[1]<"u"?r[1]:null;if(typeof e?.requireProtocol=="string"&&o!==e.requireProtocol)throw new Error(`Invalid protocol (${o})`);if(e?.requireProtocol&&o===null)throw new Error(`Missing protocol (${o})`);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]),u=e?.parseSelector?aE.default.parse(n):n,A=typeof r[4]<"u"?aE.default.parse(r[4]):null;return{protocol:o,source:a,selector:u,params:A}}function _tt(t,e){try{return Bd(t,e)}catch{return null}}function Htt(t,{protocol:e}){let{selector:r,params:o}=Bd(t,{requireProtocol:e,requireBindings:!0});if(typeof o.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:xf(o.locator,!0),path:r}}function $ie(t){return t=t.replaceAll("%","%25"),t=t.replaceAll(":","%3A"),t=t.replaceAll("#","%23"),t}function jtt(t){return t===null?!1:Object.entries(t).length>0}function _P({protocol:t,source:e,selector:r,params:o}){let a="";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${$ie(e)}#`),a+=$ie(r),jtt(o)&&(a+=`::${aE.default.stringify(o)}`),a}function Gtt(t){let{params:e,protocol:r,source:o,selector:a}=Bd(t);for(let n in e)n.startsWith("__")&&delete e[n];return _P({protocol:r,source:o,params:e,selector:a})}function fn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function Pa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function ba(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function ZO(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function lE(t){let{protocol:e,selector:r}=Bd(t.reference),o=e!==null?e.replace(qtt,""):"exotic",a=ese.default.valid(r),n=a!==null?`${o}-${a}`:`${o}`,u=10;return t.scope?`${ZO(t)}-${n}-${t.locatorHash.slice(0,u)}`:`${ZO(t)}-${n}-${t.locatorHash.slice(0,u)}`}function cs(t,e){return e.scope?`${Mt(t,`@${e.scope}/`,yt.SCOPE)}${Mt(t,e.name,yt.NAME)}`:`${Mt(t,e.name,yt.NAME)}`}function HP(t){if(t.startsWith($I)){let e=HP(t.substring(t.indexOf("#")+1)),r=t.substring($I.length,$I.length+Dtt);return`${e} [${r}]`}else return t.replace(Ytt,"?[...]")}function cE(t,e){return`${Mt(t,HP(e),yt.RANGE)}`}function Gn(t,e){return`${cs(t,e)}${Mt(t,"@",yt.RANGE)}${cE(t,e.range)}`}function o1(t,e){return`${Mt(t,HP(e),yt.REFERENCE)}`}function jr(t,e){return`${cs(t,e)}${Mt(t,"@",yt.REFERENCE)}${o1(t,e.reference)}`}function xL(t){return`${fn(t)}@${HP(t.reference)}`}function uE(t){return ks(t,[e=>fn(e),e=>e.range])}function a1(t,e){return cs(t,e.anchoredLocator)}function ZI(t,e,r){let o=bf(e)?t1(e):e;return r===null?`${Gn(t,o)} \u2192 ${bL(t).Cross}`:o.identHash===r.identHash?`${Gn(t,o)} \u2192 ${o1(t,r.reference)}`:`${Gn(t,o)} \u2192 ${jr(t,r)}`}function kL(t,e,r){return r===null?`${jr(t,e)}`:`${jr(t,e)} (via ${cE(t,r.range)})`}function nM(t){return`node_modules/${fn(t)}`}function jP(t,e){return t.conditions?Stt(t.conditions,r=>{let[,o,a]=r.match(rse),n=e[o];return n?n.includes(a):!0}):!0}var aE,ese,tse,$I,Dtt,rse,Stt,MP,Ttt,Ntt,Ltt,Ott,Mtt,Utt,qtt,Ytt,bo=Et(()=>{aE=$e(ve("querystring")),ese=$e(zn()),tse=$e(eX());Gl();nh();jl();bo();$I="virtual:",Dtt=5,rse=/(os|cpu|libc)=([a-z0-9_-]+)/,Stt=(0,tse.makeParser)(rse);MP=/^[^#]*#/;Ttt=/^(?:@([^/]+?)\/)?([^@/]+)$/;Ntt=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,Ltt=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;Ott=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,Mtt=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;Utt=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;qtt=/:$/;Ytt=/\?.*/});var sse,ose=Et(()=>{bo();sse={hooks:{reduceDependency:(t,e,r,o,{resolver:a,resolveOptions:n})=>{for(let{pattern:u,reference:A}of e.topLevelWorkspace.manifest.resolutions){if(u.from&&(u.from.fullName!==fn(r)||e.configuration.normalizeLocator(Qs(Js(u.from.fullName),u.from.description??r.reference)).locatorHash!==r.locatorHash)||u.descriptor.fullName!==fn(t)||e.configuration.normalizeDependency(In(xf(u.descriptor.fullName),u.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(In(t,A)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let o=a1(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${o}: ${n}`),reportError:(a,n)=>e.reportError(a,`${o}: ${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 o of r.errors)e.reportWarning(57,o.message)}}}});var l1,Xn,vd=Et(()=>{l1=class{supportsDescriptor(e,r){return!!(e.range.startsWith(l1.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(l1.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(l1.protocol.length));return{...e,version:o.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...o.manifest.dependencies,...o.manifest.devDependencies])),peerDependencies:new Map([...o.manifest.peerDependencies]),dependenciesMeta:o.manifest.dependenciesMeta,peerDependenciesMeta:o.manifest.peerDependenciesMeta,bin:o.manifest.bin}}},Xn=l1;Xn.protocol="workspace:"});var kr={};Vt(kr,{SemVer:()=>Ase.SemVer,clean:()=>Ktt,getComparator:()=>cse,mergeComparators:()=>iM,satisfiesWithPrereleases:()=>kf,simplifyRanges:()=>sM,stringifyComparator:()=>use,validRange:()=>xa});function kf(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=ase.get(o);if(typeof a>"u")try{a=new sh.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{ase.set(o,a||null)}else if(a===null)return!1;let n;try{n=new sh.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(u=>{for(let A of u)A.semver.prerelease&&(A.semver.prerelease=[]);return u.every(A=>A.test(n))}))}function xa(t){if(t.indexOf(":")!==-1)return null;let e=lse.get(t);if(typeof e<"u")return e;try{e=new sh.default.Range(t)}catch{e=null}return lse.set(t,e),e}function Ktt(t){let e=Wtt.exec(t);return e?e[1]:null}function cse(t){if(t.semver===sh.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 iM(t){if(t.length===0)return null;let e=null,r=null;for(let o of t){if(o.gt){let a=e!==null?sh.default.compare(o.gt[1],e[1]):null;(a===null||a>0||a===0&&o.gt[0]===">")&&(e=o.gt)}if(o.lt){let a=r!==null?sh.default.compare(o.lt[1],r[1]):null;(a===null||a<0||a===0&&o.lt[0]==="<")&&(r=o.lt)}}if(e&&r){let o=sh.default.compare(e[1],r[1]);if(o===0&&(e[0]===">"||r[0]==="<")||o>0)return null}return{gt:e,lt:r}}function use(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 sM(t){let e=t.map(o=>xa(o).set.map(a=>a.map(n=>cse(n)))),r=e.shift().map(o=>iM(o)).filter(o=>o!==null);for(let o of e){let a=[];for(let n of r)for(let u of o){let A=iM([n,...u]);A!==null&&a.push(A)}r=a}return r.length===0?null:r.map(o=>use(o)).join(" || ")}var sh,Ase,ase,lse,Wtt,Qf=Et(()=>{sh=$e(zn()),Ase=$e(zn()),ase=new Map;lse=new Map;Wtt=/^(?:[\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 fse(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function pse(t){return t.charCodeAt(0)===65279?t.slice(1):t}function $o(t){return t.replace(/\\/g,"/")}function GP(t,{yamlCompatibilityMode:e}){return e?CL(t):typeof t>"u"||typeof t=="boolean"?t:null}function hse(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let o=r%2===0?"":"!",a=e.slice(r);return`${o}${t}=${a}`}function oM(t,e){return e.length===1?hse(t,e[0]):`(${e.map(r=>hse(t,r)).join(" | ")})`}var gse,AE,Ot,fE=Et(()=>{St();Nl();gse=$e(zn());vd();jl();Qf();bo();AE=class{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 async tryFind(e,{baseFs:r=new Tn}={}){let o=V.join(e,"package.json");try{return await AE.fromFile(o,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(e,{baseFs:r}={}){let o=await AE.tryFind(e,{baseFs:r});if(o===null)throw new Error("Manifest not found");return o}static async fromFile(e,{baseFs:r=new Tn}={}){let o=new AE;return await o.loadFile(e,{baseFs:r}),o}static fromText(e){let r=new AE;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(pse(e)||"{}")}catch(o){throw o.message+=` (when parsing ${e})`,o}this.load(r),this.indent=fse(e)}async loadFile(e,{baseFs:r=new Tn}){let o=await r.readFilePromise(e,"utf8"),a;try{a=JSON.parse(pse(o)||"{}")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=fse(o)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let o=[];if(this.name=null,typeof e.name=="string")try{this.name=Js(e.name)}catch{o.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 u of e.os)typeof u!="string"?o.push(new Error("Parsing failed for the 'os' field")):n.push(u)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let u of e.cpu)typeof u!="string"?o.push(new Error("Parsing failed for the 'cpu' field")):n.push(u)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let u of e.libc)typeof u!="string"?o.push(new Error("Parsing failed for the 'libc' field")):n.push(u)}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=$o(e.main):this.main=null,typeof e.module=="string"?this.module=$o(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=$o(e.browser);else{this.browser=new Map;for(let[n,u]of Object.entries(e.browser))this.browser.set($o(n),typeof u=="string"?$o(u):u)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")e.bin.trim()===""?o.push(new Error("Invalid bin field")):this.name!==null?this.bin.set(this.name.name,$o(e.bin)):o.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[n,u]of Object.entries(e.bin)){if(typeof u!="string"||u.trim()===""){o.push(new Error(`Invalid bin definition for '${n}'`));continue}let A=Js(n);this.bin.set(A.name,$o(u))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[n,u]of Object.entries(e.scripts)){if(typeof u!="string"){o.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,u)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[n,u]of Object.entries(e.dependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[n,u]of Object.entries(e.devDependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[n,u]of Object.entries(e.peerDependencies)){let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof u!="string"||!u.startsWith(Xn.protocol)&&!xa(u))&&(o.push(new Error(`Invalid dependency range for '${n}'`)),u="*");let p=In(A,u);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&o.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"){o.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,u]of Object.entries(e.dependenciesMeta)){if(typeof u!="object"||u===null){o.push(new Error(`Invalid meta field for '${n}`));continue}let A=ih(n),p=this.ensureDependencyMeta(A),h=GP(u.built,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=GP(u.optional,{yamlCompatibilityMode:r});if(E===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}let I=GP(u.unplugged,{yamlCompatibilityMode:r});if(I===null){o.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:I})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[n,u]of Object.entries(e.peerDependenciesMeta)){if(typeof u!="object"||u===null){o.push(new Error(`Invalid meta field for '${n}'`));continue}let A=ih(n),p=this.ensurePeerDependencyMeta(A),h=GP(u.optional,{yamlCompatibilityMode:r});if(h===null){o.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,u]of Object.entries(e.resolutions)){if(typeof u!="string"){o.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:MD(n),reference:u})}catch(A){o.push(A);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!="string"){o.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=$o(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=$o(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=$o(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,u]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set($o(n),typeof u=="string"?$o(u):u)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,$o(e.publishConfig.bin)]]):o.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,u]of Object.entries(e.publishConfig.bin)){if(typeof u!="string"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,$o(u))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!="string"){o.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add($o(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:o.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:o.push(new Error("Invalid selfReferences definition, must be a boolean value")):o.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[n,u]of Object.entries(e.optionalDependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p);let h=In(A,"unknown"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=o}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(oM("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(oM("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(oM("libc",this.libc)),e.length>0?e.join(" & "):null}ensureDependencyMeta(e){if(e.range!=="unknown"&&!gse.default.valid(e.range))throw new Error(`Invalid meta field range for '${Pa(e)}'`);let r=fn(e),o=e.range!=="unknown"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(o);return n||a.set(o,n={}),n}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${Pa(e)}'`);let r=fn(e),o=this.peerDependenciesMeta.get(r);return o||this.peerDependenciesMeta.set(r,o={}),o}setRawField(e,r,{after:o=[]}={}){let a=new Set(o.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,u=this.raw={},A=!1;for(let p of Object.keys(n))u[p]=n[p],A||(a.delete(p),a.size===0&&(u[e]=r,A=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=fn(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(u=>({[u]:n.get(u)}))))}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 o=[],a=[];for(let n of this.dependencies.values()){let u=this.dependenciesMeta.get(fn(n)),A=!1;if(r&&u){let p=u.get(null);p&&p.optional&&(A=!0)}A?a.push(n):o.push(n)}o.length>0?e.dependencies=Object.assign({},...uE(o).map(n=>({[fn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...uE(a).map(n=>({[fn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...uE(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...uE(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,u]of ks(this.dependenciesMeta.entries(),([A,p])=>A))for(let[A,p]of ks(u.entries(),([h,E])=>h!==null?`0${h}`:"1")){let h=A!==null?Pa(In(Js(n),A)):n,E={...p};r&&A===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({},...ks(this.peerDependenciesMeta.entries(),([n,u])=>n).map(([n,u])=>({[n]:u}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:u})=>({[UD(n)]:u}))):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,u]of this.scripts.entries())e.scripts[n]=u}else delete e.scripts;return e}},Ot=AE;Ot.fileName="package.json",Ot.allDependencies=["dependencies","devDependencies","peerDependencies"],Ot.hardDependencies=["dependencies","devDependencies"]});var mse=_((UNt,dse)=>{var Vtt=_l(),Jtt=function(){return Vtt.Date.now()};dse.exports=Jtt});var Ese=_((_Nt,yse)=>{var ztt=/\s/;function Xtt(t){for(var e=t.length;e--&&ztt.test(t.charAt(e)););return e}yse.exports=Xtt});var wse=_((HNt,Cse)=>{var Ztt=Ese(),$tt=/^\s+/;function ert(t){return t&&t.slice(0,Ztt(t)+1).replace($tt,"")}Cse.exports=ert});var pE=_((jNt,Ise)=>{var trt=hd(),rrt=Ju(),nrt="[object Symbol]";function irt(t){return typeof t=="symbol"||rrt(t)&&trt(t)==nrt}Ise.exports=irt});var Sse=_((GNt,Dse)=>{var srt=wse(),Bse=il(),ort=pE(),vse=0/0,art=/^[-+]0x[0-9a-f]+$/i,lrt=/^0b[01]+$/i,crt=/^0o[0-7]+$/i,urt=parseInt;function Art(t){if(typeof t=="number")return t;if(ort(t))return vse;if(Bse(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Bse(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=srt(t);var r=lrt.test(t);return r||crt.test(t)?urt(t.slice(2),r?2:8):art.test(t)?vse:+t}Dse.exports=Art});var xse=_((qNt,bse)=>{var frt=il(),aM=mse(),Pse=Sse(),prt="Expected a function",hrt=Math.max,grt=Math.min;function drt(t,e,r){var o,a,n,u,A,p,h=0,E=!1,I=!1,v=!0;if(typeof t!="function")throw new TypeError(prt);e=Pse(e)||0,frt(r)&&(E=!!r.leading,I="maxWait"in r,n=I?hrt(Pse(r.maxWait)||0,e):n,v="trailing"in r?!!r.trailing:v);function x(ce){var me=o,he=a;return o=a=void 0,h=ce,u=t.apply(he,me),u}function C(ce){return h=ce,A=setTimeout(U,e),E?x(ce):u}function R(ce){var me=ce-p,he=ce-h,Be=e-me;return I?grt(Be,n-he):Be}function L(ce){var me=ce-p,he=ce-h;return p===void 0||me>=e||me<0||I&&he>=n}function U(){var ce=aM();if(L(ce))return J(ce);A=setTimeout(U,R(ce))}function J(ce){return A=void 0,v&&o?x(ce):(o=a=void 0,u)}function te(){A!==void 0&&clearTimeout(A),h=0,o=p=a=A=void 0}function ae(){return A===void 0?u:J(aM())}function fe(){var ce=aM(),me=L(ce);if(o=arguments,a=this,p=ce,me){if(A===void 0)return C(p);if(I)return clearTimeout(A),A=setTimeout(U,e),x(p)}return A===void 0&&(A=setTimeout(U,e)),u}return fe.cancel=te,fe.flush=ae,fe}bse.exports=drt});var lM=_((YNt,kse)=>{var mrt=xse(),yrt=il(),Ert="Expected a function";function Crt(t,e,r){var o=!0,a=!0;if(typeof t!="function")throw new TypeError(Ert);return yrt(r)&&(o="leading"in r?!!r.leading:o,a="trailing"in r?!!r.trailing:a),mrt(t,e,{leading:o,maxWait:e,trailing:a})}kse.exports=Crt});function Irt(t){return typeof t.reportCode<"u"}var Qse,Fse,Rse,wrt,zt,Xs,Yl=Et(()=>{Qse=$e(lM()),Fse=ve("stream"),Rse=ve("string_decoder"),wrt=15,zt=class extends Error{constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}};Xs=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,o,a=new Promise(p=>{o=p}),n=p=>{let h=o;a=new Promise(E=>{o=E}),r=p,h()},u=(p=0)=>{n(r+1)},A=async function*(){for(;r{r=u}),a=(0,Qse.default)(u=>{let A=r;o=new Promise(p=>{r=p}),e=u,A()},1e3/wrt),n=async function*(){for(;;)await o,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let o=this.reportProgress(e);try{return await r(e)}finally{o.stop()}}startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}finally{o.stop()}}reportInfoOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),o?.reportExtra?.(this))}reportWarningOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),o?.reportExtra?.(this))}reportErrorOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),o?.reportExtra?.(this))}reportExceptionOnce(e){Irt(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 Fse.PassThrough,o=new Rse.StringDecoder,a="";return r.on("data",n=>{let u=o.write(n),A;do if(A=u.indexOf(` +`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a="",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(A!==-1);a+=u}),r.on("end",()=>{let n=o.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var hE,cM=Et(()=>{Yl();bo();hE=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 o=this.fetchers.find(a=>a.supports(e,r));return o||null}getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw new zt(11,`${jr(r.project.configuration,e)} isn't supported by any available fetcher`);return o}}});var Dd,uM=Et(()=>{bo();Dd=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,o){return this.getResolverByDescriptor(e,o).bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o).getCandidates(e,r,o)}async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,o,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));return o||null}getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!o)throw new Error(`${Gn(r.project.configuration,e)} isn't supported by any available resolver`);return o}tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));return o||null}getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));if(!o)throw new Error(`${jr(r.project.configuration,e)} isn't supported by any available resolver`);return o}}});var gE,AM=Et(()=>{St();bo();gE=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(o+1),n=Qs(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(o+1),n=Qs(e,a),u=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,u,r)}getLocatorFilename(e){return lE(e)}async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.project.configuration.get("virtualFolder"),u=this.getLocatorFilename(e),A=mi.makeVirtualPath(n,u,a),p=new Uu(A,{baseFs:r.packageFs,pathUtils:V});return{...r,packageFs:p}}}});var dE,c1,Tse=Et(()=>{dE=class{static isVirtualDescriptor(e){return!!e.range.startsWith(dE.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(dE.protocol)}supportsDescriptor(e,r){return dE.isVirtualDescriptor(e)}supportsLocator(e,r){return dE.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){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,o){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,o,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')}},c1=dE;c1.protocol="virtual:"});var mE,fM=Et(()=>{St();vd();mE=class{supports(e){return!!e.reference.startsWith(Xn.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new gn(o),prefixPath:Bt.dot,localPath:o}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Xn.protocol.length))}}});function u1(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Nse(t){return typeof t>"u"?3:u1(t)?0:Array.isArray(t)?1:2}function gM(t,e){return Object.hasOwn(t,e)}function vrt(t){return u1(t)&&gM(t,"onConflict")&&typeof t.onConflict=="string"}function Drt(t){if(typeof t>"u")return{onConflict:"default",value:t};if(!vrt(t))return{onConflict:"default",value:t};if(gM(t,"value"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function Lse(t,e){let r=u1(t)&&gM(t,e)?t[e]:void 0;return Drt(r)}function yE(t,e){return[t,e,Ose]}function dM(t){return Array.isArray(t)?t[2]===Ose:!1}function pM(t,e){if(u1(t)){let r={};for(let o of Object.keys(t))r[o]=pM(t[o],e);return yE(e,r)}return Array.isArray(t)?yE(e,t.map(r=>pM(r,e))):yE(e,t)}function hM(t,e,r,o,a){let n,u=[],A=a,p=0;for(let E=a-1;E>=o;--E){let[I,v]=t[E],{onConflict:x,value:C}=Lse(v,r),R=Nse(C);if(R!==3){if(n??=R,R!==n||x==="hardReset"){p=A;break}if(R===2)return yE(I,C);if(u.unshift([I,C]),x==="reset"){p=E;break}x==="extend"&&E===o&&(o=0),A=E}}if(typeof n>"u")return null;let h=u.map(([E])=>E).join(", ");switch(n){case 1:return yE(h,new Array().concat(...u.map(([E,I])=>I.map(v=>pM(v,E)))));case 0:{let E=Object.assign({},...u.map(([,R])=>R)),I=Object.keys(E),v={},x=t.map(([R,L])=>[R,Lse(L,r).value]),C=Brt(x,([R,L])=>{let U=Nse(L);return U!==0&&U!==3});if(C!==-1){let R=x.slice(C+1);for(let L of I)v[L]=hM(R,e,L,0,R.length)}else for(let R of I)v[R]=hM(x,e,R,p,x.length);return yE(h,v)}default:throw new Error("Assertion failed: Non-extendable value type")}}function Mse(t){return hM(t.map(([e,r])=>[e,{["."]:r}]),[],".",0,t.length)}function A1(t){return dM(t)?t[1]:t}function qP(t){let e=dM(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>qP(r));if(u1(e)){let r={};for(let[o,a]of Object.entries(e))r[o]=qP(a);return r}return e}function mM(t){return dM(t)?t[0]:null}var Brt,Ose,Use=Et(()=>{Brt=(t,e,r)=>{let o=[...t];return o.reverse(),o.findIndex(e,r)};Ose=Symbol()});var YP={};Vt(YP,{getDefaultGlobalFolder:()=>EM,getHomeFolder:()=>EE,isFolderInside:()=>CM});function EM(){if(process.platform==="win32"){let t=ue.toPortablePath(process.env.LOCALAPPDATA||ue.join((0,yM.homedir)(),"AppData","Local"));return V.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=ue.toPortablePath(process.env.XDG_DATA_HOME);return V.resolve(t,"yarn/berry")}return V.resolve(EE(),".yarn/berry")}function EE(){return ue.toPortablePath((0,yM.homedir)()||"/usr/local/share")}function CM(t,e){let r=V.relative(e,t);return r&&!r.startsWith("..")&&!V.isAbsolute(r)}var yM,WP=Et(()=>{St();yM=ve("os")});var Gse=_(CE=>{"use strict";var iLt=ve("net"),Prt=ve("tls"),wM=ve("http"),_se=ve("https"),brt=ve("events"),sLt=ve("assert"),xrt=ve("util");CE.httpOverHttp=krt;CE.httpsOverHttp=Qrt;CE.httpOverHttps=Frt;CE.httpsOverHttps=Rrt;function krt(t){var e=new Ff(t);return e.request=wM.request,e}function Qrt(t){var e=new Ff(t);return e.request=wM.request,e.createSocket=Hse,e.defaultPort=443,e}function Frt(t){var e=new Ff(t);return e.request=_se.request,e}function Rrt(t){var e=new Ff(t);return e.request=_se.request,e.createSocket=Hse,e.defaultPort=443,e}function Ff(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||wM.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(o,a,n,u){for(var A=jse(a,n,u),p=0,h=e.requests.length;p=this.maxSockets){n.requests.push(u);return}n.createSocket(u,function(A){A.on("free",p),A.on("close",h),A.on("agentRemove",h),e.onSocket(A);function p(){n.emit("free",A,u)}function h(E){n.removeSocket(A),A.removeListener("free",p),A.removeListener("close",h),A.removeListener("agentRemove",h)}})};Ff.prototype.createSocket=function(e,r){var o=this,a={};o.sockets.push(a);var n=IM({},o.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers["Proxy-Authorization"]="Basic "+new Buffer(n.proxyAuth).toString("base64")),oh("making CONNECT request");var u=o.request(n);u.useChunkedEncodingByDefault=!1,u.once("response",A),u.once("upgrade",p),u.once("connect",h),u.once("error",E),u.end();function A(I){I.upgrade=!0}function p(I,v,x){process.nextTick(function(){h(I,v,x)})}function h(I,v,x){if(u.removeAllListeners(),v.removeAllListeners(),I.statusCode!==200){oh("tunneling socket could not be established, statusCode=%d",I.statusCode),v.destroy();var C=new Error("tunneling socket could not be established, statusCode="+I.statusCode);C.code="ECONNRESET",e.request.emit("error",C),o.removeSocket(a);return}if(x.length>0){oh("got illegal response body from proxy"),v.destroy();var C=new Error("got illegal response body from proxy");C.code="ECONNRESET",e.request.emit("error",C),o.removeSocket(a);return}return oh("tunneling connection has established"),o.sockets[o.sockets.indexOf(a)]=v,r(v)}function E(I){u.removeAllListeners(),oh(`tunneling socket could not be established, cause=%s +`,I.message,I.stack);var v=new Error("tunneling socket could not be established, cause="+I.message);v.code="ECONNRESET",e.request.emit("error",v),o.removeSocket(a)}};Ff.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var o=this.requests.shift();o&&this.createSocket(o,function(a){o.request.onSocket(a)})}};function Hse(t,e){var r=this;Ff.prototype.createSocket.call(r,t,function(o){var a=t.request.getHeader("host"),n=IM({},r.options,{socket:o,servername:a?a.replace(/:.*$/,""):t.host}),u=Prt.connect(0,n);r.sockets[r.sockets.indexOf(o)]=u,e(u)})}function jse(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function IM(t){for(var e=1,r=arguments.length;e{qse.exports=Gse()});var Tf=_((Rf,KP)=>{"use strict";Object.defineProperty(Rf,"__esModule",{value:!0});var Wse=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function Trt(t){return Wse.includes(t)}var Nrt=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...Wse];function Lrt(t){return Nrt.includes(t)}var Ort=["null","undefined","string","number","bigint","boolean","symbol"];function Mrt(t){return Ort.includes(t)}function wE(t){return e=>typeof e===t}var{toString:Kse}=Object.prototype,f1=t=>{let e=Kse.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&be.domElement(t))return"HTMLElement";if(Lrt(e))return e},ei=t=>e=>f1(e)===t;function be(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(be.observable(t))return"Observable";if(be.array(t))return"Array";if(be.buffer(t))return"Buffer";let e=f1(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"}be.undefined=wE("undefined");be.string=wE("string");var Urt=wE("number");be.number=t=>Urt(t)&&!be.nan(t);be.bigint=wE("bigint");be.function_=wE("function");be.null_=t=>t===null;be.class_=t=>be.function_(t)&&t.toString().startsWith("class ");be.boolean=t=>t===!0||t===!1;be.symbol=wE("symbol");be.numericString=t=>be.string(t)&&!be.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));be.array=(t,e)=>Array.isArray(t)?be.function_(e)?t.every(e):!0:!1;be.buffer=t=>{var e,r,o,a;return(a=(o=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||o===void 0?void 0:o.call(r,t))!==null&&a!==void 0?a:!1};be.nullOrUndefined=t=>be.null_(t)||be.undefined(t);be.object=t=>!be.null_(t)&&(typeof t=="object"||be.function_(t));be.iterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};be.asyncIterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};be.generator=t=>be.iterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.asyncGenerator=t=>be.asyncIterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.nativePromise=t=>ei("Promise")(t);var _rt=t=>{var e,r;return be.function_((e=t)===null||e===void 0?void 0:e.then)&&be.function_((r=t)===null||r===void 0?void 0:r.catch)};be.promise=t=>be.nativePromise(t)||_rt(t);be.generatorFunction=ei("GeneratorFunction");be.asyncGeneratorFunction=t=>f1(t)==="AsyncGeneratorFunction";be.asyncFunction=t=>f1(t)==="AsyncFunction";be.boundFunction=t=>be.function_(t)&&!t.hasOwnProperty("prototype");be.regExp=ei("RegExp");be.date=ei("Date");be.error=ei("Error");be.map=t=>ei("Map")(t);be.set=t=>ei("Set")(t);be.weakMap=t=>ei("WeakMap")(t);be.weakSet=t=>ei("WeakSet")(t);be.int8Array=ei("Int8Array");be.uint8Array=ei("Uint8Array");be.uint8ClampedArray=ei("Uint8ClampedArray");be.int16Array=ei("Int16Array");be.uint16Array=ei("Uint16Array");be.int32Array=ei("Int32Array");be.uint32Array=ei("Uint32Array");be.float32Array=ei("Float32Array");be.float64Array=ei("Float64Array");be.bigInt64Array=ei("BigInt64Array");be.bigUint64Array=ei("BigUint64Array");be.arrayBuffer=ei("ArrayBuffer");be.sharedArrayBuffer=ei("SharedArrayBuffer");be.dataView=ei("DataView");be.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;be.urlInstance=t=>ei("URL")(t);be.urlString=t=>{if(!be.string(t))return!1;try{return new URL(t),!0}catch{return!1}};be.truthy=t=>Boolean(t);be.falsy=t=>!t;be.nan=t=>Number.isNaN(t);be.primitive=t=>be.null_(t)||Mrt(typeof t);be.integer=t=>Number.isInteger(t);be.safeInteger=t=>Number.isSafeInteger(t);be.plainObject=t=>{if(Kse.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};be.typedArray=t=>Trt(f1(t));var Hrt=t=>be.safeInteger(t)&&t>=0;be.arrayLike=t=>!be.nullOrUndefined(t)&&!be.function_(t)&&Hrt(t.length);be.inRange=(t,e)=>{if(be.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(be.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var jrt=1,Grt=["innerHTML","ownerDocument","style","attributes","nodeValue"];be.domElement=t=>be.object(t)&&t.nodeType===jrt&&be.string(t.nodeName)&&!be.plainObject(t)&&Grt.every(e=>e in t);be.observable=t=>{var e,r,o,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(o=t)["@@observable"])===null||a===void 0?void 0:a.call(o)):!1};be.nodeStream=t=>be.object(t)&&be.function_(t.pipe)&&!be.observable(t);be.infinite=t=>t===1/0||t===-1/0;var Vse=t=>e=>be.integer(e)&&Math.abs(e%2)===t;be.evenInteger=Vse(0);be.oddInteger=Vse(1);be.emptyArray=t=>be.array(t)&&t.length===0;be.nonEmptyArray=t=>be.array(t)&&t.length>0;be.emptyString=t=>be.string(t)&&t.length===0;be.nonEmptyString=t=>be.string(t)&&t.length>0;var qrt=t=>be.string(t)&&!/\S/.test(t);be.emptyStringOrWhitespace=t=>be.emptyString(t)||qrt(t);be.emptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length===0;be.nonEmptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length>0;be.emptySet=t=>be.set(t)&&t.size===0;be.nonEmptySet=t=>be.set(t)&&t.size>0;be.emptyMap=t=>be.map(t)&&t.size===0;be.nonEmptyMap=t=>be.map(t)&&t.size>0;be.propertyKey=t=>be.any([be.string,be.number,be.symbol],t);be.formData=t=>ei("FormData")(t);be.urlSearchParams=t=>ei("URLSearchParams")(t);var Jse=(t,e,r)=>{if(!be.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)};be.any=(t,...e)=>(be.array(t)?t:[t]).some(o=>Jse(Array.prototype.some,o,e));be.all=(t,...e)=>Jse(Array.prototype.every,t,e);var Ht=(t,e,r,o={})=>{if(!t){let{multipleValues:a}=o,n=a?`received values of types ${[...new Set(r.map(u=>`\`${be(u)}\``))].join(", ")}`:`received value of type \`${be(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${n}.`)}};Rf.assert={undefined:t=>Ht(be.undefined(t),"undefined",t),string:t=>Ht(be.string(t),"string",t),number:t=>Ht(be.number(t),"number",t),bigint:t=>Ht(be.bigint(t),"bigint",t),function_:t=>Ht(be.function_(t),"Function",t),null_:t=>Ht(be.null_(t),"null",t),class_:t=>Ht(be.class_(t),"Class",t),boolean:t=>Ht(be.boolean(t),"boolean",t),symbol:t=>Ht(be.symbol(t),"symbol",t),numericString:t=>Ht(be.numericString(t),"string with a number",t),array:(t,e)=>{Ht(be.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Ht(be.buffer(t),"Buffer",t),nullOrUndefined:t=>Ht(be.nullOrUndefined(t),"null or undefined",t),object:t=>Ht(be.object(t),"Object",t),iterable:t=>Ht(be.iterable(t),"Iterable",t),asyncIterable:t=>Ht(be.asyncIterable(t),"AsyncIterable",t),generator:t=>Ht(be.generator(t),"Generator",t),asyncGenerator:t=>Ht(be.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Ht(be.nativePromise(t),"native Promise",t),promise:t=>Ht(be.promise(t),"Promise",t),generatorFunction:t=>Ht(be.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Ht(be.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Ht(be.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Ht(be.boundFunction(t),"Function",t),regExp:t=>Ht(be.regExp(t),"RegExp",t),date:t=>Ht(be.date(t),"Date",t),error:t=>Ht(be.error(t),"Error",t),map:t=>Ht(be.map(t),"Map",t),set:t=>Ht(be.set(t),"Set",t),weakMap:t=>Ht(be.weakMap(t),"WeakMap",t),weakSet:t=>Ht(be.weakSet(t),"WeakSet",t),int8Array:t=>Ht(be.int8Array(t),"Int8Array",t),uint8Array:t=>Ht(be.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Ht(be.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Ht(be.int16Array(t),"Int16Array",t),uint16Array:t=>Ht(be.uint16Array(t),"Uint16Array",t),int32Array:t=>Ht(be.int32Array(t),"Int32Array",t),uint32Array:t=>Ht(be.uint32Array(t),"Uint32Array",t),float32Array:t=>Ht(be.float32Array(t),"Float32Array",t),float64Array:t=>Ht(be.float64Array(t),"Float64Array",t),bigInt64Array:t=>Ht(be.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Ht(be.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Ht(be.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Ht(be.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Ht(be.dataView(t),"DataView",t),urlInstance:t=>Ht(be.urlInstance(t),"URL",t),urlString:t=>Ht(be.urlString(t),"string with a URL",t),truthy:t=>Ht(be.truthy(t),"truthy",t),falsy:t=>Ht(be.falsy(t),"falsy",t),nan:t=>Ht(be.nan(t),"NaN",t),primitive:t=>Ht(be.primitive(t),"primitive",t),integer:t=>Ht(be.integer(t),"integer",t),safeInteger:t=>Ht(be.safeInteger(t),"integer",t),plainObject:t=>Ht(be.plainObject(t),"plain object",t),typedArray:t=>Ht(be.typedArray(t),"TypedArray",t),arrayLike:t=>Ht(be.arrayLike(t),"array-like",t),domElement:t=>Ht(be.domElement(t),"HTMLElement",t),observable:t=>Ht(be.observable(t),"Observable",t),nodeStream:t=>Ht(be.nodeStream(t),"Node.js Stream",t),infinite:t=>Ht(be.infinite(t),"infinite number",t),emptyArray:t=>Ht(be.emptyArray(t),"empty array",t),nonEmptyArray:t=>Ht(be.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Ht(be.emptyString(t),"empty string",t),nonEmptyString:t=>Ht(be.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Ht(be.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Ht(be.emptyObject(t),"empty object",t),nonEmptyObject:t=>Ht(be.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Ht(be.emptySet(t),"empty set",t),nonEmptySet:t=>Ht(be.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Ht(be.emptyMap(t),"empty map",t),nonEmptyMap:t=>Ht(be.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Ht(be.propertyKey(t),"PropertyKey",t),formData:t=>Ht(be.formData(t),"FormData",t),urlSearchParams:t=>Ht(be.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Ht(be.evenInteger(t),"even integer",t),oddInteger:t=>Ht(be.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Ht(be.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Ht(be.inRange(t,e),"in range",t),any:(t,...e)=>Ht(be.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Ht(be.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(be,{class:{value:be.class_},function:{value:be.function_},null:{value:be.null_}});Object.defineProperties(Rf.assert,{class:{value:Rf.assert.class_},function:{value:Rf.assert.function_},null:{value:Rf.assert.null_}});Rf.default=be;KP.exports=be;KP.exports.default=be;KP.exports.assert=Rf.assert});var zse=_((lLt,BM)=>{"use strict";var VP=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},IE=class{static fn(e){return(...r)=>new IE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,o)=>{this._reject=o;let a=A=>{this._isPending=!1,r(A)},n=A=>{this._isPending=!1,o(A)},u=A=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(A)};return Object.defineProperties(u,{shouldReject:{get:()=>this._rejectOnCancel,set:A=>{this._rejectOnCancel=A}}}),e(a,n,u)})}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 VP(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(IE.prototype,Promise.prototype);BM.exports=IE;BM.exports.CancelError=VP});var Xse=_((DM,SM)=>{"use strict";Object.defineProperty(DM,"__esModule",{value:!0});var Yrt=ve("tls"),vM=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let o=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",u=()=>{o&&r.connect(),t instanceof Yrt.TLSSocket&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),n&&t.once("close",r.close)};t.writable&&!t.connecting?u():t.connecting?t.once("connect",u):t.destroyed&&n&&r.close(t._hadError)};DM.default=vM;SM.exports=vM;SM.exports.default=vM});var Zse=_((bM,xM)=>{"use strict";Object.defineProperty(bM,"__esModule",{value:!0});var Wrt=Xse(),Krt=Number(process.versions.node.split(".")[0]),PM=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=u=>{let A=u.emit.bind(u);u.emit=(p,...h)=>(p==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,u.emit=A),A(p,...h))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||Krt>=13)&&(e.phases.total=Date.now()-e.start)});let o=u=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let A=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};u.prependOnceListener("lookup",A),Wrt.default(u,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(u.removeListener("lookup",A),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?o(t.socket):t.prependOnceListener("socket",o);let a=()=>{var u;e.upload=Date.now(),e.phases.request=e.upload-(u=e.secureConnect,u??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",u=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,u.timings=e,r(u),u.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};bM.default=PM;xM.exports=PM;xM.exports.default=PM});var soe=_((cLt,FM)=>{"use strict";var{V4MAPPED:Vrt,ADDRCONFIG:Jrt,ALL:ioe,promises:{Resolver:$se},lookup:zrt}=ve("dns"),{promisify:kM}=ve("util"),Xrt=ve("os"),BE=Symbol("cacheableLookupCreateConnection"),QM=Symbol("cacheableLookupInstance"),eoe=Symbol("expires"),Zrt=typeof ioe=="number",toe=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},$rt=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},roe=()=>{let t=!1,e=!1;for(let r of Object.values(Xrt.networkInterfaces()))for(let o of r)if(!o.internal&&(o.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},ent=t=>Symbol.iterator in t,noe={ttl:!0},tnt={all:!0},JP=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorTtl:a=.15,resolver:n=new $se,lookup:u=zrt}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=kM(u),this._resolver instanceof $se?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=kM(this._resolver.resolve4.bind(this._resolver)),this._resolve6=kM(this._resolver.resolve6.bind(this._resolver))),this._iface=roe(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,o<1)this._fallback=!1;else{this._fallback=!0;let A=setInterval(()=>{this._hostnamesToFallback.clear()},o*1e3);A.unref&&A.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,o){if(typeof r=="function"?(o=r,r={}):typeof r=="number"&&(r={family:r}),!o)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(a=>{r.all?o(null,a):o(null,a.address,a.family,a.expires,a.ttl)},o)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let o=await this.query(e);if(r.family===6){let a=o.filter(n=>n.family===6);r.hints&Vrt&&(Zrt&&r.hints&ioe||a.length===0)?$rt(o):o=a}else r.family===4&&(o=o.filter(a=>a.family===4));if(r.hints&Jrt){let{_iface:a}=this;o=o.filter(n=>n.family===6?a.has6:a.has4)}if(o.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code="ENOTFOUND",a.hostname=e,a}return r.all?o:o[0]}async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending[e];if(o)r=await o;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(o=>({...o})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code==="ENODATA"||E.code==="ENOTFOUND")return[];throw E}},[o,a]=await Promise.all([this._resolve4(e,noe),this._resolve6(e,noe)].map(h=>r(h))),n=0,u=0,A=0,p=Date.now();for(let h of o)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,u=Math.max(u,h.ttl);return o.length>0?a.length>0?A=Math.min(n,u):A=n:A=u,{entries:[...o,...a],cacheTtl:A}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r[eoe]=Date.now()+o;try{await this._cache.set(e,r,o)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}ent(this._cache)&&this._tick(o)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,tnt);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 o=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,o),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 o=1/0,a=Date.now();for(let[n,u]of this._cache){let A=u[eoe];a>=A?this._cache.delete(n):A("lookup"in r||(r.lookup=this.lookup),e[BE](r,o))}uninstall(e){if(toe(e),e[BE]){if(e[QM]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[BE],delete e[BE],delete e[QM]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=roe(),(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()}};FM.exports=JP;FM.exports.default=JP});var loe=_((uLt,RM)=>{"use strict";var rnt=typeof URL>"u"?ve("url").URL:URL,nnt="text/plain",int="us-ascii",ooe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),snt=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let o=r[1].split(";"),a=r[2],n=e?"":r[3],u=!1;o[o.length-1]==="base64"&&(o.pop(),u=!0);let A=(o.shift()||"").toLowerCase(),h=[...o.map(E=>{let[I,v=""]=E.split("=").map(x=>x.trim());return I==="charset"&&(v=v.toLowerCase(),v===int)?"":`${I}${v?`=${v}`:""}`}).filter(Boolean)];return u&&h.push("base64"),(h.length!==0||A&&A!==nnt)&&h.unshift(A),`data:${h.join(";")},${u?a.trim():a}${n?`#${n}`:""}`},aoe=(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 snt(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new rnt(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,u)=>/^(?!\/)/g.test(u)?`${u}/`:"/")),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("/"),u=n[n.length-1];ooe(u,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()])ooe(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};RM.exports=aoe;RM.exports.default=aoe});var Aoe=_((ALt,uoe)=>{uoe.exports=coe;function coe(t,e){if(t&&e)return coe(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(o){r[o]=t[o]}),r;function r(){for(var o=new Array(arguments.length),a=0;a{var foe=Aoe();TM.exports=foe(zP);TM.exports.strict=foe(poe);zP.proto=zP(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return zP(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return poe(this)},configurable:!0})});function zP(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function poe(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 LM=_((pLt,goe)=>{var ont=NM(),ant=function(){},lnt=function(t){return t.setHeader&&typeof t.abort=="function"},cnt=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},hoe=function(t,e,r){if(typeof e=="function")return hoe(t,null,e);e||(e={}),r=ont(r||ant);var o=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,u=e.writable||e.writable!==!1&&t.writable,A=function(){t.writable||p()},p=function(){u=!1,n||r.call(t)},h=function(){n=!1,u||r.call(t)},E=function(C){r.call(t,C?new Error("exited with error code: "+C):null)},I=function(C){r.call(t,C)},v=function(){if(n&&!(a&&a.ended))return r.call(t,new Error("premature close"));if(u&&!(o&&o.ended))return r.call(t,new Error("premature close"))},x=function(){t.req.on("finish",p)};return lnt(t)?(t.on("complete",p),t.on("abort",v),t.req?x():t.on("request",x)):u&&!o&&(t.on("end",A),t.on("close",A)),cnt(t)&&t.on("exit",E),t.on("end",h),t.on("finish",p),e.error!==!1&&t.on("error",I),t.on("close",v),function(){t.removeListener("complete",p),t.removeListener("abort",v),t.removeListener("request",x),t.req&&t.req.removeListener("finish",p),t.removeListener("end",A),t.removeListener("close",A),t.removeListener("finish",p),t.removeListener("exit",E),t.removeListener("end",h),t.removeListener("error",I),t.removeListener("close",v)}};goe.exports=hoe});var yoe=_((hLt,moe)=>{var unt=NM(),Ant=LM(),OM=ve("fs"),p1=function(){},fnt=/^v?\.0/.test(process.version),XP=function(t){return typeof t=="function"},pnt=function(t){return!fnt||!OM?!1:(t instanceof(OM.ReadStream||p1)||t instanceof(OM.WriteStream||p1))&&XP(t.close)},hnt=function(t){return t.setHeader&&XP(t.abort)},gnt=function(t,e,r,o){o=unt(o);var a=!1;t.on("close",function(){a=!0}),Ant(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,pnt(t))return t.close(p1);if(hnt(t))return t.abort();if(XP(t.destroy))return t.destroy();o(u||new Error("stream was destroyed"))}}},doe=function(t){t()},dnt=function(t,e){return t.pipe(e)},mnt=function(){var t=Array.prototype.slice.call(arguments),e=XP(t[t.length-1]||p1)&&t.pop()||p1;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,o=t.map(function(a,n){var u=n0;return gnt(a,u,A,function(p){r||(r=p),p&&o.forEach(doe),!u&&(o.forEach(doe),e(r))})});return t.reduce(dnt)};moe.exports=mnt});var Coe=_((gLt,Eoe)=>{"use strict";var{PassThrough:ynt}=ve("stream");Eoe.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,o=r==="buffer",a=!1;e?a=!(r||o):r=r||"utf8",o&&(r=null);let n=new ynt({objectMode:a});r&&n.setEncoding(r);let u=0,A=[];return n.on("data",p=>{A.push(p),a?u=A.length:u+=p.length}),n.getBufferedValue=()=>e?A:o?Buffer.concat(A,u):A.join(""),n.getBufferedLength=()=>u,n}});var woe=_((dLt,vE)=>{"use strict";var Ent=yoe(),Cnt=Coe(),ZP=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function $P(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,o;return await new Promise((a,n)=>{let u=A=>{A&&(A.bufferedData=o.getBufferedValue()),n(A)};o=Ent(t,Cnt(e),A=>{if(A){u(A);return}a()}),o.on("data",()=>{o.getBufferedLength()>r&&u(new ZP)})}),o.getBufferedValue()}vE.exports=$P;vE.exports.default=$P;vE.exports.buffer=(t,e)=>$P(t,{...e,encoding:"buffer"});vE.exports.array=(t,e)=>$P(t,{...e,array:!0});vE.exports.MaxBufferError=ZP});var Boe=_((yLt,Ioe)=>{"use strict";var wnt=new Set([200,203,204,206,300,301,404,405,410,414,501]),Int=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),Bnt=new Set([500,502,503,504]),vnt={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Dnt={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function Sd(t){let e=parseInt(t,10);return isFinite(e)?e:0}function Snt(t){return t?Bnt.has(t.status):!0}function MM(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let o of r){let[a,n]=o.split(/\s*=\s*/,2);e[a]=n===void 0?!0:n.replace(/^"|"$/g,"")}return e}function Pnt(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+"="+o)}if(!!e.length)return e.join(", ")}Ioe.exports=class{constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:u,_fromObject:A}={}){if(A){this._fromObject(A);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=o!==!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=MM(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=MM(e.headers["cache-control"]),u&&"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":Pnt(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())&&Int.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||wnt.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=MM(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 o of r)if(e.headers[o]!==this._reqHeaders[o])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let o in e)vnt[o]||(r[o]=e[o]);if(e.connection){let o=e.connection.trim().split(/\s*,\s*/);for(let a of o)delete r[a]}if(r.warning){let o=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));o.length?r.warning=o.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 Sd(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 Sd(this._rescc["s-maxage"])}if(this._rescc["max-age"])return Sd(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let o=Date.parse(this._resHeaders.expires);return Number.isNaN(o)||oo)return Math.max(e,(r-o)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+Sd(this._rescc["stale-if-error"]),o=e+Sd(this._rescc["stale-while-revalidate"]);return Math.max(0,e,r,o)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+Sd(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+Sd(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()&&Snt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let o=!1;if(r.status!==void 0&&r.status!=304?o=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?o=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?o=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?o=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(o=!0),!o)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let u in this._resHeaders)a[u]=u in r.headers&&!Dnt[u]?r.headers[u]:this._resHeaders[u];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 eb=_((ELt,voe)=>{"use strict";voe.exports=t=>{let e={};for(let[r,o]of Object.entries(t))e[r.toLowerCase()]=o;return e}});var Soe=_((CLt,Doe)=>{"use strict";var bnt=ve("stream").Readable,xnt=eb(),UM=class extends bnt{constructor(e,r,o,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(!(o 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=xnt(r),this.body=o,this.url=a}_read(){this.push(this.body),this.push(null)}};Doe.exports=UM});var boe=_((wLt,Poe)=>{"use strict";var knt=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Poe.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(knt));for(let o of r)o in e||(e[o]=typeof t[o]=="function"?t[o].bind(t):t[o])}});var koe=_((ILt,xoe)=>{"use strict";var Qnt=ve("stream").PassThrough,Fnt=boe(),Rnt=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Qnt;return Fnt(t,e),t.pipe(e)};xoe.exports=Rnt});var Qoe=_(_M=>{_M.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="",o=Array.isArray(e);r=o?"[":"{";var a=!0;for(var n in e){var u=typeof e[n]=="function"||!o&&typeof e[n]>"u";Object.hasOwnProperty.call(e,n)&&!u&&(a||(r+=","),a=!1,o?e[n]==null?r+="null":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+":"+t(e[n])))}return r+=o?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};_M.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 Toe=_((vLt,Roe)=>{"use strict";var Tnt=ve("events"),Foe=Qoe(),Nnt=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(ve(e[r]))(t)}return new Map},HM=class extends Tnt{constructor(e,r){if(super(),this.opts=Object.assign({namespace:"keyv",serialize:Foe.stringify,deserialize:Foe.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let o=Object.assign({},this.opts);this.opts.store=Nnt(o)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",o=>this.emit("error",o)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:o}=this.opts;return Promise.resolve().then(()=>o.get(e)).then(a=>typeof a=="string"?this.opts.deserialize(a):a).then(a=>{if(a!==void 0){if(typeof a.expires=="number"&&Date.now()>a.expires){this.delete(e);return}return r&&r.raw?a:a.value}})}set(e,r,o){e=this._getKeyPrefix(e),typeof o>"u"&&(o=this.opts.ttl),o===0&&(o=void 0);let{store:a}=this.opts;return Promise.resolve().then(()=>{let n=typeof o=="number"?Date.now()+o:null;return r={value:r,expires:n},this.opts.serialize(r)}).then(n=>a.set(e,n,o)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};Roe.exports=HM});var Ooe=_((SLt,Loe)=>{"use strict";var Lnt=ve("events"),tb=ve("url"),Ont=loe(),Mnt=woe(),jM=Boe(),Noe=Soe(),Unt=eb(),_nt=koe(),Hnt=Toe(),jc=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Hnt({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,o)=>{let a;if(typeof r=="string")a=GM(tb.parse(r)),r={};else if(r instanceof tb.URL)a=GM(tb.parse(r.toString())),r={};else{let[I,...v]=(r.path||"").split("?"),x=v.length>0?`?${v.join("?")}`:"";a=GM({...r,pathname:I,search:x})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...jnt(a)},r.headers=Unt(r.headers);let n=new Lnt,u=Ont(tb.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),A=`${r.method}:${u}`,p=!1,h=!1,E=I=>{h=!0;let v=!1,x,C=new Promise(L=>{x=()=>{v||(v=!0,L())}}),R=L=>{if(p&&!I.forceRefresh){L.status=L.statusCode;let J=jM.fromObject(p.cachePolicy).revalidatedPolicy(I,L);if(!J.modified){let te=J.policy.responseHeaders();L=new Noe(p.statusCode,te,p.body,p.url),L.cachePolicy=J.policy,L.fromCache=!0}}L.fromCache||(L.cachePolicy=new jM(I,L,I),L.fromCache=!1);let U;I.cache&&L.cachePolicy.storable()?(U=_nt(L),(async()=>{try{let J=Mnt.buffer(L);if(await Promise.race([C,new Promise(ce=>L.once("end",ce))]),v)return;let te=await J,ae={cachePolicy:L.cachePolicy.toObject(),url:L.url,statusCode:L.fromCache?p.statusCode:L.statusCode,body:te},fe=I.strictTtl?L.cachePolicy.timeToLive():void 0;I.maxTtl&&(fe=fe?Math.min(fe,I.maxTtl):I.maxTtl),await this.cache.set(A,ae,fe)}catch(J){n.emit("error",new jc.CacheError(J))}})()):I.cache&&p&&(async()=>{try{await this.cache.delete(A)}catch(J){n.emit("error",new jc.CacheError(J))}})(),n.emit("response",U||L),typeof o=="function"&&o(U||L)};try{let L=e(I,R);L.once("error",x),L.once("abort",x),n.emit("request",L)}catch(L){n.emit("error",new jc.RequestError(L))}};return(async()=>{let I=async x=>{await Promise.resolve();let C=x.cache?await this.cache.get(A):void 0;if(typeof C>"u")return E(x);let R=jM.fromObject(C.cachePolicy);if(R.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let L=R.responseHeaders(),U=new Noe(C.statusCode,L,C.body,C.url);U.cachePolicy=R,U.fromCache=!0,n.emit("response",U),typeof o=="function"&&o(U)}else p=C,x.headers=R.revalidationHeaders(x),E(x)},v=x=>n.emit("error",new jc.CacheError(x));this.cache.once("error",v),n.on("response",()=>this.cache.removeListener("error",v));try{await I(r)}catch(x){r.automaticFailover&&!h&&E(r),n.emit("error",new jc.CacheError(x))}})(),n}}};function jnt(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function GM(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}jc.RequestError=class extends Error{constructor(t){super(t.message),this.name="RequestError",Object.assign(this,t)}};jc.CacheError=class extends Error{constructor(t){super(t.message),this.name="CacheError",Object.assign(this,t)}};Loe.exports=jc});var Uoe=_((xLt,Moe)=>{"use strict";var Gnt=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];Moe.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(Gnt)),o={};for(let a of r)a in e||(o[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,o),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 Hoe=_((kLt,_oe)=>{"use strict";var{Transform:qnt,PassThrough:Ynt}=ve("stream"),qM=ve("zlib"),Wnt=Uoe();_oe.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof qM.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let o=!0,a=new qnt({transform(A,p,h){o=!1,h(null,A)},flush(A){A()}}),n=new Ynt({autoDestroy:!1,destroy(A,p){t.destroy(),p(A)}}),u=r?qM.createBrotliDecompress():qM.createUnzip();return u.once("error",A=>{if(o&&!t.readable){n.end();return}n.destroy(A)}),Wnt(t,n),t.pipe(a).pipe(u).pipe(n),n}});var WM=_((QLt,joe)=>{"use strict";var YM=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[o,a]of this.oldCache.entries())this.onEviction(o,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)}};joe.exports=YM});var VM=_((FLt,Woe)=>{"use strict";var Knt=ve("events"),Vnt=ve("tls"),Jnt=ve("http2"),znt=WM(),ea=Symbol("currentStreamsCount"),Goe=Symbol("request"),Wl=Symbol("cachedOriginSet"),DE=Symbol("gracefullyClosing"),Xnt=["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"],Znt=(t,e,r)=>{let o=0,a=t.length;for(;o>>1;r(t[n],e)?o=n+1:a=n}return o},$nt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,KM=(t,e)=>{for(let r of t)r[Wl].lengthe[Wl].includes(o))&&r[ea]+e[ea]<=e.remoteSettings.maxConcurrentStreams&&Yoe(r)},eit=(t,e)=>{for(let r of t)e[Wl].lengthr[Wl].includes(o))&&e[ea]+r[ea]<=r.remoteSettings.maxConcurrentStreams&&Yoe(e)},qoe=({agent:t,isFree:e})=>{let r={};for(let o in t.sessions){let n=t.sessions[o].filter(u=>{let A=u[tA.kCurrentStreamsCount]{t[DE]=!0,t[ea]===0&&t.close()},tA=class extends Knt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=o,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new znt({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 o of Xnt)e[o]&&(r+=`:${e[o]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let o=this.queue[e][r];this._sessionsCount{Array.isArray(o)?(o=[...o],a()):o=[{resolve:a,reject:n}];let u=this.normalizeOptions(r),A=tA.normalizeOrigin(e,r&&r.servername);if(A===void 0){for(let{reject:E}of o)E(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(u in this.sessions){let E=this.sessions[u],I=-1,v=-1,x;for(let C of E){let R=C.remoteSettings.maxConcurrentStreams;if(R=R||C[DE]||C.destroyed)continue;x||(I=R),L>v&&(x=C,v=L)}}if(x){if(o.length!==1){for(let{reject:C}of o){let R=new Error(`Expected the length of listeners to be 1, got ${o.length}. +Please report this to https://github.com/szmarczak/http2-wrapper/`);C(R)}return}o[0].resolve(x);return}}if(u in this.queue){if(A in this.queue[u]){this.queue[u][A].listeners.push(...o),this._tryToCreateNewSession(u,A);return}}else this.queue[u]={};let p=()=>{u in this.queue&&this.queue[u][A]===h&&(delete this.queue[u][A],Object.keys(this.queue[u]).length===0&&delete this.queue[u])},h=()=>{let E=`${A}:${u}`,I=!1;try{let v=Jnt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});v[ea]=0,v[DE]=!1;let x=()=>v[ea]{this.tlsSessionCache.set(E,L)}),v.once("error",L=>{for(let{reject:U}of o)U(L);this.tlsSessionCache.delete(E)}),v.setTimeout(this.timeout,()=>{v.destroy()}),v.once("close",()=>{if(I){C&&this._freeSessionsCount--,this._sessionsCount--;let L=this.sessions[u];L.splice(L.indexOf(v),1),L.length===0&&delete this.sessions[u]}else{let L=new Error("Session closed without receiving a SETTINGS frame");L.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:U}of o)U(L);p()}this._tryToCreateNewSession(u,A)});let R=()=>{if(!(!(u in this.queue)||!x())){for(let L of v[Wl])if(L in this.queue[u]){let{listeners:U}=this.queue[u][L];for(;U.length!==0&&x();)U.shift().resolve(v);let J=this.queue[u];if(J[L].listeners.length===0&&(delete J[L],Object.keys(J).length===0)){delete this.queue[u];break}if(!x())break}}};v.on("origin",()=>{v[Wl]=v.originSet,x()&&(R(),KM(this.sessions[u],v))}),v.once("remoteSettings",()=>{if(v.ref(),v.unref(),this._sessionsCount++,h.destroyed){let L=new Error("Agent has been destroyed");for(let U of o)U.reject(L);v.destroy();return}v[Wl]=v.originSet;{let L=this.sessions;if(u in L){let U=L[u];U.splice(Znt(U,v,$nt),0,v)}else L[u]=[v]}this._freeSessionsCount+=1,I=!0,this.emit("session",v),R(),p(),v[ea]===0&&this._freeSessionsCount>this.maxFreeSessions&&v.close(),o.length!==0&&(this.getSession(A,r,o),o.length=0),v.on("remoteSettings",()=>{R(),KM(this.sessions[u],v)})}),v[Goe]=v.request,v.request=(L,U)=>{if(v[DE])throw new Error("The session is gracefully closing. No new streams are allowed.");let J=v[Goe](L,U);return v.ref(),++v[ea],v[ea]===v.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,J.once("close",()=>{if(C=x(),--v[ea],!v.destroyed&&!v.closed&&(eit(this.sessions[u],v),x()&&!v.closed)){C||(this._freeSessionsCount++,C=!0);let te=v[ea]===0;te&&v.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||v[DE])?v.close():(KM(this.sessions[u],v),R())}}),J}}catch(v){for(let x of o)x.reject(v);p()}};h.listeners=o,h.completed=!1,h.destroyed=!1,this.queue[u][A]=h,this._tryToCreateNewSession(u,A)})}request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject:u,resolve:A=>{try{n(A.request(o,a))}catch(p){u(p)}}}])})}createConnection(e,r){return tA.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let o=e.port||443,a=e.hostname||e.host;return typeof r.servername>"u"&&(r.servername=a),Vnt.connect(o,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[ea]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.destroy(e);for(let r of Object.values(this.queue))for(let o of Object.values(r))o.destroyed=!0;this.queue={}}get freeSessions(){return qoe({agent:this,isFree:!0})}get busySessions(){return qoe({agent:this,isFree:!1})}};tA.kCurrentStreamsCount=ea;tA.kGracefullyClosing=DE;Woe.exports={Agent:tA,globalAgent:new tA}});var zM=_((RLt,Koe)=>{"use strict";var{Readable:tit}=ve("stream"),JM=class extends tit{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()}};Koe.exports=JM});var XM=_((TLt,Voe)=>{"use strict";Voe.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 zoe=_((NLt,Joe)=>{"use strict";Joe.exports=(t,e,r)=>{for(let o of r)t.on(o,(...a)=>e.emit(o,...a))}});var Zoe=_((LLt,Xoe)=>{"use strict";Xoe.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var eae=_((MLt,$oe)=>{"use strict";var SE=(t,e,r)=>{$oe.exports[e]=class extends t{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};SE(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],o=Array.isArray(r);return o&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${o?"one of":"of"} type ${r}. Received ${typeof t[2]}`});SE(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);SE(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);SE(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);SE(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);SE(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var r4=_((ULt,aae)=>{"use strict";var rit=ve("http2"),{Writable:nit}=ve("stream"),{Agent:tae,globalAgent:iit}=VM(),sit=zM(),oit=XM(),ait=zoe(),lit=Zoe(),{ERR_INVALID_ARG_TYPE:ZM,ERR_INVALID_PROTOCOL:cit,ERR_HTTP_HEADERS_SENT:rae,ERR_INVALID_HTTP_TOKEN:uit,ERR_HTTP_INVALID_HEADER_VALUE:Ait,ERR_INVALID_CHAR:fit}=eae(),{HTTP2_HEADER_STATUS:nae,HTTP2_HEADER_METHOD:iae,HTTP2_HEADER_PATH:sae,HTTP2_METHOD_CONNECT:pit}=rit.constants,Qo=Symbol("headers"),$M=Symbol("origin"),e4=Symbol("session"),oae=Symbol("options"),rb=Symbol("flushedHeaders"),h1=Symbol("jobs"),hit=/^[\^`\-\w!#$%&*+.|~]+$/,git=/[^\t\u0020-\u007E\u0080-\u00FF]/,t4=class extends nit{constructor(e,r,o){super({autoDestroy:!1});let a=typeof e=="string"||e instanceof URL;if(a&&(e=oit(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(o=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[e4]=r.h2session;else if(r.agent===!1)this.agent=new tae({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new tae({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=iit;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new ZM("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new cit(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,u=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:A}=r;if(r.timeout=void 0,this[Qo]=Object.create(null),this[h1]=[],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[Qo])&&(this[Qo].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[oae]=r,n===443?(this[$M]=`https://${u}`,":authority"in this[Qo]||(this[Qo][":authority"]=u)):(this[$M]=`https://${u}:${n}`,":authority"in this[Qo]||(this[Qo][":authority"]=`${u}:${n}`)),A&&this.setTimeout(A),o&&this.once("response",o),this[rb]=!1}get method(){return this[Qo][iae]}set method(e){e&&(this[Qo][iae]=e.toUpperCase())}get path(){return this[Qo][sae]}set path(e){e&&(this[Qo][sae]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,o){if(this._mustNotHaveABody){o(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(e,r,o);this._request?a():this[h1].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[h1].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[rb]||this.destroyed)return;this[rb]=!0;let e=this.method===pit,r=o=>{if(this._request=o,this.destroyed){o.destroy();return}e||ait(o,this,["timeout","continue","close","error"]);let a=u=>(...A)=>{!this.writable&&!this.destroyed?u(...A):this.once("finish",()=>{u(...A)})};o.once("response",a((u,A,p)=>{let h=new sit(this.socket,o.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=u[nae],h.headers=u,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,o,Buffer.alloc(0))?this.emit("close"):o.destroy()):(o.on("data",E=>{!h._dumped&&!h.push(E)&&o.pause()}),o.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),o.once("headers",a(u=>this.emit("information",{statusCode:u[nae]}))),o.once("trailers",a((u,A,p)=>{let{res:h}=this;h.trailers=u,h.rawTrailers=p}));let{socket:n}=o.session;this.socket=n,this.connection=n;for(let u of this[h1])u();this.emit("socket",this.socket)};if(this[e4])try{r(this[e4].request(this[Qo]))}catch(o){this.emit("error",o)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[$M],this[oae],this[Qo]))}catch(o){this.emit("error",o)}}}getHeader(e){if(typeof e!="string")throw new ZM("name","string",e);return this[Qo][e.toLowerCase()]}get headersSent(){return this[rb]}removeHeader(e){if(typeof e!="string")throw new ZM("name","string",e);if(this.headersSent)throw new rae("remove");delete this[Qo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new rae("set");if(typeof e!="string"||!hit.test(e)&&!lit(e))throw new uit("Header name",e);if(typeof r>"u")throw new Ait(r,e);if(git.test(r))throw new fit("header content",e);this[Qo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._request?o():this[h1].push(o),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};aae.exports=t4});var cae=_((_Lt,lae)=>{"use strict";var dit=ve("tls");lae.exports=(t={})=>new Promise((e,r)=>{let o=dit.connect(t,()=>{t.resolveSocket?(o.off("error",r),e({alpnProtocol:o.alpnProtocol,socket:o})):(o.destroy(),e({alpnProtocol:o.alpnProtocol}))});o.on("error",r)})});var Aae=_((HLt,uae)=>{"use strict";var mit=ve("net");uae.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]),mit.isIP(e)?"":e}});var hae=_((jLt,i4)=>{"use strict";var fae=ve("http"),n4=ve("https"),yit=cae(),Eit=WM(),Cit=r4(),wit=Aae(),Iit=XM(),nb=new Eit({maxSize:100}),g1=new Map,pae=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let o=()=>{t.emit("free",e,r)};e.on("free",o);let a=()=>{t.removeSocket(e,r)};e.on("close",a);let n=()=>{t.removeSocket(e,r),e.off("close",a),e.off("free",o),e.off("agentRemove",n)};e.on("agentRemove",n),t.emit("free",e,r)},Bit=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!nb.has(e)){if(g1.has(e))return(await g1.get(e)).alpnProtocol;let{path:r,agent:o}=t;t.path=t.socketPath;let a=yit(t);g1.set(e,a);try{let{socket:n,alpnProtocol:u}=await a;if(nb.set(e,u),t.path=r,u==="h2")n.destroy();else{let{globalAgent:A}=n4,p=n4.Agent.prototype.createConnection;o?o.createConnection===p?pae(o,n,t):n.destroy():A.createConnection===p?pae(A,n,t):n.destroy()}return g1.delete(e),u}catch(n){throw g1.delete(e),n}}return nb.get(e)};i4.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=Iit(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 o=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||wit(e),e.port=e.port||(o?443:80),e._defaultAgent=o?n4.globalAgent:fae.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[o?"https":"http"]}return o&&await Bit(e)==="h2"?(a&&(e.agent=a.http2),new Cit(e,r)):fae.request(e,r)};i4.exports.protocolCache=nb});var dae=_((GLt,gae)=>{"use strict";var vit=ve("http2"),Dit=VM(),s4=r4(),Sit=zM(),Pit=hae(),bit=(t,e,r)=>new s4(t,e,r),xit=(t,e,r)=>{let o=new s4(t,e,r);return o.end(),o};gae.exports={...vit,ClientRequest:s4,IncomingMessage:Sit,...Dit,request:bit,get:xit,auto:Pit}});var a4=_(o4=>{"use strict";Object.defineProperty(o4,"__esModule",{value:!0});var mae=Tf();o4.default=t=>mae.default.nodeStream(t)&&mae.default.function_(t.getBoundary)});var wae=_(l4=>{"use strict";Object.defineProperty(l4,"__esModule",{value:!0});var Eae=ve("fs"),Cae=ve("util"),yae=Tf(),kit=a4(),Qit=Cae.promisify(Eae.stat);l4.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(yae.default.string(t))return Buffer.byteLength(t);if(yae.default.buffer(t))return t.length;if(kit.default(t))return Cae.promisify(t.getLength.bind(t))();if(t instanceof Eae.ReadStream){let{size:r}=await Qit(t.path);return r===0?void 0:r}}});var u4=_(c4=>{"use strict";Object.defineProperty(c4,"__esModule",{value:!0});function Fit(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)},t.on(a,o[a]);return()=>{for(let a of r)t.off(a,o[a])}}c4.default=Fit});var Iae=_(A4=>{"use strict";Object.defineProperty(A4,"__esModule",{value:!0});A4.default=()=>{let t=[];return{once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})},unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListener(o,a)}t.length=0}}}});var vae=_(d1=>{"use strict";Object.defineProperty(d1,"__esModule",{value:!0});d1.TimeoutError=void 0;var Rit=ve("net"),Tit=Iae(),Bae=Symbol("reentry"),Nit=()=>{},ib=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};d1.TimeoutError=ib;d1.default=(t,e,r)=>{if(Bae in t)return Nit;t[Bae]=!0;let o=[],{once:a,unhandleAll:n}=Tit.default(),u=(I,v,x)=>{var C;let R=setTimeout(v,I,I,x);(C=R.unref)===null||C===void 0||C.call(R);let L=()=>{clearTimeout(R)};return o.push(L),L},{host:A,hostname:p}=r,h=(I,v)=>{t.destroy(new ib(I,v))},E=()=>{for(let I of o)I();n()};if(t.once("error",I=>{if(E(),t.listenerCount("error")===0)throw I}),t.once("close",E),a(t,"response",I=>{a(I,"end",E)}),typeof e.request<"u"&&u(e.request,h,"request"),typeof e.socket<"u"){let I=()=>{h(e.socket,"socket")};t.setTimeout(e.socket,I),o.push(()=>{t.removeListener("timeout",I)})}return a(t,"socket",I=>{var v;let{socketPath:x}=t;if(I.connecting){let C=Boolean(x??Rit.isIP((v=p??A)!==null&&v!==void 0?v:"")!==0);if(typeof e.lookup<"u"&&!C&&typeof I.address().address>"u"){let R=u(e.lookup,h,"lookup");a(I,"lookup",R)}if(typeof e.connect<"u"){let R=()=>u(e.connect,h,"connect");C?a(I,"connect",R()):a(I,"lookup",L=>{L===null&&a(I,"connect",R())})}typeof e.secureConnect<"u"&&r.protocol==="https:"&&a(I,"connect",()=>{let R=u(e.secureConnect,h,"secureConnect");a(I,"secureConnect",R)})}if(typeof e.send<"u"){let C=()=>u(e.send,h,"send");I.connecting?a(I,"connect",()=>{a(t,"upload-complete",C())}):a(t,"upload-complete",C())}}),typeof e.response<"u"&&a(t,"upload-complete",()=>{let I=u(e.response,h,"response");a(t,"response",I)}),E}});var Sae=_(f4=>{"use strict";Object.defineProperty(f4,"__esModule",{value:!0});var Dae=Tf();f4.default=t=>{t=t;let e={protocol:t.protocol,hostname:Dae.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 Dae.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 Pae=_(p4=>{"use strict";Object.defineProperty(p4,"__esModule",{value:!0});var Lit=ve("url"),Oit=["protocol","host","hostname","port","pathname","search"];p4.default=(t,e)=>{var r,o;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}//${(o=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&o!==void 0?o:""}`}let a=new Lit.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 Oit)e[n]&&(a[n]=e[n].toString());return a}});var bae=_(g4=>{"use strict";Object.defineProperty(g4,"__esModule",{value:!0});var h4=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)}};g4.default=h4});var m4=_(d4=>{"use strict";Object.defineProperty(d4,"__esModule",{value:!0});var Mit=async t=>{let e=[],r=0;for await(let o of t)e.push(o),r+=Buffer.byteLength(o);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};d4.default=Mit});var kae=_(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});Pd.dnsLookupIpVersionToFamily=Pd.isDnsLookupIpVersion=void 0;var xae={auto:0,ipv4:4,ipv6:6};Pd.isDnsLookupIpVersion=t=>t in xae;Pd.dnsLookupIpVersionToFamily=t=>{if(Pd.isDnsLookupIpVersion(t))return xae[t];throw new Error("Invalid DNS lookup IP version")}});var y4=_(sb=>{"use strict";Object.defineProperty(sb,"__esModule",{value:!0});sb.isResponseOk=void 0;sb.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var Fae=_(E4=>{"use strict";Object.defineProperty(E4,"__esModule",{value:!0});var Qae=new Set;E4.default=t=>{Qae.has(t)||(Qae.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var Rae=_(C4=>{"use strict";Object.defineProperty(C4,"__esModule",{value:!0});var Ai=Tf(),Uit=(t,e)=>{if(Ai.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");Ai.assert.any([Ai.default.string,Ai.default.undefined],t.encoding),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.resolveBodyOnly),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.methodRewriting),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.isStream),Ai.assert.any([Ai.default.string,Ai.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:o=>o.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Ai.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(o=>o.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Ai.default.number(r)&&(t.retry.limit=r),Ai.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Ai.default.number))),Ai.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:o}=t;if(!Ai.default.function_(o.transform))throw new Error("`options.pagination.transform` must be implemented");if(!Ai.default.function_(o.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!Ai.default.function_(o.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!Ai.default.function_(o.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};C4.default=Uit});var Tae=_(m1=>{"use strict";Object.defineProperty(m1,"__esModule",{value:!0});m1.retryAfterStatusCodes=void 0;m1.retryAfterStatusCodes=new Set([413,429,503]);var _it=({attemptCount:t,retryOptions:e,error:r,retryAfter:o})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),u=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!u)return 0;if(r.response){if(o)return e.maxRetryAfter===void 0||o>e.maxRetryAfter?0:o;if(r.response.statusCode===413)return 0}let A=Math.random()*100;return 2**(t-1)*1e3+A};m1.default=_it});var C1=_(Bn=>{"use strict";Object.defineProperty(Bn,"__esModule",{value:!0});Bn.UnsupportedProtocolError=Bn.ReadError=Bn.TimeoutError=Bn.UploadError=Bn.CacheError=Bn.HTTPError=Bn.MaxRedirectsError=Bn.RequestError=Bn.setNonEnumerableProperties=Bn.knownHookEvents=Bn.withoutBody=Bn.kIsNormalizedAlready=void 0;var Nae=ve("util"),Lae=ve("stream"),Hit=ve("fs"),ah=ve("url"),Oae=ve("http"),w4=ve("http"),jit=ve("https"),Git=Zse(),qit=soe(),Mae=Ooe(),Yit=Hoe(),Wit=dae(),Kit=eb(),st=Tf(),Vit=wae(),Uae=a4(),Jit=u4(),_ae=vae(),zit=Sae(),Hae=Pae(),Xit=bae(),Zit=m4(),jae=kae(),$it=y4(),lh=Fae(),est=Rae(),tst=Tae(),I4,Zs=Symbol("request"),lb=Symbol("response"),PE=Symbol("responseSize"),bE=Symbol("downloadedSize"),xE=Symbol("bodySize"),kE=Symbol("uploadedSize"),ob=Symbol("serverResponsesPiped"),Gae=Symbol("unproxyEvents"),qae=Symbol("isFromCache"),B4=Symbol("cancelTimeouts"),Yae=Symbol("startedReading"),QE=Symbol("stopReading"),ab=Symbol("triggerRead"),ch=Symbol("body"),y1=Symbol("jobs"),Wae=Symbol("originalResponse"),Kae=Symbol("retryTimeout");Bn.kIsNormalizedAlready=Symbol("isNormalizedAlready");var rst=st.default.string(process.versions.brotli);Bn.withoutBody=new Set(["GET","HEAD"]);Bn.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function nst(t){for(let e in t){let r=t[e];if(!st.default.string(r)&&!st.default.number(r)&&!st.default.boolean(r)&&!st.default.null_(r)&&!st.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function ist(t){return st.default.object(t)&&!("statusCode"in t)}var v4=new Xit.default,sst=async t=>new Promise((e,r)=>{let o=a=>{r(a)};t.pending||e(),t.once("error",o),t.once("ready",()=>{t.off("error",o),e()})}),ost=new Set([300,301,302,303,304,307,308]),ast=["context","body","json","form"];Bn.setNonEnumerableProperties=(t,e)=>{let r={};for(let o of t)if(!!o)for(let a of ast)a in o&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:o[a]});Object.defineProperties(e,r)};var Vi=class extends Error{constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,o instanceof db?(Object.defineProperty(this,"request",{enumerable:!1,value:o}),Object.defineProperty(this,"response",{enumerable:!1,value:o[lb]}),Object.defineProperty(this,"options",{enumerable:!1,value:o.options})):Object.defineProperty(this,"options",{enumerable:!1,value:o}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,st.default.string(r.stack)&&st.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,u=this.stack.slice(n).split(` +`).reverse(),A=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` +`).reverse();for(;A.length!==0&&A[0]===u[0];)u.shift();this.stack=`${this.stack.slice(0,n)}${u.reverse().join(` +`)}${A.reverse().join(` +`)}`}}};Bn.RequestError=Vi;var ub=class extends Vi{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};Bn.MaxRedirectsError=ub;var Ab=class extends Vi{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};Bn.HTTPError=Ab;var fb=class extends Vi{constructor(e,r){super(e.message,e,r),this.name="CacheError"}};Bn.CacheError=fb;var pb=class extends Vi{constructor(e,r){super(e.message,e,r),this.name="UploadError"}};Bn.UploadError=pb;var hb=class extends Vi{constructor(e,r,o){super(e.message,e,o),this.name="TimeoutError",this.event=e.event,this.timings=r}};Bn.TimeoutError=hb;var E1=class extends Vi{constructor(e,r){super(e.message,e,r),this.name="ReadError"}};Bn.ReadError=E1;var gb=class extends Vi{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};Bn.UnsupportedProtocolError=gb;var lst=["socket","connect","continue","information","upgrade","timeout"],db=class extends Lae.Duplex{constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[bE]=0,this[kE]=0,this.requestInitialized=!1,this[ob]=new Set,this.redirects=[],this[QE]=!1,this[ab]=!1,this[y1]=[],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 w4.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:u,body:A,form:p}=r;if((u||A||p)&&this._lockWrite(),Bn.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,o)}catch(h){st.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Hit.ReadStream&&await sst(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[Zs])===null||h===void 0||h.destroy();return}for(let I of this[y1])I();this[y1].length=0,this.requestInitialized=!0}catch(E){if(E instanceof Vi){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(st.default.object(e)&&!st.default.urlInstance(e))r={...o,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...o,...r},e!==void 0&&(r.url=e),st.default.urlInstance(r.url)&&(r.url=new ah.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),st.assert.any([st.default.string,st.default.undefined],r.method),st.assert.any([st.default.object,st.default.undefined],r.headers),st.assert.any([st.default.string,st.default.urlInstance,st.default.undefined],r.prefixUrl),st.assert.any([st.default.object,st.default.undefined],r.cookieJar),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.searchParams),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.cache),st.assert.any([st.default.object,st.default.number,st.default.undefined],r.timeout),st.assert.any([st.default.object,st.default.undefined],r.context),st.assert.any([st.default.object,st.default.undefined],r.hooks),st.assert.any([st.default.boolean,st.default.undefined],r.decompress),st.assert.any([st.default.boolean,st.default.undefined],r.ignoreInvalidCookies),st.assert.any([st.default.boolean,st.default.undefined],r.followRedirect),st.assert.any([st.default.number,st.default.undefined],r.maxRedirects),st.assert.any([st.default.boolean,st.default.undefined],r.throwHttpErrors),st.assert.any([st.default.boolean,st.default.undefined],r.http2),st.assert.any([st.default.boolean,st.default.undefined],r.allowGetBody),st.assert.any([st.default.string,st.default.undefined],r.localAddress),st.assert.any([jae.isDnsLookupIpVersion,st.default.undefined],r.dnsLookupIpVersion),st.assert.any([st.default.object,st.default.undefined],r.https),st.assert.any([st.default.boolean,st.default.undefined],r.rejectUnauthorized),r.https&&(st.assert.any([st.default.boolean,st.default.undefined],r.https.rejectUnauthorized),st.assert.any([st.default.function_,st.default.undefined],r.https.checkServerIdentity),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificateAuthority),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.key),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificate),st.assert.any([st.default.string,st.default.undefined],r.https.passphrase),st.assert.any([st.default.string,st.default.buffer,st.default.array,st.default.undefined],r.https.pfx)),st.assert.any([st.default.object,st.default.undefined],r.cacheOptions),st.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===o?.headers?r.headers={...r.headers}:r.headers=Kit({...o?.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!==o?.searchParams){let x;if(st.default.string(r.searchParams)||r.searchParams instanceof ah.URLSearchParams)x=new ah.URLSearchParams(r.searchParams);else{nst(r.searchParams),x=new ah.URLSearchParams;for(let C in r.searchParams){let R=r.searchParams[C];R===null?x.append(C,""):R!==void 0&&x.append(C,R)}}(a=o?.searchParams)===null||a===void 0||a.forEach((C,R)=>{x.has(R)||x.append(R,C)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(u=r.password)!==null&&u!==void 0?u:"",st.default.undefined(r.prefixUrl)?r.prefixUrl=(A=o?.prefixUrl)!==null&&A!==void 0?A:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),st.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=Hae.default(r.prefixUrl+r.url,r)}else(st.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=Hae.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,"prefixUrl",{set:R=>{let L=r.url;if(!L.href.startsWith(R))throw new Error(`Cannot change \`prefixUrl\` from ${x} to ${R}: ${L.href}`);r.url=new ah.URL(R+L.href.slice(x.length)),x=R},get:()=>x});let{protocol:C}=r.url;if(C==="unix:"&&(C="http:",r.url=new ah.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),C!=="http:"&&C!=="https:")throw new gb(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:x,getCookieString:C}=E;st.assert.function_(x),st.assert.function_(C),x.length===4&&C.length===0&&(x=Nae.promisify(x.bind(r.cookieJar)),C=Nae.promisify(C.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:C})}let{cache:I}=r;if(I&&(v4.has(I)||v4.set(I,new Mae((x,C)=>{let R=x[Zs](x,C);return st.default.promise(R)&&(R.once=(L,U)=>{if(L==="error")R.catch(U);else if(L==="abort")(async()=>{try{(await R).once("abort",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${L}`);return R}),R},I))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)I4||(I4=new qit.default),r.dnsCache=I4;else if(!st.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${st.default(r.dnsCache)}`);st.default.number(r.timeout)?r.timeout={request:r.timeout}:o&&r.timeout!==o.timeout?r.timeout={...o.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let v=r.hooks===o?.hooks;r.hooks={...r.hooks};for(let x of Bn.knownHookEvents)if(x in r.hooks)if(st.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \`${x}\` must be an Array, got ${st.default(r.hooks[x])}`);else r.hooks[x]=[];if(o&&!v)for(let x of Bn.knownHookEvents)o.hooks[x].length>0&&(r.hooks[x]=[...o.hooks[x],...r.hooks[x]]);if("family"in r&&lh.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),o?.https&&(r.https={...o.https,...r.https}),"rejectUnauthorized"in r&&lh.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&lh.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&lh.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&lh.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&lh.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&lh.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&lh.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 x in r.agent)if(x!=="http"&&x!=="https"&&x!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${x}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Bn.setNonEnumerableProperties([o,h],r),est.default(r,o)}_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,o=!st.default.undefined(e.form),a=!st.default.undefined(e.json),n=!st.default.undefined(e.body),u=o||a||n,A=Bn.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=A,u){if(A)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([n,o,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(e.body instanceof Lae.Readable)&&!st.default.string(e.body)&&!st.default.buffer(e.body)&&!Uae.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(o&&!st.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let p=!st.default.string(r["content-type"]);n?(Uae.default(e.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[ch]=e.body):o?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[ch]=new ah.URLSearchParams(e.form).toString()):(p&&(r["content-type"]="application/json"),this[ch]=e.stringifyJson(e.json));let h=await Vit.default(this[ch],e.headers);st.default.undefined(r["content-length"])&&st.default.undefined(r["transfer-encoding"])&&!A&&!st.default.undefined(h)&&(r["content-length"]=String(h))}}else A?this._lockWrite():this._unlockWrite();this[xE]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[Wae]=e,r.decompress&&(e=Yit(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Oae.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[qae]=n.isFromCache,this[PE]=Number(e.headers["content-length"])||void 0,this[lb]=e,e.once("end",()=>{this[PE]=this[bE],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",A=>{e.destroy(),this._beforeError(new E1(A,this))}),e.once("aborted",()=>{this._beforeError(new E1({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let u=e.headers["set-cookie"];if(st.default.object(r.cookieJar)&&u){let A=u.map(async p=>r.cookieJar.setCookie(p,o.toString()));r.ignoreInvalidCookies&&(A=A.map(async p=>p.catch(()=>{})));try{await Promise.all(A)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&ost.has(a)){if(e.resume(),this[Zs]&&(this[B4](),delete this[Zs],this[Gae]()),(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[ch]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new ub(this));return}try{let p=Buffer.from(e.headers.location,"binary").toString(),h=new ah.URL(p,o),E=h.toString();decodeURI(E),h.hostname!==o.hostname||h.port!==o.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 I of r.hooks.beforeRedirect)await I(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!$it.isResponseOk(n)){this._beforeError(new Ab(n));return}e.on("readable",()=>{this[ab]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let A of this[ob])if(!A.headersSent){for(let p in e.headers){let h=r.decompress?p!=="content-encoding":!0,E=e.headers[p];h&&A.setHeader(p,E)}A.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;Git.default(e),this[B4]=_ae.default(e,o,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 _ae.TimeoutError?new hb(p,this.timings,this):new Vi(p.message,p,this),this._beforeError(p)}),this[Gae]=Jit.default(e,this,lst),this[Zs]=e,this.emit("uploadProgress",this.uploadProgress);let u=this[ch],A=this.redirects.length===0?this:e;st.default.nodeStream(u)?(u.pipe(A),u.once("error",p=>{this._beforeError(new pb(p,this))})):(this._unlockWrite(),st.default.undefined(u)?(this._cannotHaveBody||this._noPipe)&&(A.end(),this._lockWrite()):(this._writeRequest(u,void 0,()=>{}),A.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.assign(r,zit.default(e)),delete r.url;let n,u=v4.get(r.cache)(r,async A=>{A._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",A),o(A)});r.url=e,u.once("error",a),u.once("request",async A=>{n=A,o(n)})})}async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for(let U in A)if(st.default.undefined(A[U]))delete A[U];else if(st.default.null_(A[U]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${U}\` header`);if(u.decompress&&st.default.undefined(A["accept-encoding"])&&(A["accept-encoding"]=rst?"gzip, deflate, br":"gzip, deflate"),u.cookieJar){let U=await u.cookieJar.getCookieString(u.url.toString());st.default.nonEmptyString(U)&&(u.headers.cookie=U)}for(let U of u.hooks.beforeRequest){let J=await U(u);if(!st.default.undefined(J)){u.request=()=>J;break}}u.body&&this[ch]!==u.body&&(this[ch]=u.body);let{agent:p,request:h,timeout:E,url:I}=u;if(u.dnsCache&&!("lookup"in u)&&(u.lookup=u.dnsCache.lookup),I.hostname==="unix"){let U=/(?.+?):(?.+)/.exec(`${I.pathname}${I.search}`);if(U?.groups){let{socketPath:J,path:te}=U.groups;Object.assign(u,{socketPath:J,path:te,host:""})}}let v=I.protocol==="https:",x;u.http2?x=Wit.auto:x=v?jit.request:Oae.request;let C=(e=u.request)!==null&&e!==void 0?e:x,R=u.cache?this._createCacheableRequest:C;p&&!u.http2&&(u.agent=p[v?"https":"http"]),u[Zs]=C,delete u.request,delete u.timeout;let L=u;if(L.shared=(r=u.cacheOptions)===null||r===void 0?void 0:r.shared,L.cacheHeuristic=(o=u.cacheOptions)===null||o===void 0?void 0:o.cacheHeuristic,L.immutableMinTimeToLive=(a=u.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,L.ignoreCargoCult=(n=u.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,u.dnsLookupIpVersion!==void 0)try{L.family=jae.dnsLookupIpVersionToFamily(u.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}u.https&&("rejectUnauthorized"in u.https&&(L.rejectUnauthorized=u.https.rejectUnauthorized),u.https.checkServerIdentity&&(L.checkServerIdentity=u.https.checkServerIdentity),u.https.certificateAuthority&&(L.ca=u.https.certificateAuthority),u.https.certificate&&(L.cert=u.https.certificate),u.https.key&&(L.key=u.https.key),u.https.passphrase&&(L.passphrase=u.https.passphrase),u.https.pfx&&(L.pfx=u.https.pfx));try{let U=await R(I,L);st.default.undefined(U)&&(U=x(I,L)),u.request=h,u.timeout=E,u.agent=p,u.https&&("rejectUnauthorized"in u.https&&delete L.rejectUnauthorized,u.https.checkServerIdentity&&delete L.checkServerIdentity,u.https.certificateAuthority&&delete L.ca,u.https.certificate&&delete L.cert,u.https.key&&delete L.key,u.https.passphrase&&delete L.passphrase,u.https.pfx&&delete L.pfx),ist(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 Mae.CacheError?new fb(U,this):new Vi(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new Vi(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[QE])return;let{options:r}=this,o=this.retryCount+1;this[QE]=!0,e instanceof Vi||(e=new Vi(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Zit.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let u;try{let A;n&&"retry-after"in n.headers&&(A=Number(n.headers["retry-after"]),Number.isNaN(A)?(A=Date.parse(n.headers["retry-after"])-Date.now(),A<=0&&(A=1)):A*=1e3),u=await r.retry.calculateDelay({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:tst.default({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:0})})}catch(A){this._error(new Vi(A.message,A,this));return}if(u){let A=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,o)}catch(p){this._error(new Vi(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",o,e))};this[Kae]=setTimeout(A,u);return}}this._error(a)})()}_read(){this[ab]=!0;let e=this[lb];if(e&&!this[QE]){e.readableLength&&(this[ab]=!1);let r;for(;(r=e.read())!==null;){this[bE]+=r.length,this[Yae]=!0;let o=this.downloadProgress;o.percent<1&&this.emit("downloadProgress",o),this.push(r)}}}_write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitialized?a():this[y1].push(a)}_writeRequest(e,r,o){this[Zs].destroyed||(this._progressCallbacks.push(()=>{this[kE]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[Zs].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),o(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Zs in this)){e();return}if(this[Zs].destroyed){e();return}this[Zs].end(o=>{o||(this[xE]=this[kE],this.emit("uploadProgress",this.uploadProgress),this[Zs].emit("upload-complete")),e(o)})};this.requestInitialized?r():this[y1].push(r)}_destroy(e,r){var o;this[QE]=!0,clearTimeout(this[Kae]),Zs in this&&(this[B4](),!((o=this[lb])===null||o===void 0)&&o.complete||this[Zs].destroy()),e!==null&&!st.default.undefined(e)&&!(e instanceof Vi)&&(e=new Vi(e.message,e,this)),r(e)}get _isAboutToError(){return this[QE]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,o;return((r=(e=this[Zs])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((o=this[Wae])===null||o===void 0)&&o.complete)}get socket(){var e,r;return(r=(e=this[Zs])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[PE]?e=this[bE]/this[PE]:this[PE]===this[bE]?e=1:e=0,{percent:e,transferred:this[bE],total:this[PE]}}get uploadProgress(){let e;return this[xE]?e=this[kE]/this[xE]:this[xE]===this[kE]?e=1:e=0,{percent:e,transferred:this[kE],total:this[xE]}}get timings(){var e;return(e=this[Zs])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[qae]}pipe(e,r){if(this[Yae])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof w4.ServerResponse&&this[ob].add(e),super.pipe(e,r)}unpipe(e){return e instanceof w4.ServerResponse&&this[ob].delete(e),super.unpipe(e),this}};Bn.default=db});var w1=_(Gc=>{"use strict";var cst=Gc&&Gc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),ust=Gc&&Gc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&cst(e,t,r)};Object.defineProperty(Gc,"__esModule",{value:!0});Gc.CancelError=Gc.ParseError=void 0;var Vae=C1(),D4=class extends Vae.RequestError{constructor(e,r){let{options:o}=r.request;super(`${e.message} in "${o.url.toString()}"`,e,r.request),this.name="ParseError"}};Gc.ParseError=D4;var S4=class extends Vae.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};Gc.CancelError=S4;ust(C1(),Gc)});var zae=_(P4=>{"use strict";Object.defineProperty(P4,"__esModule",{value:!0});var Jae=w1(),Ast=(t,e,r,o)=>{let{rawBody:a}=t;try{if(e==="text")return a.toString(o);if(e==="json")return a.length===0?"":r(a.toString());if(e==="buffer")return a;throw new Jae.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(n){throw new Jae.ParseError(n,t)}};P4.default=Ast});var b4=_(uh=>{"use strict";var fst=uh&&uh.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),pst=uh&&uh.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&fst(e,t,r)};Object.defineProperty(uh,"__esModule",{value:!0});var hst=ve("events"),gst=Tf(),dst=zse(),mb=w1(),Xae=zae(),Zae=C1(),mst=u4(),yst=m4(),$ae=y4(),Est=["request","response","redirect","uploadProgress","downloadProgress"];function ele(t){let e,r,o=new hst.EventEmitter,a=new dst((u,A,p)=>{let h=E=>{let I=new Zae.default(void 0,t);I.retryCount=E,I._noPipe=!0,p(()=>I.destroy()),p.shouldReject=!1,p(()=>A(new mb.CancelError(I))),e=I,I.once("response",async C=>{var R;if(C.retryCount=E,C.request.aborted)return;let L;try{L=await yst.default(I),C.rawBody=L}catch{return}if(I._isAboutToError)return;let U=((R=C.headers["content-encoding"])!==null&&R!==void 0?R:"").toLowerCase(),J=["gzip","deflate","br"].includes(U),{options:te}=I;if(J&&!te.decompress)C.body=L;else try{C.body=Xae.default(C,te.responseType,te.parseJson,te.encoding)}catch(ae){if(C.body=L.toString(),$ae.isResponseOk(C)){I._beforeError(ae);return}}try{for(let[ae,fe]of te.hooks.afterResponse.entries())C=await fe(C,async ce=>{let me=Zae.default.normalizeArguments(void 0,{...ce,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ae);for(let Be of me.hooks.beforeRetry)await Be(me);let he=ele(me);return p(()=>{he.catch(()=>{}),he.cancel()}),he})}catch(ae){I._beforeError(new mb.RequestError(ae.message,ae,I));return}if(!$ae.isResponseOk(C)){I._beforeError(new mb.HTTPError(C));return}r=C,u(I.options.resolveBodyOnly?C.body:C)});let v=C=>{if(a.isCanceled)return;let{options:R}=I;if(C instanceof mb.HTTPError&&!R.throwHttpErrors){let{response:L}=C;u(I.options.resolveBodyOnly?L.body:L);return}A(C)};I.once("error",v);let x=I.options.body;I.once("retry",(C,R)=>{var L,U;if(x===((L=R.request)===null||L===void 0?void 0:L.options.body)&&gst.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){v(R);return}h(C)}),mst.default(I,o,Est)};h(0)});a.on=(u,A)=>(o.on(u,A),a);let n=u=>{let A=(async()=>{await a;let{options:p}=r.request;return Xae.default(r,u,p.parseJson,p.encoding)})();return Object.defineProperties(A,Object.getOwnPropertyDescriptors(a)),A};return a.json=()=>{let{headers:u}=e.options;return!e.writableFinished&&u.accept===void 0&&(u.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}uh.default=ele;pst(w1(),uh)});var tle=_(x4=>{"use strict";Object.defineProperty(x4,"__esModule",{value:!0});var Cst=w1();function wst(t,...e){let r=(async()=>{if(t instanceof Cst.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),o=()=>r;return r.json=o,r.text=o,r.buffer=o,r.on=o,r}x4.default=wst});var ile=_(k4=>{"use strict";Object.defineProperty(k4,"__esModule",{value:!0});var rle=Tf();function nle(t){for(let e of Object.values(t))(rle.default.plainObject(e)||rle.default.array(e))&&nle(e);return Object.freeze(t)}k4.default=nle});var ole=_(sle=>{"use strict";Object.defineProperty(sle,"__esModule",{value:!0})});var Q4=_(Vl=>{"use strict";var Ist=Vl&&Vl.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Bst=Vl&&Vl.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Ist(e,t,r)};Object.defineProperty(Vl,"__esModule",{value:!0});Vl.defaultHandler=void 0;var ale=Tf(),Kl=b4(),vst=tle(),Eb=C1(),Dst=ile(),Sst={RequestError:Kl.RequestError,CacheError:Kl.CacheError,ReadError:Kl.ReadError,HTTPError:Kl.HTTPError,MaxRedirectsError:Kl.MaxRedirectsError,TimeoutError:Kl.TimeoutError,ParseError:Kl.ParseError,CancelError:Kl.CancelError,UnsupportedProtocolError:Kl.UnsupportedProtocolError,UploadError:Kl.UploadError},Pst=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:yb}=Eb.default,lle=(...t)=>{let e;for(let r of t)e=yb(void 0,r,e);return e},bst=t=>t.isStream?new Eb.default(void 0,t):Kl.default(t),xst=t=>"defaults"in t&&"options"in t.defaults,kst=["get","post","put","patch","head","delete"];Vl.defaultHandler=(t,e)=>e(t);var cle=(t,e)=>{if(t)for(let r of t)r(e)},ule=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(o=>(a,n)=>{let u,A=o(a,p=>(u=n(p),u));if(A!==u&&!a.isStream&&u){let p=A,{then:h,catch:E,finally:I}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(u)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(u)),p.then=h,p.catch=E,p.finally=I}return A});let e=(o,a={},n)=>{var u,A;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?bst:h);if(ale.default.plainObject(o)){let E={...o,...a};Eb.setNonEnumerableProperties([o,a],E),a=E,o=void 0}try{let E;try{cle(t.options.hooks.init,a),cle((u=a.hooks)===null||u===void 0?void 0:u.init,a)}catch(v){E=v}let I=yb(o,a,n??t.options);if(I[Eb.kIsNormalizedAlready]=!0,E)throw new Kl.RequestError(E.message,E,I);return h(I)}catch(E){if(a.isStream)throw E;return vst.default(E,t.options.hooks.beforeError,(A=a.hooks)===null||A===void 0?void 0:A.beforeError)}};e.extend=(...o)=>{let a=[t.options],n=[...t._rawHandlers],u;for(let A of o)xst(A)?(a.push(A.defaults.options),n.push(...A.defaults._rawHandlers),u=A.defaults.mutableDefaults):(a.push(A),"handlers"in A&&n.push(...A.handlers),u=A.mutableDefaults);return n=n.filter(A=>A!==Vl.defaultHandler),n.length===0&&n.push(Vl.defaultHandler),ule({options:lle(...a),handlers:n,mutableDefaults:Boolean(u)})};let r=async function*(o,a){let n=yb(o,a,t.options);n.resolveBodyOnly=!1;let u=n.pagination;if(!ale.default.object(u))throw new TypeError("`options.pagination` must be implemented");let A=[],{countLimit:p}=u,h=0;for(;h{let n=[];for await(let u of r(o,a))n.push(u);return n},e.paginate.each=r,e.stream=(o,a)=>e(o,{...a,isStream:!0});for(let o of kst)e[o]=(a,n)=>e(a,{...n,method:o}),e.stream[o]=(a,n)=>e(a,{...n,method:o,isStream:!0});return Object.assign(e,Sst),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:Dst.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=lle,e};Vl.default=ule;Bst(ole(),Vl)});var ple=_((Nf,Cb)=>{"use strict";var Qst=Nf&&Nf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Ale=Nf&&Nf.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Qst(e,t,r)};Object.defineProperty(Nf,"__esModule",{value:!0});var Fst=ve("url"),fle=Q4(),Rst={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 o of e){let a=o.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Fst.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:[fle.defaultHandler],mutableDefaults:!1},F4=fle.default(Rst);Nf.default=F4;Cb.exports=F4;Cb.exports.default=F4;Cb.exports.__esModule=!0;Ale(Q4(),Nf);Ale(b4(),Nf)});var nn={};Vt(nn,{Method:()=>Cle,del:()=>Mst,get:()=>L4,getNetworkSettings:()=>Ele,post:()=>O4,put:()=>Ost,request:()=>I1});function dle(t){let e=new URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function R4(t){return ol(gle,t,()=>oe.readFilePromise(t).then(e=>(gle.set(t,e),e)))}function Lst({statusCode:t,statusMessage:e},r){let o=Mt(r,t,yt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Zy(r,`${o}${e?` (${e})`:""}`,a)}async function wb(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(o){if(o.name!=="HTTPError")throw o;let a=r?.(o,e)??o.response.body?.error;a==null&&(o.message.startsWith("Response code")?a="The remote server failed to provide the requested resource":a=o.message),o.code==="ETIMEDOUT"&&o.event==="socket"&&(a+=`(can be increased via ${Mt(e,"httpTimeout",yt.SETTING)})`);let n=new zt(35,a,u=>{o.response&&u.reportError(35,` ${zu(e,{label:"Response Code",value:_c(yt.NO_HINT,Lst(o.response,e))})}`),o.request&&(u.reportError(35,` ${zu(e,{label:"Request Method",value:_c(yt.NO_HINT,o.request.options.method)})}`),u.reportError(35,` ${zu(e,{label:"Request URL",value:_c(yt.URL,o.request.requestUrl)})}`)),o.request.redirects.length>0&&u.reportError(35,` ${zu(e,{label:"Request Redirects",value:_c(yt.NO_HINT,PL(e,o.request.redirects,yt.URL))})}`),o.request.retryCount===o.request.options.retry.limit&&u.reportError(35,` ${zu(e,{label:"Request Retry Count",value:_c(yt.NO_HINT,`${Mt(e,o.request.retryCount,yt.NUMBER)} (can be increased via ${Mt(e,"httpRetry",yt.SETTING)})`)})}`)});throw n.originalError=o,n}}function Ele(t,e){let r=[...e.configuration.get("networkSettings")].sort(([u],[A])=>A.length-u.length),o={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(o),n=typeof t=="string"?new URL(t):t;for(let[u,A]of r)if(N4.default.isMatch(n.hostname,u))for(let p of a){let h=A.get(p);h!==null&&typeof o[p]>"u"&&(o[p]=h)}for(let u of a)typeof o[u]>"u"&&(o[u]=e.configuration.get(u));return o}async function I1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u="GET",wrapNetworkRequest:A}){let p={target:t,body:e,configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u},h=async()=>await Ust(t,e,p),E=typeof A<"u"?await A(h,p):h;return await(await r.reduceHook(v=>v.wrapNetworkRequest,E,p))()}async function L4(t,{configuration:e,jsonResponse:r,customErrorMessage:o,wrapNetworkRequest:a,...n}){let u=()=>wb(I1(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:o}).then(p=>p.body),A=await(typeof a<"u"?u():ol(hle,t,()=>u().then(p=>(hle.set(t,p),p))));return r?JSON.parse(A.toString()):A}async function Ost(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,e,{...o,method:"PUT"}),{customErrorMessage:r,configuration:o.configuration})).body}async function O4(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,e,{...o,method:"POST"}),{customErrorMessage:r,configuration:o.configuration})).body}async function Mst(t,{customErrorMessage:e,...r}){return(await wb(I1(t,null,{...r,method:"DELETE"}),{customErrorMessage:e,configuration:r.configuration})).body}async function Ust(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u="GET"}){let A=typeof t=="string"?new URL(t):t,p=Ele(A,{configuration:r});if(p.enableNetwork===!1)throw new zt(80,`Request to '${A.href}' has been blocked because of your configuration settings`);if(A.protocol==="http:"&&!N4.default.isMatch(A.hostname,r.get("unsafeHttpWhitelist")))throw new zt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${A.hostname})`);let E={agent:{http:p.httpProxy?T4.default.httpOverHttp(dle(p.httpProxy)):Tst,https:p.httpsProxy?T4.default.httpsOverHttp(dle(p.httpsProxy)):Nst},headers:o,method:u};E.responseType=n?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e=="string"?E.body=e:E.json=e);let I=r.get("httpTimeout"),v=r.get("httpRetry"),x=r.get("enableStrictSsl"),C=p.httpsCaFilePath,R=p.httpsCertFilePath,L=p.httpsKeyFilePath,{default:U}=await Promise.resolve().then(()=>$e(ple())),J=C?await R4(C):void 0,te=R?await R4(R):void 0,ae=L?await R4(L):void 0,fe=U.extend({timeout:{socket:I},retry:v,https:{rejectUnauthorized:x,certificateAuthority:J,certificate:te,key:ae},...E});return r.getLimit("networkConcurrency")(()=>fe(A))}var mle,yle,N4,T4,hle,gle,Tst,Nst,Cle,Ib=Et(()=>{St();mle=ve("https"),yle=ve("http"),N4=$e(Zo()),T4=$e(Yse());Yl();Gl();jl();hle=new Map,gle=new Map,Tst=new yle.Agent({keepAlive:!0}),Nst=new mle.Agent({keepAlive:!0});Cle=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(Cle||{})});var Ji={};Vt(Ji,{availableParallelism:()=>U4,getArchitecture:()=>B1,getArchitectureName:()=>qst,getArchitectureSet:()=>M4,getCaller:()=>Vst,major:()=>_st,openUrl:()=>Hst});function Gst(){if(process.platform==="darwin"||process.platform==="win32")return null;let t;try{t=oe.readFileSync(jst)}catch{}if(typeof t<"u"){if(t&&t.includes("GLIBC"))return"glibc";if(t&&t.includes("musl"))return"musl"}let r=(process.report?.getReport()??{}).sharedObjects??[],o=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return KI(r,a=>{let n=a.match(o);if(!n)return KI.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 B1(){return Ile=Ile??{os:process.platform,cpu:process.arch,libc:Gst()}}function qst(t=B1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function M4(){let t=B1();return Ble=Ble??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function Kst(t){let e=Yst.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf("native")===0,o=e[2]&&e[2].indexOf("eval")===0,a=Wst.exec(e[2]);return o&&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 Vst(){let e=new Error().stack.split(` +`)[3];return Kst(e)}function U4(){return typeof Bb.default.availableParallelism<"u"?Bb.default.availableParallelism():Math.max(1,Bb.default.cpus().length)}var Bb,_st,wle,Hst,jst,Ile,Ble,Yst,Wst,vb=Et(()=>{St();Bb=$e(ve("os"));Db();jl();_st=Number(process.versions.node.split(".")[0]),wle=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),Hst=typeof wle<"u"?async t=>{try{return await _4(wle,[t],{cwd:V.cwd()}),!0}catch{return!1}}:void 0,jst="/usr/bin/ldd";Yst=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Wst=/\((\S*)(?::(\d+))(?::(\d+))\)/});function Y4(t,e,r,o,a){let n=A1(r);if(o.isArray||o.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((u,A)=>H4(t,`${e}[${A}]`,u,o,a)):String(n).split(/,/).map(u=>H4(t,e,u,o,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return H4(t,e,r,o,a)}function H4(t,e,r,o,a){let n=A1(r);switch(o.type){case"ANY":return qP(n);case"SHAPE":return Zst(t,e,r,o,a);case"MAP":return $st(t,e,r,o,a)}if(n===null&&!o.isNullable&&o.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if(o.values?.includes(n))return n;let A=(()=>{if(o.type==="BOOLEAN"&&typeof n!="string")return VI(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${e}" to be a string, got ${typeof n}`);let p=sP(n,{env:t.env});switch(o.type){case"ABSOLUTE_PATH":{let h=a,E=mM(r);return E&&E[0]!=="<"&&(h=V.dirname(E)),V.resolve(h,ue.toPortablePath(p))}case"LOCATOR_LOOSE":return xf(p,!1);case"NUMBER":return parseInt(p);case"LOCATOR":return xf(p);case"BOOLEAN":return VI(p);default:return p}})();if(o.values&&!o.values.includes(A))throw new Error(`Invalid value, expected one of ${o.values.join(", ")}`);return A}function Zst(t,e,r,o,a){let n=A1(r);if(typeof n!="object"||Array.isArray(n))throw new it(`Object configuration settings "${e}" must be an object`);let u=W4(t,o,{ignoreArrays:!0});if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=`${e}.${A}`;if(!o.properties[A])throw new it(`Unrecognized configuration settings found: ${e}.${A} - run "yarn config -v" to see the list of settings supported in Yarn`);u.set(A,Y4(t,h,p,o.properties[A],a))}return u}function $st(t,e,r,o,a){let n=A1(r),u=new Map;if(typeof n!="object"||Array.isArray(n))throw new it(`Map configuration settings "${e}" must be an object`);if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=o.normalizeKeys?o.normalizeKeys(A):A,E=`${e}['${h}']`,I=o.valueDefinition;u.set(h,Y4(t,E,p,I,a))}return u}function W4(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!r)return[];let o=new Map;for(let[a,n]of Object.entries(e.properties))o.set(a,W4(t,n));return o}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(o=>V.normalize(o)):V.isAbsolute(e.default)?V.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(o=>V.resolve(t.projectCwd,o)):V.resolve(t.projectCwd,e.default);default:return e.default}}function Pb(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecrets)return Xst;if(e.type==="ABSOLUTE_PATH"&&typeof t=="string"&&r.getNativePaths)return ue.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let o=[];for(let a of t)o.push(Pb(a,e,r));return o}if(e.type==="MAP"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=Pb(n,e.valueDefinition,r);typeof u<"u"&&o.set(a,u)}return o}if(e.type==="SHAPE"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=e.properties[a],A=Pb(n,u,r);typeof A<"u"&&o.set(a,A)}return o}return t}function eot(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(bb)&&(e=(0,Dle.default)(e.slice(bb.length)),t[e]=r);return t}function G4(){let t=`${bb}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return q4}async function vle(t){try{return await oe.readFilePromise(t)}catch{return Buffer.of()}}async function tot(t,e){return Buffer.compare(...await Promise.all([vle(t),vle(e)]))===0}async function rot(t,e){let[r,o]=await Promise.all([oe.statPromise(t),oe.statPromise(e)]);return r.dev===o.dev&&r.ino===o.ino}async function iot({configuration:t,selfPath:e}){let r=t.get("yarnPath");return t.get("ignorePath")||r===null||r===e||await not(r,e)?null:r}var Dle,Lf,Sle,Ple,ble,j4,Jst,v1,zst,FE,bb,q4,Xst,D1,xle,xb,Sb,not,rA,Ke,S1=Et(()=>{St();Nl();Dle=$e(sV()),Lf=$e(td());jt();Sle=$e(ZV()),Ple=ve("module"),ble=$e(id()),j4=ve("stream");ose();fE();cM();uM();AM();Tse();fM();vd();Use();WP();Gl();nh();Ib();jl();vb();Qf();bo();Jst=function(){if(!Lf.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=ue.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=oe.readJsonSync(t)}catch{return!1}return!(!("repository"in e)||!e.repository||(e.repository.private??!0))}(),v1=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"]),zst=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","zipDataEpilogue","cacheCheckpointOverride","cacheVersionOverride","lockfileVersionOverride","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry","ignoreCwd"]),FE=/^(?!v)[a-z0-9._-]+$/i,bb="yarn_",q4=".yarnrc.yml",Xst="********",D1=(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))(D1||{}),xle=yt,xb=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(xb||{}),Sb={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:EM()},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:G4()},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:lP,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:SL,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Lf.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:!Lf.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:!Lf.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:U4()},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(uP),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:Lf.isPR&&Jst,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},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}}}}}}}};not=process.platform==="win32"?tot:rot;rA=class{constructor(e){this.isCI=Lf.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 create(e,r,o){let a=new rA(e);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(Sb);let n=typeof o<"u"?o:r instanceof Map?r:new Map;for(let[u,A]of n)a.activatePlugin(u,A);return a}static async find(e,r,{strict:o=!0,usePathCheck:a=null,useRc:n=!0}={}){let u=eot();delete u.rcFilename;let A=new rA(e),p=await rA.findRcFiles(e),h=await rA.findFolderRcFile(EE());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=Mse(p.map(ce=>[ce.path,ce.data])),I=Bt.dot,v=new Set(Object.keys(Sb)),x=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he})=>({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he}),C=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he,...Be})=>{let we={};for(let[g,Ee]of Object.entries(Be))v.has(g)&&(we[g]=Ee);return we},R=({yarnPath:ce,ignorePath:me,...he})=>{let Be={};for(let[we,g]of Object.entries(he))v.has(we)||(Be[we]=g);return Be};if(A.importSettings(x(Sb)),A.useWithSource("",x(u),e,{strict:!1}),E){let[ce,me]=E;A.useWithSource(ce,x(me),I,{strict:!1})}if(a){if(await iot({configuration:A,selfPath:a})!==null)return A;A.useWithSource("",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let L=await rA.findProjectCwd(e);A.startingCwd=e,A.projectCwd=L;let U=Object.assign(Object.create(null),process.env);A.env=U;let J=await Promise.all(A.get("injectEnvironmentFiles").map(async ce=>{let me=ce.endsWith("?")?await oe.readFilePromise(ce.slice(0,-1),"utf8").catch(()=>""):await oe.readFilePromise(ce,"utf8");return(0,Sle.parse)(me)}));for(let ce of J)for(let[me,he]of Object.entries(ce))A.env[me]=sP(he,{env:U});if(A.importSettings(C(Sb)),A.useWithSource("",C(u),e,{strict:o}),E){let[ce,me]=E;A.useWithSource(ce,C(me),I,{strict:o})}let te=ce=>"default"in ce?ce.default:ce,ae=new Map([["@@core",sse]]);if(r!==null)for(let ce of r.plugins.keys())ae.set(ce,te(r.modules.get(ce)));for(let[ce,me]of ae)A.activatePlugin(ce,me);let fe=new Map([]);if(r!==null){let ce=new Map;for(let Be of Ple.builtinModules)ce.set(Be,()=>Df(Be));for(let[Be,we]of r.modules)ce.set(Be,()=>we);let me=new Set,he=async(Be,we)=>{let{factory:g,name:Ee}=Df(Be);if(!g||me.has(Ee))return;let Se=new Map(ce),le=ee=>{if(Se.has(ee))return Se.get(ee)();throw new it(`This plugin cannot access the package referenced via ${ee} which is neither a builtin, nor an exposed entry`)},ne=await Ky(async()=>te(await g(le)),ee=>`${ee} (when initializing ${Ee}, defined in ${we})`);ce.set(Ee,()=>ne),me.add(Ee),fe.set(Ee,ne)};if(u.plugins)for(let Be of u.plugins.split(";")){let we=V.resolve(e,ue.toPortablePath(Be));await he(we,"")}for(let{path:Be,cwd:we,data:g}of p)if(!!n&&!!Array.isArray(g.plugins))for(let Ee of g.plugins){let Se=typeof Ee!="string"?Ee.path:Ee,le=Ee?.spec??"",ne=Ee?.checksum??"";if(v1.has(le))continue;let ee=V.resolve(we,ue.toPortablePath(Se));if(!await oe.existsPromise(ee)){if(!le){let At=Mt(A,V.basename(ee,".cjs"),yt.NAME),H=Mt(A,".gitignore",yt.NAME),at=Mt(A,A.values.get("rcFilename"),yt.NAME),Re=Mt(A,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",yt.URL);throw new it(`Missing source for the ${At} plugin - please try to remove the plugin from ${at} then reinstall it manually. This error usually occurs because ${H} is incorrect, check ${Re} to make sure your plugin folder isn't gitignored.`)}if(!le.match(/^https?:/)){let At=Mt(A,V.basename(ee,".cjs"),yt.NAME),H=Mt(A,A.values.get("rcFilename"),yt.NAME);throw new it(`Failed to recognize the source for the ${At} plugin - please try to delete the plugin from ${H} then reinstall it manually.`)}let Ie=await L4(le,{configuration:A}),Fe=zs(Ie);if(ne&&ne!==Fe){let At=Mt(A,V.basename(ee,".cjs"),yt.NAME),H=Mt(A,A.values.get("rcFilename"),yt.NAME),at=Mt(A,`yarn plugin import ${le}`,yt.CODE);throw new it(`Failed to fetch the ${At} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${H} then run ${at} to reimport it.`)}await oe.mkdirPromise(V.dirname(ee),{recursive:!0}),await oe.writeFilePromise(ee,Ie)}await he(ee,Be)}}for(let[ce,me]of fe)A.activatePlugin(ce,me);if(A.useWithSource("",R(u),e,{strict:o}),E){let[ce,me]=E;A.useWithSource(ce,R(me),I,{strict:o})}return A.get("enableGlobalCache")&&(A.values.set("cacheFolder",`${A.get("globalFolder")}/cache`),A.sources.set("cacheFolder","")),A}static async findRcFiles(e){let r=G4(),o=[],a=e,n=null;for(;a!==n;){n=a;let u=V.join(n,r);if(oe.existsSync(u)){let A=await oe.readFilePromise(u,"utf8"),p;try{p=Ki(A)}catch{let E="";throw A.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(E=" (in particular, make sure you list the colons after each key name)"),new it(`Parse error when loading ${u}; please check it's proper Yaml${E}`)}o.unshift({path:u,cwd:n,data:p})}a=V.dirname(n)}return o}static async findFolderRcFile(e){let r=V.join(e,dr.rc),o;try{o=await oe.readFilePromise(r,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}let a=Ki(o);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,o=e,a=null;for(;o!==a;){if(a=o,oe.existsSync(V.join(a,dr.lockfile)))return a;oe.existsSync(V.join(a,dr.manifest))&&(r=a),o=V.dirname(a)}return r}static async updateConfiguration(e,r,o={}){let a=G4(),n=V.join(e,a),u=oe.existsSync(n)?Ki(await oe.readFilePromise(n,"utf8")):{},A=!1,p;if(typeof r=="function"){try{p=r(u)}catch{p=r({})}if(p===u)return!1}else{p=u;for(let h of Object.keys(r)){let E=u[h],I=r[h],v;if(typeof I=="function")try{v=I(E)}catch{v=I(void 0)}else v=I;E!==v&&(v===rA.deleteProperty?delete p[h]:p[h]=v,A=!0)}if(!A)return!1}return await oe.changeFilePromise(n,Ba(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await rA.updateConfiguration(e,o=>{let a=o.plugins??[];if(a.length===0)return{...o,plugins:r};let n=[],u=[...r];for(let A of a){let p=typeof A!="string"?A.path:A,h=u.find(E=>E.path===p);h?(n.push(h),u=u.filter(E=>E!==h)):n.push(A)}return n.push(...u),{...o,plugins:n}})}static async updateHomeConfiguration(e){let r=EE();return await rA.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,o),this.values.set(r,W4(this,o))}}useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=` (in ${Mt(this,e,yt.PATH)})`,n}}use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let u of["enableStrictSettings",...Object.keys(r)]){let A=r[u],p=mM(A);if(p&&(e=p),typeof A>"u"||u==="plugins"||e===""&&zst.has(u))continue;if(u==="rcFilename")throw new it(`The rcFilename settings can only be set via ${`${bb}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(u);if(!h){let I=EE(),v=e[0]!=="<"?V.dirname(e):null;if(a&&!(v!==null?I===v:!1))throw new it(`Unrecognized or legacy configuration settings found: ${u} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(u,e);continue}if(this.sources.has(u)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let E;try{E=Y4(this,u,A,h,o)}catch(I){throw I.message+=` in ${Mt(this,e,yt.PATH)}`,I}if(u==="enableStrictSettings"&&e!==""){a=E;continue}if(h.type==="MAP"){let I=this.values.get(u);this.values.set(u,new Map(n?[...I,...E]:[...E,...I])),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let I=this.values.get(u);this.values.set(u,n?[...I,...E]:[...E,...I]),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else this.values.set(u,E),this.sources.set(u,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:o=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>"u")throw new it(`Couldn't find a configuration settings named "${e}"`);return Pb(a,n,{hideSecrets:r,getNativePaths:o})}getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=oe.createWriteStream(e);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${o} ${Mt(this,"STDOUT","green")}`),h=a.createStreamReporter(`${o} ${Mt(this,"STDERR","red")}`);n=new j4.PassThrough,n.pipe(p),n.pipe(A),u=new j4.PassThrough,u.pipe(h),u.pipe(A)}else n=A,u=A,typeof r<"u"&&n.write(`${r} +`);return{stdout:n,stderr:u}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of r.resolvers||[])e.push(new o);return new Dd([new c1,new Xn,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r.fetchers||[])e.push(new o);return new hE([new gE,new mE,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r.linkers||[])e.push(new o);return e}getSupportedArchitectures(){let e=B1(),r=this.get("supportedArchitectures"),o=r.get("os");o!==null&&(o=o.map(u=>u==="current"?e.os:u));let a=r.get("cpu");a!==null&&(a=a.map(u=>u==="current"?e.cpu:u));let n=r.get("libc");return n!==null&&(n=sl(n,u=>u==="current"?e.libc??sl.skip:u)),{os:o,cpu:a,libc:n}}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(o,a,{userProvided:n=!1}={})=>{if(!xa(o.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let u=new Ot;u.load(a,{yamlCompatibilityMode:!0});let A=Yy(e,o.identHash),p=[];A.push([o.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:o};for(let E of u.dependencies.values())p.push({...h,type:"Dependency",descriptor:E});for(let E of u.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:E});for(let[E,I]of u.peerDependenciesMeta)for(let[v,x]of Object.entries(I))p.push({...h,type:"PeerDependencyMeta",selector:E,key:v,value:x})};await this.triggerHook(o=>o.registerPackageExtensions,this,r);for(let[o,a]of this.get("packageExtensions"))r(ih(o,!0),iP(a),{userProvided:!0});return e}normalizeLocator(e){return xa(e.reference)?Qs(e,`${this.get("defaultProtocol")}${e.reference}`):FE.test(e.reference)?Qs(e,`${this.get("defaultProtocol")}${e.reference}`):e}normalizeDependency(e){return xa(e.range)?In(e,`${this.get("defaultProtocol")}${e.range}`):FE.test(e.range)?In(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.normalizeDependency(o)]))}normalizePackage(e,{packageExtensions:r}){let o=e1(e),a=r.get(e.identHash);if(typeof a<"u"){let u=e.version;if(u!==null){for(let[A,p]of a)if(!!kf(u,A))for(let h of p)switch(h.status==="inactive"&&(h.status="redundant"),h.type){case"Dependency":typeof o.dependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",o.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case"PeerDependency":typeof o.peerDependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",o.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case"PeerDependencyMeta":{let E=o.peerDependenciesMeta.get(h.selector);(typeof E>"u"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status="active",ol(o.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:yL(h)}}}let n=u=>u.scope?`${u.scope}__${u.name}`:`${u.name}`;for(let u of o.peerDependenciesMeta.keys()){let A=Js(u);o.peerDependencies.has(A.identHash)||o.peerDependencies.set(A.identHash,In(A,"*"))}for(let u of o.peerDependencies.values()){if(u.scope==="types")continue;let A=n(u),p=eA("types",A),h=fn(p);o.peerDependencies.has(p.identHash)||o.peerDependenciesMeta.has(h)||(o.peerDependencies.set(p.identHash,In(p,"*")),o.peerDependenciesMeta.set(h,{optional:!0}))}return o.dependencies=new Map(ks(o.dependencies,([,u])=>Pa(u))),o.peerDependencies=new Map(ks(o.peerDependencies,([,u])=>Pa(u))),o}getLimit(e){return ol(this.limits,e,()=>(0,ble.default)(this.get(e)))}async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);!n||await n(...r)}}async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...o)}async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){let u=n.hooks;if(!u)continue;let A=e(u);!A||(a=await A(a,...o))}return a}async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);if(!n)continue;let u=await n(...r);if(typeof u<"u")return u}return null}},Ke=rA;Ke.deleteProperty=Symbol(),Ke.telemetry=null});var Ur={};Vt(Ur,{EndStrategy:()=>z4,ExecError:()=>kb,PipeError:()=>P1,execvp:()=>_4,pipevp:()=>qc});function bd(t){return t!==null&&typeof t.fd=="number"}function K4(){}function V4(){for(let t of xd)t.kill()}async function qc(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,stdout:u,stderr:A,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":bd(n)&&(h[0]=n),bd(u)&&(h[1]=u),bd(A)&&(h[2]=A);let E=(0,J4.default)(t,e,{cwd:ue.fromPortablePath(r),env:{...o,PWD:ue.fromPortablePath(r)},stdio:h});xd.add(E),xd.size===1&&(process.on("SIGINT",K4),process.on("SIGTERM",V4)),!bd(n)&&n!==null&&n.pipe(E.stdin),bd(u)||E.stdout.pipe(u,{end:!1}),bd(A)||E.stderr.pipe(A,{end:!1});let I=()=>{for(let v of new Set([u,A]))bd(v)||v.end()};return new Promise((v,x)=>{E.on("error",C=>{xd.delete(E),xd.size===0&&(process.off("SIGINT",K4),process.off("SIGTERM",V4)),(p===2||p===1)&&I(),x(C)}),E.on("close",(C,R)=>{xd.delete(E),xd.size===0&&(process.off("SIGINT",K4),process.off("SIGTERM",V4)),(p===2||p===1&&C!==0)&&I(),C===0||!a?v({code:X4(C,R)}):x(new P1({fileName:t,code:C,signal:R}))})})}async function _4(t,e,{cwd:r,env:o=process.env,encoding:a="utf8",strict:n=!1}){let u=["ignore","pipe","pipe"],A=[],p=[],h=ue.fromPortablePath(r);typeof o.PWD<"u"&&(o={...o,PWD:h});let E=(0,J4.default)(t,e,{cwd:h,env:o,stdio:u});return E.stdout.on("data",I=>{A.push(I)}),E.stderr.on("data",I=>{p.push(I)}),await new Promise((I,v)=>{E.on("error",x=>{let C=Ke.create(r),R=Mt(C,t,yt.PATH);v(new zt(1,`Process ${R} failed to spawn`,L=>{L.reportError(1,` ${zu(C,{label:"Thrown Error",value:_c(yt.NO_HINT,x.message)})}`)}))}),E.on("close",(x,C)=>{let R=a==="buffer"?Buffer.concat(A):Buffer.concat(A).toString(a),L=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);x===0||!n?I({code:X4(x,C),stdout:R,stderr:L}):v(new kb({fileName:t,code:x,signal:C,stdout:R,stderr:L}))})})}function X4(t,e){let r=sot.get(e);return typeof r<"u"?128+r:t??1}function oot(t,e,{configuration:r,report:o}){o.reportError(1,` ${zu(r,t!==null?{label:"Exit Code",value:_c(yt.NUMBER,t)}:{label:"Exit Signal",value:_c(yt.CODE,e)})}`)}var J4,z4,P1,kb,xd,sot,Db=Et(()=>{St();J4=$e(sT());S1();Yl();Gl();z4=(o=>(o[o.Never=0]="Never",o[o.ErrorCode=1]="ErrorCode",o[o.Always=2]="Always",o))(z4||{}),P1=class extends zt{constructor({fileName:r,code:o,signal:a}){let n=Ke.create(V.cwd()),u=Mt(n,r,yt.PATH);super(1,`Child ${u} reported an error`,A=>{oot(o,a,{configuration:n,report:A})});this.code=X4(o,a)}},kb=class extends P1{constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileName:r,code:o,signal:a});this.stdout=n,this.stderr=u}};xd=new Set;sot=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});function Qle(t){kle=t}function b1(){return typeof Z4>"u"&&(Z4=kle()),Z4}var Z4,kle,$4=Et(()=>{kle=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var Fle=_((Qb,tU)=>{var aot=Object.assign({},ve("fs")),eU=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:{},o,a;r.ready=new Promise(function(We,tt){o=We,a=tt});var n={},u;for(u in r)r.hasOwnProperty(u)&&(n[u]=r[u]);var A=[],p="./this.program",h=function(We,tt){throw tt},E=!1,I=!0,v="";function x(We){return r.locateFile?r.locateFile(We,v):v+We}var C,R,L,U;I&&(E?v=ve("path").dirname(v)+"/":v=__dirname+"/",C=function(tt,It){var nr=ii(tt);return nr?It?nr:nr.toString():(L||(L=aot),U||(U=ve("path")),tt=U.normalize(tt),L.readFileSync(tt,It?null:"utf8"))},R=function(tt){var It=C(tt,!0);return It.buffer||(It=new Uint8Array(It)),Ee(It.buffer),It},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),A=process.argv.slice(2),h=function(We){process.exit(We)},r.inspect=function(){return"[Emscripten Module object]"});var J=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(u in n)n.hasOwnProperty(u)&&(r[u]=n[u]);n=null,r.arguments&&(A=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ae=0,fe=function(We){ae=We},ce;r.wasmBinary&&(ce=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!="object"&&Ti("no native wasm support detected");function he(We,tt,It){switch(tt=tt||"i8",tt.charAt(tt.length-1)==="*"&&(tt="i32"),tt){case"i1":return He[We>>0];case"i8":return He[We>>0];case"i16":return cp((We>>1)*2);case"i32":return Os((We>>2)*4);case"i64":return Os((We>>2)*4);case"float":return cu((We>>2)*4);case"double":return lp((We>>3)*8);default:Ti("invalid type for getValue: "+tt)}return null}var Be,we=!1,g;function Ee(We,tt){We||Ti("Assertion failed: "+tt)}function Se(We){var tt=r["_"+We];return Ee(tt,"Cannot call unknown function "+We+", make sure it is exported"),tt}function le(We,tt,It,nr,$){var ye={string:function(es){var bi=0;if(es!=null&&es!==0){var jo=(es.length<<2)+1;bi=Un(jo),At(es,bi,jo)}return bi},array:function(es){var bi=Un(es.length);return Re(es,bi),bi}};function Le(es){return tt==="string"?Ie(es):tt==="boolean"?Boolean(es):es}var pt=Se(We),ht=[],Tt=0;if(nr)for(var er=0;er=It)&&Te[nr];)++nr;return ee.decode(Te.subarray(We,nr))}function Fe(We,tt,It,nr){if(!(nr>0))return 0;for(var $=It,ye=It+nr-1,Le=0;Le=55296&&pt<=57343){var ht=We.charCodeAt(++Le);pt=65536+((pt&1023)<<10)|ht&1023}if(pt<=127){if(It>=ye)break;tt[It++]=pt}else if(pt<=2047){if(It+1>=ye)break;tt[It++]=192|pt>>6,tt[It++]=128|pt&63}else if(pt<=65535){if(It+2>=ye)break;tt[It++]=224|pt>>12,tt[It++]=128|pt>>6&63,tt[It++]=128|pt&63}else{if(It+3>=ye)break;tt[It++]=240|pt>>18,tt[It++]=128|pt>>12&63,tt[It++]=128|pt>>6&63,tt[It++]=128|pt&63}}return tt[It]=0,It-$}function At(We,tt,It){return Fe(We,Te,tt,It)}function H(We){for(var tt=0,It=0;It=55296&&nr<=57343&&(nr=65536+((nr&1023)<<10)|We.charCodeAt(++It)&1023),nr<=127?++tt:nr<=2047?tt+=2:nr<=65535?tt+=3:tt+=4}return tt}function at(We){var tt=H(We)+1,It=Li(tt);return It&&Fe(We,He,It,tt),It}function Re(We,tt){He.set(We,tt)}function ke(We,tt){return We%tt>0&&(We+=tt-We%tt),We}var xe,He,Te,Je,je,b,w,P,y,F;function z(We){xe=We,r.HEAP_DATA_VIEW=F=new DataView(We),r.HEAP8=He=new Int8Array(We),r.HEAP16=Je=new Int16Array(We),r.HEAP32=b=new Int32Array(We),r.HEAPU8=Te=new Uint8Array(We),r.HEAPU16=je=new Uint16Array(We),r.HEAPU32=w=new Uint32Array(We),r.HEAPF32=P=new Float32Array(We),r.HEAPF64=y=new Float64Array(We)}var X=r.INITIAL_MEMORY||16777216,Z,ie=[],Pe=[],Ne=[],ot=!1;function dt(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)bt(r.preRun.shift());oo(ie)}function Gt(){ot=!0,oo(Pe)}function $t(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Qr(r.postRun.shift());oo(Ne)}function bt(We){ie.unshift(We)}function an(We){Pe.unshift(We)}function Qr(We){Ne.unshift(We)}var mr=0,br=null,Wr=null;function Kn(We){mr++,r.monitorRunDependencies&&r.monitorRunDependencies(mr)}function Ns(We){if(mr--,r.monitorRunDependencies&&r.monitorRunDependencies(mr),mr==0&&(br!==null&&(clearInterval(br),br=null),Wr)){var tt=Wr;Wr=null,tt()}}r.preloadedImages={},r.preloadedAudios={};function Ti(We){r.onAbort&&r.onAbort(We),We+="",te(We),we=!0,g=1,We="abort("+We+"). Build with -s ASSERTIONS=1 for more info.";var tt=new WebAssembly.RuntimeError(We);throw a(tt),tt}var ps="data:application/octet-stream;base64,";function io(We){return We.startsWith(ps)}var Pi="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/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//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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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAQUUAKG51bGwpADogAFBLBgcAUEsGBgBQSwUGAFBLAwQAUEsBAgAAAAA/BQAAwAcAAJMIAAB4CAAAbwUAAJEFAAB6BQAAsgUAAFYIAAAbBwAA1gQAAAsHAADqBgAAnAUAAMgGAACyCAAAHggAACgHAABHBAAAoAYAAGAFAAAuBAAAPgcAAD8IAAD+BwAAjgYAAMkIAADeCAAA5gcAALIGAABVBQAAqAcAACAAQcgTCxEBAAAAAQAAAAEAAAABAAAAAQBB7BMLCQEAAAABAAAAAgBBmBQLAQEAQbgUCwEBAEHSFAukLDomOyZlJmYmYyZgJiIg2CXLJdklQiZAJmomayY8JrolxCWVITwgtgCnAKwlqCGRIZMhkiGQIR8ilCGyJbwlIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AAIjxwD8AOkA4gDkAOAA5QDnAOoA6wDoAO8A7gDsAMQAxQDJAOYAxgD0APYA8gD7APkA/wDWANwAogCjAKUApyCSAeEA7QDzAPoA8QDRAKoAugC/ABAjrAC9ALwAoQCrALsAkSWSJZMlAiUkJWElYiVWJVUlYyVRJVclXSVcJVslECUUJTQlLCUcJQAlPCVeJV8lWiVUJWklZiVgJVAlbCVnJWglZCVlJVklWCVSJVMlayVqJRglDCWIJYQljCWQJYAlsQPfAJMDwAOjA8MDtQDEA6YDmAOpA7QDHiLGA7UDKSJhIrEAZSJkIiAjISP3AEgisAAZIrcAGiJ/ILIAoCWgAAAAAACWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYFAQAAJ0HAAAsCQAAhgUAAEgFAACnBQAAAAQAADIFAAC8BQAALAkAQYDBAAv3CQwACACMAAgATAAIAMwACAAsAAgArAAIAGwACADsAAgAHAAIAJwACABcAAgA3AAIADwACAC8AAgAfAAIAPwACAACAAgAggAIAEIACADCAAgAIgAIAKIACABiAAgA4gAIABIACACSAAgAUgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==";io(Pi)||(Pi=x(Pi));function Ls(We){try{if(We==Pi&&ce)return new Uint8Array(ce);var tt=ii(We);if(tt)return tt;if(R)return R(We);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(It){Ti(It)}}function so(We,tt){var It,nr,$;try{$=Ls(We),nr=new WebAssembly.Module($),It=new WebAssembly.Instance(nr,tt)}catch(Le){var ye=Le.toString();throw te("failed to compile wasm module: "+ye),(ye.includes("imported Memory")||ye.includes("memory import"))&&te("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)."),Le}return[It,nr]}function cc(){var We={a:Ma};function tt($,ye){var Le=$.exports;r.asm=Le,Be=r.asm.g,z(Be.buffer),Z=r.asm.W,an(r.asm.h),Ns("wasm-instantiate")}if(Kn("wasm-instantiate"),r.instantiateWasm)try{var It=r.instantiateWasm(We,tt);return It}catch($){return te("Module.instantiateWasm callback failed with error: "+$),!1}var nr=so(Pi,We);return tt(nr[0]),r.asm}function cu(We){return F.getFloat32(We,!0)}function lp(We){return F.getFloat64(We,!0)}function cp(We){return F.getInt16(We,!0)}function Os(We){return F.getInt32(We,!0)}function Dn(We,tt){F.setInt32(We,tt,!0)}function oo(We){for(;We.length>0;){var tt=We.shift();if(typeof tt=="function"){tt(r);continue}var It=tt.func;typeof It=="number"?tt.arg===void 0?Z.get(It)():Z.get(It)(tt.arg):It(tt.arg===void 0?null:tt.arg)}}function Ms(We,tt){var It=new Date(Os((We>>2)*4)*1e3);Dn((tt>>2)*4,It.getUTCSeconds()),Dn((tt+4>>2)*4,It.getUTCMinutes()),Dn((tt+8>>2)*4,It.getUTCHours()),Dn((tt+12>>2)*4,It.getUTCDate()),Dn((tt+16>>2)*4,It.getUTCMonth()),Dn((tt+20>>2)*4,It.getUTCFullYear()-1900),Dn((tt+24>>2)*4,It.getUTCDay()),Dn((tt+36>>2)*4,0),Dn((tt+32>>2)*4,0);var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((tt+28>>2)*4,$),Ms.GMTString||(Ms.GMTString=at("GMT")),Dn((tt+40>>2)*4,Ms.GMTString),tt}function ml(We,tt){return Ms(We,tt)}function yl(We,tt,It){Te.copyWithin(We,tt,tt+It)}function ao(We){try{return Be.grow(We-xe.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function Vn(We){var tt=Te.length;We=We>>>0;var It=2147483648;if(We>It)return!1;for(var nr=1;nr<=4;nr*=2){var $=tt*(1+.2/nr);$=Math.min($,We+100663296);var ye=Math.min(It,ke(Math.max(We,$),65536)),Le=ao(ye);if(Le)return!0}return!1}function On(We){fe(We)}function Ni(We){var tt=Date.now()/1e3|0;return We&&Dn((We>>2)*4,tt),tt}function Mn(){if(Mn.called)return;Mn.called=!0;var We=new Date().getFullYear(),tt=new Date(We,0,1),It=new Date(We,6,1),nr=tt.getTimezoneOffset(),$=It.getTimezoneOffset(),ye=Math.max(nr,$);Dn((ds()>>2)*4,ye*60),Dn((gs()>>2)*4,Number(nr!=$));function Le($r){var Gi=$r.toTimeString().match(/\(([A-Za-z ]+)\)$/);return Gi?Gi[1]:"GMT"}var pt=Le(tt),ht=Le(It),Tt=at(pt),er=at(ht);$>2)*4,Tt),Dn((wi()+4>>2)*4,er)):(Dn((wi()>>2)*4,er),Dn((wi()+4>>2)*4,Tt))}function _i(We){Mn();var tt=Date.UTC(Os((We+20>>2)*4)+1900,Os((We+16>>2)*4),Os((We+12>>2)*4),Os((We+8>>2)*4),Os((We+4>>2)*4),Os((We>>2)*4),0),It=new Date(tt);Dn((We+24>>2)*4,It.getUTCDay());var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((We+28>>2)*4,$),It.getTime()/1e3|0}var tr=typeof atob=="function"?atob:function(We){var tt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",It="",nr,$,ye,Le,pt,ht,Tt,er=0;We=We.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Le=tt.indexOf(We.charAt(er++)),pt=tt.indexOf(We.charAt(er++)),ht=tt.indexOf(We.charAt(er++)),Tt=tt.indexOf(We.charAt(er++)),nr=Le<<2|pt>>4,$=(pt&15)<<4|ht>>2,ye=(ht&3)<<6|Tt,It=It+String.fromCharCode(nr),ht!==64&&(It=It+String.fromCharCode($)),Tt!==64&&(It=It+String.fromCharCode(ye));while(er0||(dt(),mr>0))return;function tt(){Sn||(Sn=!0,r.calledRun=!0,!we&&(Gt(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),$t()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),tt()},1)):tt()}if(r.run=ys,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return ys(),e}}();typeof Qb=="object"&&typeof tU=="object"?tU.exports=eU:typeof define=="function"&&define.amd?define([],function(){return eU}):typeof Qb=="object"&&(Qb.createModule=eU)});var Of,Rle,Tle,Nle=Et(()=>{Of=["number","number"],Rle=(ee=>(ee[ee.ZIP_ER_OK=0]="ZIP_ER_OK",ee[ee.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",ee[ee.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",ee[ee.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",ee[ee.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",ee[ee.ZIP_ER_READ=5]="ZIP_ER_READ",ee[ee.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",ee[ee.ZIP_ER_CRC=7]="ZIP_ER_CRC",ee[ee.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",ee[ee.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",ee[ee.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",ee[ee.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",ee[ee.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",ee[ee.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",ee[ee.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",ee[ee.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",ee[ee.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",ee[ee.ZIP_ER_EOF=17]="ZIP_ER_EOF",ee[ee.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",ee[ee.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",ee[ee.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",ee[ee.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",ee[ee.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",ee[ee.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",ee[ee.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",ee[ee.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",ee[ee.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",ee[ee.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",ee[ee.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",ee[ee.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",ee[ee.ZIP_ER_TELL=30]="ZIP_ER_TELL",ee[ee.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",ee))(Rle||{}),Tle=t=>({get HEAPU8(){return t.HEAPU8},errors:Rle,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",...Of,"number","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...Of,"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",...Of,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...Of,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...Of,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...Of,"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",...Of,"number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...Of,"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",...Of,"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 rU(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=0&&(o=r+e.length,t[o]!==V.sep);){if(t[r-1]===V.sep)return null;r=t.indexOf(e,o)}return t.length>o&&t[o]!==V.sep?null:t.slice(0,o)}var Jl,Lle=Et(()=>{St();St();nA();Jl=class extends Hp{static async openPromise(e,r){let o=new Jl(r);try{return await e(o)}finally{o.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r>"u"?A=>rU(A,".zip"):A=>{for(let p of r){let h=rU(A,p);if(h)return h}return null},n=(A,p)=>new zi(p,{baseFs:A,readOnly:o,stats:A.statSync(p)}),u=async(A,p)=>{let h={baseFs:A,readOnly:o,stats:await A.statPromise(p)};return()=>new zi(p,h)};super({...e,factorySync:n,factoryPromise:u,getMountPoint:a})}}});function lot(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(Ole.types.isDate(t))return t.getTime()/1e3;throw new Error("Invalid time")}function Fb(){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 ta,nU,Ole,iU,Mle,Rb,zi,sU=Et(()=>{St();St();St();St();St();St();ta=ve("fs"),nU=ve("stream"),Ole=ve("util"),iU=$e(ve("zlib"));$4();Mle="mixed";Rb=class extends Error{constructor(r,o){super(r);this.name="Libzip Error",this.code=o}},zi=class extends Mu{constructor(r,o={}){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;let a=o;if(this.level=typeof a.level<"u"?a.level:Mle,r??=Fb(),typeof r=="string"){let{baseFs:A=new Tn}=a;this.baseFs=A,this.path=r}else this.path=null,this.baseFs=null;if(o.stats)this.stats=o.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(A){if(A.code==="ENOENT"&&a.create)this.stats=Ea.makeDefaultStats();else throw A}else this.stats=Ea.makeDefaultStats();this.libzip=b1();let n=this.libzip.malloc(4);try{let A=0;o.readOnly&&(A|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof r=="string"&&(r=a.create?Fb():this.baseFs.readFileSync(r));let p=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(p,A,n),this.lzSource=p}catch(h){throw this.libzip.source.free(p),h}if(this.zip===0){let h=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(h,this.libzip.getValue(n,"i32")),this.makeLibzipError(h)}}finally{this.libzip.free(n)}this.listings.set(Bt.root,new Set);let u=this.libzip.getNumEntries(this.zip,0);for(let A=0;Ar)throw new Error("Overread");let n=Buffer.from(this.libzip.HEAPU8.subarray(o,o+r));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(n=Buffer.concat([n,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),n}finally{this.libzip.free(o)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===Ea.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return V.resolve(Bt.root,r)}async openPromise(r,o,a){return this.openSync(r,o,a)}openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,o){return this.opendirSync(r,o)}opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`opendir '${r}'`);let u=[...n],A=this.openSync(a,"r");return PD(this,a,u,{onClose:()=>{this.closeSync(A)}})}async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>"u")throw ar.EBADF("read");let p=u===-1||u===null?A.cursor:u,h=this.readFileSync(A.p);h.copy(o,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(u===-1||u===null)&&(A.cursor+=E),E}async writePromise(r,o,a,n,u){return typeof o=="string"?this.writeSync(r,o,u):this.writeSync(r,o,a,n,u)}writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>"u"?ar.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw ar.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:o}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new nU.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(A,p)=>{clearImmediate(u),this.closeSync(a),p(A)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),u=setImmediate(async()=>{try{let A=await this.readFilePromise(r,o);n.bytesRead=A.length,n.end(A)}catch(A){n.destroy(A)}});return n}createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),u=Object.assign(new nU.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(A,p)=>{try{A?p(A):(this.writeFileSync(r,Buffer.concat(a),o),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){u.destroy()},bytesWritten:0,path:r,pending:!1});return u.on("data",A=>{let p=Buffer.from(A);u.bytesWritten+=p.length,a.push(p)}),u}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`lstat '${r}'`);return o}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw ar.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=V.resolve(Bt.root,r);return this.entries.has(a)||this.listings.has(a)}let o;try{o=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return o===void 0?!1:this.entries.has(o)||this.listings.has(o)}async accessPromise(r,o){return this.accessSync(r,o)}accessSync(r,o=ta.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`access '${r}'`);if(this.readOnly&&o&ta.constants.W_OK)throw ar.EROFS(`access '${r}'`)}async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw ar.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,o)}}async fstatPromise(r,o){return this.fstatSync(r,o)}fstatSync(r,o){let a=this.fds.get(r);if(typeof a>"u")throw ar.EBADF("fstatSync");let{p:n}=a,u=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(u)&&!this.listings.has(u))throw ar.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(u))throw ar.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,u,o)}async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw ar.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,o)}}statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<"u"){let u=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,u)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let p=this.stats.uid,h=this.stats.gid,E=this.libzip.struct.statSize(u)>>>0,I=512,v=Math.ceil(E/I),x=(this.libzip.struct.statMtime(u)>>>0)*1e3,C=x,R=x,L=x,U=new Date(C),J=new Date(R),te=new Date(L),ae=new Date(x),fe=this.listings.has(o)?ta.constants.S_IFDIR:this.isSymbolicLink(n)?ta.constants.S_IFLNK:ta.constants.S_IFREG,ce=fe===ta.constants.S_IFDIR?493:420,me=fe|this.getUnixMode(n,ce)&511,he=this.libzip.struct.statCrc(u),Be=Object.assign(new Ea.StatEntry,{uid:p,gid:h,size:E,blksize:I,blocks:v,atime:U,birthtime:J,ctime:te,mtime:ae,atimeMs:C,birthtimeMs:R,ctimeMs:L,mtimeMs:x,mode:me,crc:he});return a.bigint===!0?Ea.convertToBigIntStats(Be):Be}if(this.listings.has(o)){let u=this.stats.uid,A=this.stats.gid,p=0,h=512,E=0,I=this.stats.mtimeMs,v=this.stats.mtimeMs,x=this.stats.mtimeMs,C=this.stats.mtimeMs,R=new Date(I),L=new Date(v),U=new Date(x),J=new Date(C),te=ta.constants.S_IFDIR|493,ae=0,fe=Object.assign(new Ea.StatEntry,{uid:u,gid:A,size:p,blksize:h,blocks:E,atime:R,birthtime:L,ctime:U,mtime:J,atimeMs:I,birthtimeMs:v,ctimeMs:x,mtimeMs:C,mode:te,crc:ae});return a.bigint===!0?Ea.convertToBigIntStats(fe):fe}throw new Error("Unreachable")}getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?o:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(r){let o=this.listings.get(r);if(o)return o;this.registerListing(V.dirname(r)).add(V.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,o){this.registerListing(V.dirname(r)).add(V.basename(r)),this.entries.set(r,o)}unregisterListing(r){this.listings.delete(r),this.listings.get(V.dirname(r))?.delete(V.basename(r))}unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);this.entries.delete(r),!(typeof o>"u")&&(this.fileSources.delete(o),this.isSymbolicLink(o)&&this.symlinkCount--)}deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw ar.EBUSY(`archive closed, ${r}`);let u=V.resolve(Bt.root,o);if(u==="/")return Bt.root;let A=this.entries.get(u);if(a&&A!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(A)){let p=this.getFileSource(A).toString();return this.resolveFilename(r,V.resolve(V.dirname(u),p),!0,n)}else return u;for(;;){let p=this.resolveFilename(r,V.dirname(u),!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 ar.ENOENT(r)}if(!h)throw ar.ENOTDIR(r);if(u=V.resolve(p,V.basename(u)),!a||this.symlinkCount===0)break;let I=this.libzip.name.locate(this.zip,u.slice(1),0);if(I===-1)break;if(this.isSymbolicLink(I)){let v=this.getFileSource(I).toString();u=V.resolve(V.dirname(u),v)}else break}return u}allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libzip.malloc(r.byteLength);if(!o)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,o,r.byteLength).set(r),{buffer:o,byteLength:r.byteLength}}allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,byteLength:n}=this.allocateBuffer(r),u=this.libzip.source.fromUnattachedBuffer(a,n,0,1,o);if(u===0)throw this.libzip.free(o),this.makeLibzipError(o);return u}allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=this.libzip.source.fromBuffer(this.zip,o,a,0,1);if(n===0)throw this.libzip.free(o),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=V.relative(Bt.root,r),u=this.allocateSource(o);try{let A=this.libzip.file.add(this.zip,n,u,this.libzip.ZIP_FL_OVERWRITE);if(A===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let p=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,A,0,p,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(A,a),A}catch(A){throw this.libzip.source.free(u),A}}isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&ta.constants.S_IFMT)===ta.constants.S_IFLNK}getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,r,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let A=this.libzip.struct.statCompSize(n),p=this.libzip.struct.statCompMethod(n),h=this.libzip.malloc(A);try{let E=this.libzip.fopenIndex(this.zip,r,0,this.libzip.ZIP_FL_COMPRESSED);if(E===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let I=this.libzip.fread(E,h,A,0);if(I===-1)throw this.makeLibzipError(this.libzip.file.getError(E));if(IA)throw new Error("Overread");let v=this.libzip.HEAPU8.subarray(h,h+A),x=Buffer.from(v);if(p===0)return this.fileSources.set(r,x),x;if(o.asyncDecompress)return new Promise((C,R)=>{iU.default.inflateRaw(x,(L,U)=>{L?R(L):(this.fileSources.set(r,U),C(U))})});{let C=iU.default.inflateRawSync(x);return this.fileSources.set(r,C),C}}finally{this.libzip.fclose(E)}}finally{this.libzip.free(h)}}async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,"fchmod"),o)}fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,"fchmodSync"),o)}async chmodPromise(r,o){return this.chmodSync(r,o)}chmodSync(r,o){if(this.readOnly)throw ar.EROFS(`chmod '${r}'`);o&=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 A=this.getUnixMode(n,ta.constants.S_IFREG|0)&-512|o;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,A<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,"fchown"),o,a)}fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,"fchownSync"),o,a)}async chownPromise(r,o,a){return this.chownSync(r,o,a)}chownSync(r,o,a){throw new Error("Unimplemented")}async renamePromise(r,o){return this.renameSync(r,o)}renameSync(r,o){throw new Error("Unimplemented")}async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=this.getFileSource(n),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}prepareCopyFile(r,o,a=0){if(this.readOnly)throw ar.EROFS(`copyfile '${r} -> '${o}'`);if((a&ta.constants.COPYFILE_FICLONE_FORCE)!==0)throw ar.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${o}'`);let n=this.resolveFilename(`copyfile '${r} -> ${o}'`,r),u=this.entries.get(n);if(typeof u>"u")throw ar.EINVAL(`copyfile '${r}' -> '${o}'`);let A=this.resolveFilename(`copyfile '${r}' -> ${o}'`,o),p=this.entries.get(A);if((a&(ta.constants.COPYFILE_EXCL|ta.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof p<"u")throw ar.EEXIST(`copyfile '${r}' -> '${o}'`);return{indexSource:u,resolvedDestP:A,indexDest:p}}async appendFilePromise(r,o,a){if(this.readOnly)throw ar.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,o,a)}appendFileSync(r,o,a={}){if(this.readOnly)throw ar.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,o,a)}fdToPath(r,o){let a=this.fds.get(r)?.p;if(typeof a>"u")throw ar.EBADF(o);return a}async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(o=Buffer.concat([await this.getFileSource(A,{asyncDecompress:!0}),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&await this.chmodPromise(p,u)}writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(o=Buffer.concat([this.getFileSource(A),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&this.chmodSync(p,u)}prepareWriteFile(r,o){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw ar.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw ar.EISDIR(`open '${r}'`);let n=null,u=null;typeof o=="string"?n=o:typeof o=="object"&&({encoding:n=null,mode:u=null}=o);let A=this.entries.get(a);return{encoding:n,mode:u,resolvedP:a,index:A}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw ar.EROFS(`unlink '${r}'`);let o=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(o))throw ar.EISDIR(`unlink '${r}'`);let a=this.entries.get(o);if(typeof a>"u")throw ar.EINVAL(`unlink '${r}'`);this.deleteEntry(o,a)}async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}utimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}lutimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,o){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");if(this.libzip.file.setMtime(this.zip,a,0,lot(o),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(r,o){return this.mkdirSync(r,o)}mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:o});if(this.readOnly)throw ar.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw ar.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,o)}async rmdirPromise(r,o){return this.rmdirSync(r,o)}rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw ar.EROFS(`rmdir '${r}'`);if(o){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw ar.ENOTEMPTY(`rmdir '${r}'`);let u=this.entries.get(a);if(typeof u>"u")throw ar.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,u)}hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,V.relative(Bt.root,r));if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(r),this.registerEntry(r,o),o}async linkPromise(r,o){return this.linkSync(r,o)}linkSync(r,o){throw ar.EOPNOTSUPP(`link '${r}' -> '${o}'`)}async symlinkPromise(r,o){return this.symlinkSync(r,o)}symlinkSync(r,o){if(this.readOnly)throw ar.EROFS(`symlink '${r}' -> '${o}'`);let a=this.resolveFilename(`symlink '${r}' -> '${o}'`,o);if(this.listings.has(a))throw ar.EISDIR(`symlink '${r}' -> '${o}'`);if(this.entries.has(a))throw ar.EEXIST(`symlink '${r}' -> '${o}'`);let n=this.setFileSource(a,r);if(this.registerEntry(a,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(ta.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return o?a.toString(o):a}readFileSync(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=this.readFileBuffer(r);return o?a.toString(o):a}readFileBuffer(r,o={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 ar.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw ar.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,o)}async readdirPromise(r,o){return this.readdirSync(r,o)}readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`scandir '${r}'`);if(o?.recursive)if(o?.withFileTypes){let u=Array.from(n,A=>Object.assign(this.statImpl("lstat",V.join(r,A)),{name:A,path:Bt.dot}));for(let A of u){if(!A.isDirectory())continue;let p=V.join(A.path,A.name),h=this.listings.get(V.join(a,p));for(let E of h)u.push(Object.assign(this.statImpl("lstat",V.join(r,p,E)),{name:E,path:p}))}return u}else{let u=[...n];for(let A of u){let p=this.listings.get(V.join(a,A));if(!(typeof p>"u"))for(let h of p)u.push(V.join(A,h))}return u}else return o?.withFileTypes?Array.from(n,u=>Object.assign(this.statImpl("lstat",V.join(r,u)),{name:u,path:void 0})):[...n]}async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this.getFileSource(o,{asyncDecompress:!0})).toString()}readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(o).toString()}prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(o))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(o))throw ar.EINVAL(`readlink '${r}'`);let a=this.entries.get(o);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw ar.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw ar.EINVAL(`open '${r}'`);let u=await this.getFileSource(n,{asyncDecompress:!0}),A=Buffer.alloc(o,0);return u.copy(A),await this.writeFilePromise(r,A)}truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw ar.EINVAL(`open '${r}'`);let u=this.getFileSource(n),A=Buffer.alloc(o,0);return u.copy(A),this.writeFileSync(r,A)}async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,"ftruncate"),o)}ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),o)}watch(r,o,a){let n;switch(typeof o){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=o);break}if(!n)return{on:()=>{},close:()=>{}};let u=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(u)}}}watchFile(r,o,a){let n=V.resolve(Bt.root,r);return ny(this,n,o,a)}unwatchFile(r,o){let a=V.resolve(Bt.root,r);return Mg(this,a,o)}}});function _le(t,e,r=Buffer.alloc(0),o){let a=new zi(r),n=I=>I===e||I.startsWith(`${e}/`)?I.slice(0,e.length):null,u=async(I,v)=>()=>a,A=(I,v)=>a,p={...t},h=new Tn(p),E=new Hp({baseFs:h,getMountPoint:n,factoryPromise:u,factorySync:A,magicByte:21,maxAge:1/0,typeCheck:o?.typeCheck});return Kw(Ule.default,new jp(E)),a}var Ule,Hle=Et(()=>{St();Ule=$e(ve("fs"));sU()});var jle=Et(()=>{Lle();sU();Hle()});var x1={};Vt(x1,{DEFAULT_COMPRESSION_LEVEL:()=>Mle,LibzipError:()=>Rb,ZipFS:()=>zi,ZipOpenFS:()=>Jl,getArchivePart:()=>rU,getLibzipPromise:()=>uot,getLibzipSync:()=>cot,makeEmptyArchive:()=>Fb,mountMemoryDrive:()=>_le});function cot(){return b1()}async function uot(){return b1()}var Gle,nA=Et(()=>{$4();Gle=$e(Fle());Nle();jle();Qle(()=>{let t=(0,Gle.default)();return Tle(t)})});var RE,qle=Et(()=>{St();jt();k1();RE=class extends nt{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()}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await TE(r,[],{cwd:ue.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};RE.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"']]}});var al,Yle=Et(()=>{al=class extends Error{constructor(e){super(e),this.name="ShellError"}}});var Lb={};Vt(Lb,{fastGlobOptions:()=>Vle,isBraceExpansion:()=>oU,isGlobPattern:()=>Aot,match:()=>fot,micromatchOptions:()=>Nb});function Aot(t){if(!Tb.default.scan(t,Nb).isGlob)return!1;try{Tb.default.parse(t,Nb)}catch{return!1}return!0}function fot(t,{cwd:e,baseFs:r}){return(0,Wle.default)(t,{...Vle,cwd:ue.fromPortablePath(e),fs:FD(Kle.default,new jp(r))})}function oU(t){return Tb.default.scan(t,Nb).isBrace}var Wle,Kle,Tb,Nb,Vle,Jle=Et(()=>{St();Wle=$e(RP()),Kle=$e(ve("fs")),Tb=$e(Zo()),Nb={strictBrackets:!0},Vle={onlyDirectories:!1,onlyFiles:!1}});function aU(){}function lU(){for(let t of kd)t.kill()}function $le(t,e,r,o){return a=>{let n=a[0]instanceof iA.Transform?"pipe":a[0],u=a[1]instanceof iA.Transform?"pipe":a[1],A=a[2]instanceof iA.Transform?"pipe":a[2],p=(0,Xle.default)(t,e,{...o,stdio:[n,u,A]});return kd.add(p),kd.size===1&&(process.on("SIGINT",aU),process.on("SIGTERM",lU)),a[0]instanceof iA.Transform&&a[0].pipe(p.stdin),a[1]instanceof iA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof iA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",E=>{switch(kd.delete(p),kd.size===0&&(process.off("SIGINT",aU),process.off("SIGTERM",lU)),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=>{kd.delete(p),kd.size===0&&(process.off("SIGINT",aU),process.off("SIGTERM",lU)),h(E!==null?E:129)})})}}}function ece(t){return e=>{let r=e[0]==="pipe"?new iA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function Ob(t,e){return NE.start(t,e)}function zle(t,e=null){let r=new iA.PassThrough,o=new Zle.StringDecoder,a="";return r.on("data",n=>{let u=o.write(n),A;do if(A=u.indexOf(` +`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a="",t(e!==null?`${e} ${p}`:p)}while(A!==-1);a+=u}),r.on("end",()=>{let n=o.end();n!==""&&t(e!==null?`${e} ${n}`:n)}),r}function tce(t,{prefix:e}){return{stdout:zle(r=>t.stdout.write(`${r} +`),t.stdout.isTTY?e:null),stderr:zle(r=>t.stderr.write(`${r} +`),t.stderr.isTTY?e:null)}}var Xle,iA,Zle,kd,zl,cU,NE,uU=Et(()=>{Xle=$e(sT()),iA=ve("stream"),Zle=ve("string_decoder"),kd=new Set;zl=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},cU=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}},NE=class{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:o,stderr:a}){let n=new NE(null,e);return n.stdin=r,n.stdout=o,n.stderr=a,n}pipeTo(e,r=1){let o=new NE(this,e),a=new cU;return o.pipe=a,o.stdout=this.stdout,o.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),o}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 o;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");o=this.stderr,e[2]=o.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),o.close(),n))}async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());return(await Promise.all(e))[0]}}});var T1={};Vt(T1,{EntryCommand:()=>RE,ShellError:()=>al,execute:()=>TE,globUtils:()=>Lb});function rce(t,e,r){let o=new ll.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(o,{end:!1}),(e&2)===2&&r.stdin instanceof ll.Writable&&o.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stderr,{end:!1});break;default:throw new al(`Bad file descriptor: "${t}"`)}return o}function Ub(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function hot(t,e,r){let o=[],a=new ll.PassThrough;return a.on("data",n=>o.push(n)),await _b(t,e,Ub(r,{stdout:a})),Buffer.concat(o).toString().replace(/[\r\n]+$/,"")}async function nce(t,e,r){let o=t.map(async n=>{let u=await Qd(n.args,e,r);return{name:n.name,value:u.join(" ")}});return(await Promise.all(o)).reduce((n,u)=>(n[u.name]=u.value,n),{})}function Mb(t){return t.match(/[^ \r\n\t]+/g)||[]}async function cce(t,e,r,o,a=o){switch(t.name){case"$":o(String(process.pid));break;case"#":o(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 u=Mb(n);for(let A=0;A=0&&n"u"&&(t.defaultValue?u=(await Qd(t.defaultValue,e,r)).join(" "):t.alternativeValue&&(u="")),typeof u>"u")throw A?new al(`Unbound argument #${n}`):new al(`Unbound variable "${t.name}"`);if(t.quoted)o(u);else{let p=Mb(u);for(let E=0;Eo.push(n));let a=Number(o.join(" "));return Number.isNaN(a)?Q1({type:"variable",name:o.join(" ")},e,r):Q1({type:"number",value:a},e,r)}else return got[t.type](await Q1(t.left,e,r),await Q1(t.right,e,r))}async function Qd(t,e,r){let o=new Map,a=[],n=[],u=E=>{n.push(E)},A=()=>{n.length>0&&a.push(n.join("")),n=[]},p=E=>{u(E),A()},h=(E,I,v)=>{let x=JSON.stringify({type:E,fd:I}),C=o.get(x);typeof C>"u"&&o.set(x,C=[]),C.push(v)};for(let E of t){let I=!1;switch(E.type){case"redirection":{let v=await Qd(E.args,e,r);for(let x of v)h(E.subtype,E.fd,x)}break;case"argument":for(let v of E.segments)switch(v.type){case"text":u(v.text);break;case"glob":u(v.pattern),I=!0;break;case"shell":{let x=await hot(v.shell,e,r);if(v.quoted)u(x);else{let C=Mb(x);for(let R=0;R"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let x=await e.glob.match(v,{cwd:r.cwd,baseFs:e.baseFs});if(x.length===0){let C=oU(v)?". 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 al(`No matches found: "${v}"${C}`)}for(let C of x.sort())p(C)}}if(o.size>0){let E=[];for(let[I,v]of o.entries())E.splice(E.length,0,I,String(v.length),...v);a.splice(0,0,"__ysh_set_redirects",...E,"--")}return a}function F1(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let o=ue.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:o});let[n,...u]=t;if(n==="command")return $le(u[0],u.slice(1),e,{cwd:o,env:a});let A=e.builtins.get(n);if(typeof A>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return ece(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:I,stdout:v,stderr:x}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await A(u,e,r)}finally{r.stdin=I,r.stdout=v,r.stderr=x}})}function dot(t,e,r){return o=>{let a=new ll.PassThrough,n=_b(t,e,Ub(r,{stdin:a}));return{stdin:a,promise:n}}}function mot(t,e,r){return o=>{let a=new ll.PassThrough,n=_b(t,e,r);return{stdin:a,promise:n}}}function ice(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(o.procedures,a));return o.procedures={...o.procedures},o.procedures[a]=t,F1([...e,"__ysh_run_procedure",a],r,o)}}async function sce(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{...r}:r,A;switch(o.type){case"command":{let p=await Qd(o.args,e,r),h=await nce(o.envs,e,r);A=o.envs.length?F1(p,e,Ub(u,{environment:h})):F1(p,e,u)}break;case"subshell":{let p=await Qd(o.args,e,r),h=dot(o.subshell,e,u);A=ice(h,p,e,u)}break;case"group":{let p=await Qd(o.args,e,r),h=mot(o.group,e,u);A=ice(h,p,e,u)}break;case"envs":{let p=await nce(o.envs,e,r);u.environment={...u.environment,...p},A=F1(["true"],e,u)}break}if(typeof A>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=Ob(A,{stdin:new zl(u.stdin),stdout:new zl(u.stdout),stderr:new zl(u.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(A,1);break;case"|&":n=n.pipeTo(A,3);break}}o.then?(a=o.then.type,o=o.then.chain):o=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function yot(t,e,r,{background:o=!1}={}){function a(n){let u=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],A=u[n%u.length];return oce.default.hex(A)}if(o){let n=r.nextBackgroundJobIndex++,u=a(n),A=`[${n}]`,p=u(A),{stdout:h,stderr:E}=tce(r,{prefix:p});return r.backgroundJobs.push(sce(t,e,Ub(r,{stdout:h,stderr:E})).catch(I=>E.write(`${I.message} +`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${u(uy(t))}' has ended +`)})),0}return await sce(t,e,r)}async function Eot(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variables["?"]=String(A)},u=async A=>{try{return await yot(A.chain,e,r,{background:o&&typeof A.then>"u"})}catch(p){if(!(p instanceof al))throw p;return r.stderr.write(`${p.message} +`),1}};for(n(await u(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":a===0&&n(await u(t.then.line));break;case"||":a!==0&&n(await u(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return a}async function _b(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:u}of t){if(a=await Eot(n,e,r,{background:u==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=o,a}function uce(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=>R1(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>R1(e));case"arithmetic":return AU(t.arithmetic);case"shell":return fU(t.shell);default:return!1}}function R1(t){switch(t.type){case"redirection":return t.args.some(e=>R1(e));case"argument":return t.segments.some(e=>uce(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function AU(t){switch(t.type){case"variable":return uce(t);case"number":return!1;default:return AU(t.left)||AU(t.right)}}function fU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let o;switch(r.type){case"subshell":o=fU(r.subshell);break;case"command":o=r.envs.some(a=>a.args.some(n=>R1(n)))||r.args.some(a=>R1(a));break}if(o)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function TE(t,e=[],{baseFs:r=new Tn,builtins:o={},cwd:a=ue.toPortablePath(process.cwd()),env:n=process.env,stdin:u=process.stdin,stdout:A=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=Lb}={}){let I={};for(let[C,R]of Object.entries(n))typeof R<"u"&&(I[C]=R);let v=new Map(pot);for(let[C,R]of Object.entries(o))v.set(C,R);u===null&&(u=new ll.PassThrough,u.end());let x=ND(t,E);if(!fU(x)&&x.length>0&&e.length>0){let{command:C}=x[x.length-1];for(;C.then;)C=C.then.line;let R=C.chain;for(;R.then;)R=R.then.chain;R.type==="command"&&(R.args=R.args.concat(e.map(L=>({type:"argument",segments:[{type:"text",text:L}]}))))}return await _b(x,{args:e,baseFs:r,builtins:v,initialStdin:u,initialStdout:A,initialStderr:p,glob:E},{cwd:a,environment:I,exitCode:null,procedures:{},stdin:u,stdout:A,stderr:p,variables:Object.assign({},h,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var oce,ace,ll,lce,pot,got,k1=Et(()=>{St();Nl();oce=$e(IN()),ace=ve("os"),ll=ve("stream"),lce=ve("timers/promises");qle();Yle();Jle();uU();uU();pot=new Map([["cd",async([t=(0,ace.homedir)(),...e],r,o)=>{let a=V.resolve(o.cwd,ue.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(u=>{throw u.code==="ENOENT"?new al(`cd: no such file or directory: ${t}`):u})).isDirectory())throw new al(`cd: not a directory: ${t}`);return o.cwd=a,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${ue.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,o)=>o.exitCode=parseInt(t??o.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} +`),0)],["sleep",async([t],e,r)=>{if(typeof t>"u")throw new al("sleep: missing operand");let o=Number(t);if(Number.isNaN(o))throw new al(`sleep: invalid time interval '${t}'`);return await(0,lce.setTimeout)(1e3*o,0)}],["__ysh_run_procedure",async(t,e,r)=>{let o=r.procedures[t[0]];return await Ob(o,{stdin:new zl(r.stdin),stdout:new zl(r.stdout),stderr:new zl(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let o=r.stdin,a=r.stdout,n=r.stderr,u=[],A=[],p=[],h=0;for(;t[h]!=="--";){let I=t[h++],{type:v,fd:x}=JSON.parse(I),C=J=>{switch(x){case null:case 0:u.push(J);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},R=J=>{switch(x){case null:case 1:A.push(J);break;case 2:p.push(J);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},L=Number(t[h++]),U=h+L;for(let J=h;Je.baseFs.createReadStream(V.resolve(r.cwd,ue.toPortablePath(t[J]))));break;case"<<<":C(()=>{let te=new ll.PassThrough;return process.nextTick(()=>{te.write(`${t[J]} +`),te.end()}),te});break;case"<&":C(()=>rce(Number(t[J]),1,r));break;case">":case">>":{let te=V.resolve(r.cwd,ue.toPortablePath(t[J]));R(te==="/dev/null"?new ll.Writable({autoDestroy:!0,emitClose:!0,write(ae,fe,ce){setImmediate(ce)}}):e.baseFs.createWriteStream(te,v===">>"?{flags:"a"}:void 0))}break;case">&":R(rce(Number(t[J]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${v}"`)}}if(u.length>0){let I=new ll.PassThrough;o=I;let v=x=>{if(x===u.length)I.end();else{let C=u[x]();C.pipe(I,{end:!1}),C.on("end",()=>{v(x+1)})}};v(0)}if(A.length>0){let I=new ll.PassThrough;a=I;for(let v of A)I.pipe(v)}if(p.length>0){let I=new ll.PassThrough;n=I;for(let v of p)I.pipe(v)}let E=await Ob(F1(t.slice(h+1),e,r),{stdin:new zl(o),stdout:new zl(a),stderr:new zl(n)}).run();return await Promise.all(A.map(I=>new Promise((v,x)=>{I.on("error",C=>{x(C)}),I.on("close",()=>{v()}),I.end()}))),await Promise.all(p.map(I=>new Promise((v,x)=>{I.on("error",C=>{x(C)}),I.on("close",()=>{v()}),I.end()}))),E}]]);got={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Hb=_((r4t,Ace)=>{function Cot(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r{var fce=pd(),wot=Hb(),Iot=Hl(),Bot=pE(),vot=1/0,pce=fce?fce.prototype:void 0,hce=pce?pce.toString:void 0;function gce(t){if(typeof t=="string")return t;if(Iot(t))return wot(t,gce)+"";if(Bot(t))return hce?hce.call(t):"";var e=t+"";return e=="0"&&1/t==-vot?"-0":e}dce.exports=gce});var N1=_((i4t,yce)=>{var Dot=mce();function Sot(t){return t==null?"":Dot(t)}yce.exports=Sot});var pU=_((s4t,Ece)=>{function Pot(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o{var bot=pU();function xot(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:bot(t,e,r)}Cce.exports=xot});var hU=_((a4t,Ice)=>{var kot="\\ud800-\\udfff",Qot="\\u0300-\\u036f",Fot="\\ufe20-\\ufe2f",Rot="\\u20d0-\\u20ff",Tot=Qot+Fot+Rot,Not="\\ufe0e\\ufe0f",Lot="\\u200d",Oot=RegExp("["+Lot+kot+Tot+Not+"]");function Mot(t){return Oot.test(t)}Ice.exports=Mot});var vce=_((l4t,Bce)=>{function Uot(t){return t.split("")}Bce.exports=Uot});var Fce=_((c4t,Qce)=>{var Dce="\\ud800-\\udfff",_ot="\\u0300-\\u036f",Hot="\\ufe20-\\ufe2f",jot="\\u20d0-\\u20ff",Got=_ot+Hot+jot,qot="\\ufe0e\\ufe0f",Yot="["+Dce+"]",gU="["+Got+"]",dU="\\ud83c[\\udffb-\\udfff]",Wot="(?:"+gU+"|"+dU+")",Sce="[^"+Dce+"]",Pce="(?:\\ud83c[\\udde6-\\uddff]){2}",bce="[\\ud800-\\udbff][\\udc00-\\udfff]",Kot="\\u200d",xce=Wot+"?",kce="["+qot+"]?",Vot="(?:"+Kot+"(?:"+[Sce,Pce,bce].join("|")+")"+kce+xce+")*",Jot=kce+xce+Vot,zot="(?:"+[Sce+gU+"?",gU,Pce,bce,Yot].join("|")+")",Xot=RegExp(dU+"(?="+dU+")|"+zot+Jot,"g");function Zot(t){return t.match(Xot)||[]}Qce.exports=Zot});var Tce=_((u4t,Rce)=>{var $ot=vce(),eat=hU(),tat=Fce();function rat(t){return eat(t)?tat(t):$ot(t)}Rce.exports=rat});var Lce=_((A4t,Nce)=>{var nat=wce(),iat=hU(),sat=Tce(),oat=N1();function aat(t){return function(e){e=oat(e);var r=iat(e)?sat(e):void 0,o=r?r[0]:e.charAt(0),a=r?nat(r,1).join(""):e.slice(1);return o[t]()+a}}Nce.exports=aat});var Mce=_((f4t,Oce)=>{var lat=Lce(),cat=lat("toUpperCase");Oce.exports=cat});var mU=_((p4t,Uce)=>{var uat=N1(),Aat=Mce();function fat(t){return Aat(uat(t).toLowerCase())}Uce.exports=fat});var _ce=_((h4t,jb)=>{function pat(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,E=10,I=11,v=12,x=13,C=14,R=15,L=16,U=17,J=0,te=1,ae=2,fe=3,ce=4;function me(g,Ee){return 55296<=g.charCodeAt(Ee)&&g.charCodeAt(Ee)<=56319&&56320<=g.charCodeAt(Ee+1)&&g.charCodeAt(Ee+1)<=57343}function he(g,Ee){Ee===void 0&&(Ee=0);var Se=g.charCodeAt(Ee);if(55296<=Se&&Se<=56319&&Ee=1){var le=g.charCodeAt(Ee-1),ne=Se;return 55296<=le&&le<=56319?(le-55296)*1024+(ne-56320)+65536:ne}return Se}function Be(g,Ee,Se){var le=[g].concat(Ee).concat([Se]),ne=le[le.length-2],ee=Se,Ie=le.lastIndexOf(C);if(Ie>1&&le.slice(1,Ie).every(function(H){return H==o})&&[o,x,U].indexOf(g)==-1)return ae;var Fe=le.lastIndexOf(a);if(Fe>0&&le.slice(1,Fe).every(function(H){return H==a})&&[v,a].indexOf(ne)==-1)return le.filter(function(H){return H==a}).length%2==1?fe:ce;if(ne==t&&ee==e)return J;if(ne==r||ne==t||ne==e)return ee==C&&Ee.every(function(H){return H==o})?ae:te;if(ee==r||ee==t||ee==e)return te;if(ne==u&&(ee==u||ee==A||ee==h||ee==E))return J;if((ne==h||ne==A)&&(ee==A||ee==p))return J;if((ne==E||ne==p)&&ee==p)return J;if(ee==o||ee==R)return J;if(ee==n)return J;if(ne==v)return J;var At=le.indexOf(o)!=-1?le.lastIndexOf(o)-1:le.length-2;return[x,U].indexOf(le[At])!=-1&&le.slice(At+1,-1).every(function(H){return H==o})&&ee==C||ne==R&&[L,U].indexOf(ee)!=-1?J:Ee.indexOf(a)!=-1?ae:ne==a&&ee==a?J:te}this.nextBreak=function(g,Ee){if(Ee===void 0&&(Ee=0),Ee<0)return 0;if(Ee>=g.length-1)return g.length;for(var Se=we(he(g,Ee)),le=[],ne=Ee+1;ne{var hat=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,Gb;function gat(){if(Gb)return Gb;if(typeof Intl.Segmenter<"u"){let t=new Intl.Segmenter("en",{granularity:"grapheme"});return Gb=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=_ce(),e=new t;return Gb=r=>e.splitGraphemes(r)}}Hce.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let o=r-e,a="",n=0,u=0;for(;t.length>0;){let A=t.match(hat)||[t,t,void 0],p=gat()(A[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(o-u,p.length);a+=p.slice(0,E).join(""),n+=h,u+=E,typeof A[2]<"u"&&(a+=A[2]),t=t.slice(A[0].length)}return a}});var rn,L1=Et(()=>{rn=process.env.YARN_IS_TEST_ENV?"0.0.0":"4.1.0"});function Vce(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let a=Wu(t===null?0:t);return!r&&t===null?Mt(e,a,"grey"):a}function yU(t,{configuration:e,json:r}){let o=Vce(t,{configuration:e,json:r});if(!o||t===null||t===0)return o;let a=wr[t],n=`https://yarnpkg.com/advanced/error-codes#${o}---${a}`.toLowerCase();return Zy(e,o,n)}async function LE({configuration:t,stdout:e,forceError:r},o){let a=await Nt.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let u=!1,A=!1;for(let p of o)typeof p.option<"u"&&(p.error||r?(A=!0,n.reportError(50,p.message)):(u=!0,n.reportWarning(50,p.message)),p.callback?.());u&&!A&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var Wce,qb,dat,Gce,qce,Ah,Kce,Yce,mat,yat,Yb,Eat,Nt,O1=Et(()=>{Wce=$e(jce()),qb=$e(td());fS();Yl();L1();Gl();dat="\xB7",Gce=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],qce=80,Ah=qb.default.GITHUB_ACTIONS?{start:t=>`::group::${t} +`,end:t=>`::endgroup:: +`}:qb.default.TRAVIS?{start:t=>`travis_fold:start:${t} +`,end:t=>`travis_fold:end:${t} +`}:qb.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,Kce=Ah!==null,Yce=new Date,mat=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,yat=t=>t,Yb=yat({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}}),Eat=mat&&Object.keys(Yb).find(t=>{let e=Yb[t];return!(e.date&&(e.date[0]!==Yce.getDate()||e.date[1]!==Yce.getMonth()+1))})||"default";Nt=class extends Xs{constructor({configuration:r,stdout:o,json:a=!1,forceSectionAlignment:n=!1,includeNames:u=!0,includePrefix:A=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:I=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(XI(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=u,this.includePrefix=A,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=I,this.json=a,this.stdout=o,r.get("enableProgressBars")&&!a&&o.isTTY&&o.columns>22){let v=r.get("progressBarStyle")||Eat;if(!Object.hasOwn(Yb,v))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Yb[v];let x=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,o){let a=new this(r),n=process.emitWarning;process.emitWarning=(u,A)=>{if(typeof u!="string"){let h=u;u=h.message,A=A??h.name}let p=typeof A<"u"?`${A}: ${u}`:u;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,yd(r.configuration,`Yarn ${rn}`,2));try{await o(a)}catch(u){a.reportExceptionOnce(u)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let o=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,o-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}startTimerImpl(r,o,a){return{cb:typeof o=="function"?o:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\u250C ${r}`),this.indent+=1,Ah!==null&&!this.json&&this.includeInfos&&this.stdout.write(Ah.start(r))},reportFooter:A=>{if(this.indent-=1,Ah!==null&&!this.json&&this.includeInfos){this.stdout.write(Ah.end(r));for(let p of this.timerFooter)p()}this.configuration.get("enableTimers")&&A>200?this.reportInfo(null,`\u2514 Completed in ${Mt(this.configuration,A,yt.DURATION)}`):this.reportInfo(null,"\u2514 Completed"),this.level-=1},skipIfEmpty:(typeof o=="function"?{}:o).skipIfEmpty}}startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionSync(u,n)}async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionPromise(u,n)}reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(null,"")}reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",u=`${this.formatPrefix(n,"blueBright")}${o}`;this.json?this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(u)}reportWarning(r,o){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:o}):this.writeLine(`${this.formatPrefix(n,"yellowBright")}${o}`)}reportError(r,o){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,o)),this.reportErrorImpl(r,o)}reportErrorImpl(r,o){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:o}):this.writeLine(`${this.formatPrefix(n,"redBright")}${o}`,{truncate:!1})}reportFold(r,o){if(!Ah)return;let a=`${Ah.start(r)}${o}${Ah.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 o=!1,a=Promise.resolve().then(async()=>{let u={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:u,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:A,title:p}of r)o||u.progress===A&&u.title===p||(u.progress=A,u.title=p,this.refreshProgress());n()}),n=()=>{o||(o=!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 o=Mt(this.configuration,Date.now()-this.startTime,yt.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${o}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:o})} +`),this.writeProgress()}writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:o})} +`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)o.committed=!0,o.action()}clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||o)&&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>qce&&(this.progressFrame=(this.progressFrame+1)%Gce.length,this.progressTime=r);let o=Gce[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 u=this.formatName(null),A=u?`${u}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${Mt(this.configuration,"\u27A4","blueBright")} ${A}${o}${n}${p} +`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},qce)}refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.progress.size===0)a=!0;else for(let u of this.progress.values()){let A=typeof u.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*u.definition.progress):void 0,p=u.lastScaledSize;u.lastScaledSize=A;let h=u.lastTitle;if(u.lastTitle=u.definition.title,A!==p||(n=h!==u.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typeof o>"u"&&(o=this.configuration.get("preferTruncatedLines")),o&&(r=(0,Wce.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Vce(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,o){return this.includePrefix?`${Mt(this.configuration,"\u27A4",o)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?yU(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ".repeat(this.indent):`${dat} `}}});var un={};Vt(un,{PackageManager:()=>Xce,detectPackageManager:()=>Zce,executePackageAccessibleBinary:()=>nue,executePackageScript:()=>Wb,executePackageShellcode:()=>EU,executeWorkspaceAccessibleBinary:()=>Sat,executeWorkspaceLifecycleScript:()=>tue,executeWorkspaceScript:()=>eue,getPackageAccessibleBinaries:()=>Kb,getWorkspaceAccessibleBinaries:()=>rue,hasPackageScript:()=>Bat,hasWorkspaceScript:()=>CU,isNodeScript:()=>wU,makeScriptEnv:()=>M1,maybeExecuteWorkspaceLifecycleScript:()=>Dat,prepareExternalProject:()=>Iat});async function fh(t,e,r,o=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${o.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await oe.writeFilePromise(V.format({dir:t,name:e,ext:".cmd"}),a)}await oe.writeFilePromise(V.join(t,e),`#!/bin/sh +exec "${r}" ${o.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" +`,{mode:493})}async function Zce(t){let e=await Ot.tryFind(t);if(e?.packageManager){let o=UP(e.packageManager);if(o?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=o.reference.split(".");switch(o.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 oe.readFilePromise(V.join(t,dr.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'}:oe.existsSync(V.join(t,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:oe.existsSync(V.join(t,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function M1({project:t,locator:e,binFolder:r,ignoreCorepack:o,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let u={};for(let[E,I]of Object.entries(n))typeof I<"u"&&(u[E.toLowerCase()!=="path"?E:"PATH"]=I);let A=ue.fromPortablePath(r);u.BERRY_BIN_FOLDER=ue.fromPortablePath(A);let p=process.env.COREPACK_ROOT&&!o?ue.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([fh(r,"node",process.execPath),...rn!==null?[fh(r,"run",process.execPath,[p,"run"]),fh(r,"yarn",process.execPath,[p]),fh(r,"yarnpkg",process.execPath,[p]),fh(r,"node-gyp",process.execPath,[p,"run","--top-level","node-gyp"])]:[]]),t&&(u.INIT_CWD=ue.fromPortablePath(t.configuration.startingCwd),u.PROJECT_CWD=ue.fromPortablePath(t.cwd)),u.PATH=u.PATH?`${A}${ue.delimiter}${u.PATH}`:`${A}`,u.npm_execpath=`${A}${ue.sep}yarn`,u.npm_node_execpath=`${A}${ue.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let E=t.tryWorkspaceByLocator(e),I=E?E.manifest.version??"":t.storedPackages.get(e.locatorHash).version??"";u.npm_package_name=fn(e),u.npm_package_version=I;let v;if(E)v=E.cwd;else{let x=t.storedPackages.get(e.locatorHash);if(!x)throw new Error(`Package for ${jr(t.configuration,e)} not found in the project`);let C=t.configuration.getLinkers(),R={project:t,report:new Nt({stdout:new ph.PassThrough,configuration:t.configuration})},L=C.find(U=>U.supportsPackage(x,R));if(!L)throw new Error(`The package ${jr(t.configuration,x)} isn't supported by any of the available linkers`);v=await L.findPackageLocation(x,R)}u.npm_package_json=ue.fromPortablePath(V.join(v,dr.manifest))}let h=rn!==null?`yarn/${rn}`:`yarn/${Df("@yarnpkg/core").version}-core`;return u.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(u.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,u,async(E,I,v)=>await fh(r,E,I,v)),u}async function Iat(t,e,{configuration:r,report:o,workspace:a=null,locator:n=null}){await wat(async()=>{await oe.mktempPromise(async u=>{let A=V.join(u,"pack.log"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(A,{prefix:ue.fromPortablePath(t),report:o}),I=n&&Hc(n)?r1(n):n,v=I?ba(I):"an external project";h.write(`Packing ${v} from sources +`);let x=await Zce(t),C;x!==null?(h.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason} + +`),C=x.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn + +`),C="Yarn");let R=C==="Yarn"&&!x?.packageManagerField;await oe.mktempPromise(async L=>{let U=await M1({binFolder:L,ignoreCorepack:R}),te=new Map([["Yarn Classic",async()=>{let fe=a!==null?["workspace",a]:[],ce=V.join(t,dr.manifest),me=await oe.readFilePromise(ce),he=await qc(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(he.code!==0)return he.code;await oe.writeFilePromise(ce,me),await oe.appendFilePromise(V.join(t,".npmignore"),`/.yarn +`),h.write(` +`),delete U.NODE_ENV;let Be=await qc("yarn",["install"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Be.code!==0)return Be.code;h.write(` +`);let we=await qc("yarn",[...fe,"pack","--filename",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return we.code!==0?we.code:0}],["Yarn",async()=>{let fe=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let ce=V.join(t,dr.lockfile);await oe.existsPromise(ce)||await oe.writeFilePromise(ce,"");let me=await qc("yarn",[...fe,"pack","--install-if-needed","--filename",ue.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 Ee=new ph.PassThrough,Se=Vy(Ee);Ee.pipe(h,{end:!1});let le=await qc("npm",["--version"],{cwd:t,env:U,stdin:p,stdout:Ee,stderr:E,end:0});if(Ee.end(),le.code!==0)return h.end(),E.end(),le.code;let ne=(await Se).toString().trim();if(!kf(ne,">=7.x")){let ee=eA(null,"npm"),Ie=In(ee,ne),Fe=In(ee,">=7.x");throw new Error(`Workspaces aren't supported by ${Gn(r,Ie)}; please upgrade to ${Gn(r,Fe)} (npm has been detected as the primary package manager for ${Mt(r,t,yt.PATH)})`)}}let fe=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 ce=await qc("npm",["install","--legacy-peer-deps"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ce.code!==0)return ce.code;let me=new ph.PassThrough,he=Vy(me);me.pipe(h);let Be=await qc("npm",["pack","--silent",...fe],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let we=(await he).toString().trim().replace(/^.*\n/s,""),g=V.resolve(t,ue.toPortablePath(we));return await oe.renamePromise(g,e),0}]]).get(C);if(typeof te>"u")throw new Error("Assertion failed: Unsupported workflow");let ae=await te();if(!(ae===0||typeof ae>"u"))throw oe.detachTemp(u),new zt(58,`Packing the package failed (exit code ${ae}, logs can be found here: ${Mt(r,A,yt.PATH)})`)})})})}async function Bat(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(o!==null)return CU(o,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${jr(r.configuration,t)} not found in the project`);return await Jl.openPromise(async n=>{let u=r.configuration,A=r.configuration.getLinkers(),p={project:r,report:new Nt({stdout:new ph.PassThrough,configuration:u})},h=A.find(x=>x.supportsPackage(a,p));if(!h)throw new Error(`The package ${jr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),I=new gn(E,{baseFs:n});return(await Ot.find(Bt.dot,{baseFs:I})).scripts.has(e)})}async function Wb(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{manifest:h,env:E,cwd:I}=await $ce(t,{project:a,binFolder:p,cwd:o,lifecycleScript:e}),v=h.scripts.get(e);if(typeof v>"u")return 1;let x=async()=>await TE(v,r,{cwd:I,env:E,stdin:n,stdout:u,stderr:A});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,x,a,t,e,{script:v,args:r,cwd:I,env:E,stdin:n,stdout:u,stderr:A}))()})}async function EU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{env:h,cwd:E}=await $ce(t,{project:a,binFolder:p,cwd:o});return await TE(e,r,{cwd:E,env:h,stdin:n,stdout:u,stderr:A})})}async function vat(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await M1({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:o});return await IU(e,await rue(t)),typeof r>"u"&&(r=V.dirname(await oe.realpathPromise(V.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function $ce(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return vat(n,{binFolder:r,cwd:o,lifecycleScript:a});let u=e.storedPackages.get(t.locatorHash);if(!u)throw new Error(`Package for ${jr(e.configuration,t)} not found in the project`);return await Jl.openPromise(async A=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Nt({stdout:new ph.PassThrough,configuration:p})},I=h.find(L=>L.supportsPackage(u,E));if(!I)throw new Error(`The package ${jr(e.configuration,u)} isn't supported by any of the available linkers`);let v=await M1({project:e,locator:t,binFolder:r,lifecycleScript:a});await IU(r,await Kb(t,{project:e}));let x=await I.findPackageLocation(u,E),C=new gn(x,{baseFs:A}),R=await Ot.find(Bt.dot,{baseFs:C});return typeof o>"u"&&(o=x),{manifest:R,binFolder:r,env:v,cwd:o}})}async function eue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await Wb(t.anchoredLocator,e,r,{cwd:o,project:t.project,stdin:a,stdout:n,stderr:u})}function CU(t,e){return t.manifest.scripts.has(e)}async function tue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,n=null;await oe.mktempPromise(async u=>{let A=V.join(u,`${e}.log`),p=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${ue.fromPortablePath(t.cwd)}") +`,{stdout:h,stderr:E}=a.getSubprocessStreams(A,{report:o,prefix:jr(a,t.anchoredLocator),header:p});o.reportInfo(36,`Calling the "${e}" lifecycle script`);let I=await eue(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),I!==0)throw oe.detachTemp(u),new zt(36,`${(0,Jce.default)(e)} script failed (exit code ${Mt(a,I,yt.NUMBER)}, logs can be found here: ${Mt(a,A,yt.PATH)}); run ${Mt(a,`yarn ${e}`,yt.CODE)} to investigate`)})}async function Dat(t,e,r){CU(t,e)&&await tue(t,e,r)}function wU(t){let e=V.extname(t);if(e.match(/\.[cm]?[jt]sx?$/))return!0;if(e===".exe"||e===".bin")return!1;let r=Buffer.alloc(4),o;try{o=oe.openSync(t,"r")}catch{return!0}try{oe.readSync(o,r,0,r.length,0)}finally{oe.closeSync(o)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function Kb(t,{project:e}){let r=e.configuration,o=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${jr(r,t)} not found in the project`);let n=new ph.Writable,u=r.getLinkers(),A={project:e,report:new Nt({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let I=e.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(`Assertion failed: The resolution (${Gn(r,E)}) should have been registered`);p.add(I)}let h=await Promise.all(Array.from(p,async E=>{let I=e.storedPackages.get(E);if(!I)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(I.bin.size===0)return sl.skip;let v=u.find(C=>C.supportsPackage(I,A));if(!v)return sl.skip;let x=null;try{x=await v.findPackageLocation(I,A)}catch(C){if(C.code==="LOCATOR_NOT_INSTALLED")return sl.skip;throw C}return{dependency:I,packageLocation:x}}));for(let E of h){if(E===sl.skip)continue;let{dependency:I,packageLocation:v}=E;for(let[x,C]of I.bin){let R=V.resolve(v,C);o.set(x,[I,ue.fromPortablePath(R),wU(R)])}}return o}async function rue(t){return await Kb(t.anchoredLocator,{project:t.project})}async function IU(t,e){await Promise.all(Array.from(e,([r,[,o,a]])=>a?fh(t,r,process.execPath,[o]):fh(t,r,o,[])))}async function nue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await Kb(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${jr(a.configuration,t)}`);return await oe.mktempPromise(async I=>{let[,v]=E,x=await M1({project:a,locator:t,binFolder:I});await IU(x.BERRY_BIN_FOLDER,h);let C=wU(ue.toPortablePath(v))?qc(process.execPath,[...p,v,...r],{cwd:o,env:x,stdin:n,stdout:u,stderr:A}):qc(v,r,{cwd:o,env:x,stdin:n,stdout:u,stderr:A}),R;try{R=await C}finally{await oe.removePromise(x.BERRY_BIN_FOLDER)}return R.code})}async function Sat(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A}){return await nue(t.anchoredLocator,e,r,{project:t.project,cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A})}var Jce,zce,ph,Xce,Cat,wat,BU=Et(()=>{St();St();nA();k1();Jce=$e(mU()),zce=$e(id()),ph=ve("stream");fE();Yl();O1();L1();Db();Gl();jl();Qf();bo();Xce=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(Xce||{});Cat=2,wat=(0,zce.default)(Cat)});var OE=_((L4t,sue)=>{"use strict";var iue=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"]]);sue.exports=t=>t?Object.keys(t).map(e=>[iue.has(e)?iue.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var UE=_((O4t,hue)=>{"use strict";var oue=typeof process=="object"&&process?process:{stdout:null,stderr:null},Pat=ve("events"),aue=ve("stream"),lue=ve("string_decoder").StringDecoder,Mf=Symbol("EOF"),Uf=Symbol("maybeEmitEnd"),hh=Symbol("emittedEnd"),Vb=Symbol("emittingEnd"),U1=Symbol("emittedError"),Jb=Symbol("closed"),cue=Symbol("read"),zb=Symbol("flush"),uue=Symbol("flushChunk"),ka=Symbol("encoding"),_f=Symbol("decoder"),Xb=Symbol("flowing"),_1=Symbol("paused"),ME=Symbol("resume"),Fs=Symbol("bufferLength"),vU=Symbol("bufferPush"),DU=Symbol("bufferShift"),Fo=Symbol("objectMode"),Ro=Symbol("destroyed"),SU=Symbol("emitData"),Aue=Symbol("emitEnd"),PU=Symbol("emitEnd2"),Hf=Symbol("async"),H1=t=>Promise.resolve().then(t),fue=global._MP_NO_ITERATOR_SYMBOLS_!=="1",bat=fue&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),xat=fue&&Symbol.iterator||Symbol("iterator not implemented"),kat=t=>t==="end"||t==="finish"||t==="prefinish",Qat=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,Fat=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),Zb=class{constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e[ME](),r.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},bU=class extends Zb{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}};hue.exports=class pue extends aue{constructor(e){super(),this[Xb]=!1,this[_1]=!1,this.pipes=[],this.buffer=[],this[Fo]=e&&e.objectMode||!1,this[Fo]?this[ka]=null:this[ka]=e&&e.encoding||null,this[ka]==="buffer"&&(this[ka]=null),this[Hf]=e&&!!e.async||!1,this[_f]=this[ka]?new lue(this[ka]):null,this[Mf]=!1,this[hh]=!1,this[Vb]=!1,this[Jb]=!1,this[U1]=null,this.writable=!0,this.readable=!0,this[Fs]=0,this[Ro]=!1}get bufferLength(){return this[Fs]}get encoding(){return this[ka]}set encoding(e){if(this[Fo])throw new Error("cannot set encoding in objectMode");if(this[ka]&&e!==this[ka]&&(this[_f]&&this[_f].lastNeed||this[Fs]))throw new Error("cannot change encoding");this[ka]!==e&&(this[_f]=e?new lue(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[_f].write(r)))),this[ka]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Fo]}set objectMode(e){this[Fo]=this[Fo]||!!e}get async(){return this[Hf]}set async(e){this[Hf]=this[Hf]||!!e}write(e,r,o){if(this[Mf])throw new Error("write after end");if(this[Ro])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(o=r,r="utf8"),r||(r="utf8");let a=this[Hf]?H1:n=>n();return!this[Fo]&&!Buffer.isBuffer(e)&&(Fat(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Qat(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[Fo]?(this.flowing&&this[Fs]!==0&&this[zb](!0),this.flowing?this.emit("data",e):this[vU](e),this[Fs]!==0&&this.emit("readable"),o&&a(o),this.flowing):e.length?(typeof e=="string"&&!(r===this[ka]&&!this[_f].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ka]&&(e=this[_f].write(e)),this.flowing&&this[Fs]!==0&&this[zb](!0),this.flowing?this.emit("data",e):this[vU](e),this[Fs]!==0&&this.emit("readable"),o&&a(o),this.flowing):(this[Fs]!==0&&this.emit("readable"),o&&a(o),this.flowing)}read(e){if(this[Ro])return null;if(this[Fs]===0||e===0||e>this[Fs])return this[Uf](),null;this[Fo]&&(e=null),this.buffer.length>1&&!this[Fo]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[Fs])]);let r=this[cue](e||null,this.buffer[0]);return this[Uf](),r}[cue](e,r){return e===r.length||e===null?this[DU]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Fs]-=e),this.emit("data",r),!this.buffer.length&&!this[Mf]&&this.emit("drain"),r}end(e,r,o){return typeof e=="function"&&(o=e,e=null),typeof r=="function"&&(o=r,r="utf8"),e&&this.write(e,r),o&&this.once("end",o),this[Mf]=!0,this.writable=!1,(this.flowing||!this[_1])&&this[Uf](),this}[ME](){this[Ro]||(this[_1]=!1,this[Xb]=!0,this.emit("resume"),this.buffer.length?this[zb]():this[Mf]?this[Uf]():this.emit("drain"))}resume(){return this[ME]()}pause(){this[Xb]=!1,this[_1]=!0}get destroyed(){return this[Ro]}get flowing(){return this[Xb]}get paused(){return this[_1]}[vU](e){this[Fo]?this[Fs]+=1:this[Fs]+=e.length,this.buffer.push(e)}[DU](){return this.buffer.length&&(this[Fo]?this[Fs]-=1:this[Fs]-=this.buffer[0].length),this.buffer.shift()}[zb](e){do;while(this[uue](this[DU]()));!e&&!this.buffer.length&&!this[Mf]&&this.emit("drain")}[uue](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Ro])return;let o=this[hh];return r=r||{},e===oue.stdout||e===oue.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,o?r.end&&e.end():(this.pipes.push(r.proxyErrors?new bU(this,e,r):new Zb(this,e,r)),this[Hf]?H1(()=>this[ME]()):this[ME]()),e}unpipe(e){let r=this.pipes.find(o=>o.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 o=super.on(e,r);return e==="data"&&!this.pipes.length&&!this.flowing?this[ME]():e==="readable"&&this[Fs]!==0?super.emit("readable"):kat(e)&&this[hh]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[U1]&&(this[Hf]?H1(()=>r.call(this,this[U1])):r.call(this,this[U1])),o}get emittedEnd(){return this[hh]}[Uf](){!this[Vb]&&!this[hh]&&!this[Ro]&&this.buffer.length===0&&this[Mf]&&(this[Vb]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Jb]&&this.emit("close"),this[Vb]=!1)}emit(e,r,...o){if(e!=="error"&&e!=="close"&&e!==Ro&&this[Ro])return;if(e==="data")return r?this[Hf]?H1(()=>this[SU](r)):this[SU](r):!1;if(e==="end")return this[Aue]();if(e==="close"){if(this[Jb]=!0,!this[hh]&&!this[Ro])return;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[U1]=r;let n=super.emit("error",r);return this[Uf](),n}else if(e==="resume"){let n=super.emit("resume");return this[Uf](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...o);return this[Uf](),a}[SU](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r=super.emit("data",e);return this[Uf](),r}[Aue](){this[hh]||(this[hh]=!0,this.readable=!1,this[Hf]?H1(()=>this[PU]()):this[PU]())}[PU](){if(this[_f]){let r=this[_f].end();if(r){for(let o of this.pipes)o.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[Fo]||(e.dataLength=0);let r=this.promise();return this.on("data",o=>{e.push(o),this[Fo]||(e.dataLength+=o.length)}),r.then(()=>e)}concat(){return this[Fo]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Fo]?Promise.reject(new Error("cannot concat in objectMode")):this[ka]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Ro,()=>r(new Error("stream destroyed"))),this.on("error",o=>r(o)),this.on("end",()=>e())})}[bat](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Mf])return Promise.resolve({done:!0});let o=null,a=null,n=h=>{this.removeListener("data",u),this.removeListener("end",A),a(h)},u=h=>{this.removeListener("error",n),this.removeListener("end",A),this.pause(),o({value:h,done:!!this[Mf]})},A=()=>{this.removeListener("error",n),this.removeListener("data",u),o({done:!0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,E)=>{a=E,o=h,this.once(Ro,p),this.once("error",n),this.once("end",A),this.once("data",u)})}}}[xat](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Ro]?(e?this.emit("error",e):this.emit(Ro),this):(this[Ro]=!0,this.buffer.length=0,this[Fs]=0,typeof this.close=="function"&&!this[Jb]&&this.close(),e?this.emit("error",e):this.emit(Ro),this)}static isStream(e){return!!e&&(e instanceof pue||e instanceof aue||e instanceof Pat&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var due=_((M4t,gue)=>{var Rat=ve("zlib").constants||{ZLIB_VERNUM:4736};gue.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},Rat))});var qU=_(cl=>{"use strict";var RU=ve("assert"),gh=ve("buffer").Buffer,Eue=ve("zlib"),Fd=cl.constants=due(),Tat=UE(),mue=gh.concat,Rd=Symbol("_superWrite"),HE=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"}},Nat=Symbol("opts"),j1=Symbol("flushFlag"),yue=Symbol("finishFlushFlag"),GU=Symbol("fullFlushFlag"),ti=Symbol("handle"),$b=Symbol("onError"),_E=Symbol("sawError"),xU=Symbol("level"),kU=Symbol("strategy"),QU=Symbol("ended"),U4t=Symbol("_defaultFullFlush"),ex=class extends Tat{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[_E]=!1,this[QU]=!1,this[Nat]=e,this[j1]=e.flush,this[yue]=e.finishFlush;try{this[ti]=new Eue[r](e)}catch(o){throw new HE(o)}this[$b]=o=>{this[_E]||(this[_E]=!0,this.close(),this.emit("error",o))},this[ti].on("error",o=>this[$b](new HE(o))),this.once("end",()=>this.close)}close(){this[ti]&&(this[ti].close(),this[ti]=null,this.emit("close"))}reset(){if(!this[_E])return RU(this[ti],"zlib binding closed"),this[ti].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[GU]),this.write(Object.assign(gh.alloc(0),{[j1]:e})))}end(e,r,o){return e&&this.write(e,r),this.flush(this[yue]),this[QU]=!0,super.end(null,null,o)}get ended(){return this[QU]}write(e,r,o){if(typeof r=="function"&&(o=r,r="utf8"),typeof e=="string"&&(e=gh.from(e,r)),this[_E])return;RU(this[ti],"zlib binding closed");let a=this[ti]._handle,n=a.close;a.close=()=>{};let u=this[ti].close;this[ti].close=()=>{},gh.concat=h=>h;let A;try{let h=typeof e[j1]=="number"?e[j1]:this[j1];A=this[ti]._processChunk(e,h),gh.concat=mue}catch(h){gh.concat=mue,this[$b](new HE(h))}finally{this[ti]&&(this[ti]._handle=a,a.close=n,this[ti].close=u,this[ti].removeAllListeners("error"))}this[ti]&&this[ti].on("error",h=>this[$b](new HE(h)));let p;if(A)if(Array.isArray(A)&&A.length>0){p=this[Rd](gh.from(A[0]));for(let h=1;h{this.flush(a),n()};try{this[ti].params(e,r)}finally{this[ti].flush=o}this[ti]&&(this[xU]=e,this[kU]=r)}}}},TU=class extends jf{constructor(e){super(e,"Deflate")}},NU=class extends jf{constructor(e){super(e,"Inflate")}},FU=Symbol("_portable"),LU=class extends jf{constructor(e){super(e,"Gzip"),this[FU]=e&&!!e.portable}[Rd](e){return this[FU]?(this[FU]=!1,e[9]=255,super[Rd](e)):super[Rd](e)}},OU=class extends jf{constructor(e){super(e,"Gunzip")}},MU=class extends jf{constructor(e){super(e,"DeflateRaw")}},UU=class extends jf{constructor(e){super(e,"InflateRaw")}},_U=class extends jf{constructor(e){super(e,"Unzip")}},tx=class extends ex{constructor(e,r){e=e||{},e.flush=e.flush||Fd.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Fd.BROTLI_OPERATION_FINISH,super(e,r),this[GU]=Fd.BROTLI_OPERATION_FLUSH}},HU=class extends tx{constructor(e){super(e,"BrotliCompress")}},jU=class extends tx{constructor(e){super(e,"BrotliDecompress")}};cl.Deflate=TU;cl.Inflate=NU;cl.Gzip=LU;cl.Gunzip=OU;cl.DeflateRaw=MU;cl.InflateRaw=UU;cl.Unzip=_U;typeof Eue.BrotliCompress=="function"?(cl.BrotliCompress=HU,cl.BrotliDecompress=jU):cl.BrotliCompress=cl.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var jE=_((j4t,Cue)=>{var Lat=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;Cue.exports=Lat!=="win32"?t=>t:t=>t&&t.replace(/\\/g,"/")});var rx=_((q4t,wue)=>{"use strict";var Oat=UE(),YU=jE(),WU=Symbol("slurp");wue.exports=class extends Oat{constructor(e,r,o){switch(super(),this.pause(),this.extended=r,this.globalExtended=o,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=YU(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=YU(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[WU](r),o&&this[WU](o,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let o=this.remain,a=this.blockRemain;return this.remain=Math.max(0,o-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:o>=r?super.write(e):super.write(e.slice(0,o))}[WU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o==="path")&&(this[o]=o==="path"||o==="linkpath"?YU(e[o]):e[o])}}});var KU=_(nx=>{"use strict";nx.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"]]);nx.code=new Map(Array.from(nx.name).map(t=>[t[1],t[0]]))});var Due=_((W4t,vue)=>{"use strict";var Mat=(t,e)=>{if(Number.isSafeInteger(t))t<0?_at(t,e):Uat(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},Uat=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},_at=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var o=e.length;o>1;o--){var a=t&255;t=Math.floor(t/256),r?e[o-1]=Iue(a):a===0?e[o-1]=0:(r=!0,e[o-1]=Bue(a))}},Hat=t=>{let e=t[0],r=e===128?Gat(t.slice(1,t.length)):e===255?jat(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},jat=t=>{for(var e=t.length,r=0,o=!1,a=e-1;a>-1;a--){var n=t[a],u;o?u=Iue(n):n===0?u=n:(o=!0,u=Bue(n)),u!==0&&(r-=u*Math.pow(256,e-a-1))}return r},Gat=t=>{for(var e=t.length,r=0,o=e-1;o>-1;o--){var a=t[o];a!==0&&(r+=a*Math.pow(256,e-o-1))}return r},Iue=t=>(255^t)&255,Bue=t=>(255^t)+1&255;vue.exports={encode:Mat,parse:Hat}});var qE=_((K4t,Pue)=>{"use strict";var VU=KU(),GE=ve("path").posix,Sue=Due(),JU=Symbol("slurp"),ul=Symbol("type"),ZU=class{constructor(e,r,o,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[ul]="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,o,a):e&&this.set(e)}decode(e,r,o,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=Td(e,r,100),this.mode=dh(e,r+100,8),this.uid=dh(e,r+108,8),this.gid=dh(e,r+116,8),this.size=dh(e,r+124,12),this.mtime=zU(e,r+136,12),this.cksum=dh(e,r+148,12),this[JU](o),this[JU](a,!0),this[ul]=Td(e,r+156,1),this[ul]===""&&(this[ul]="0"),this[ul]==="0"&&this.path.substr(-1)==="/"&&(this[ul]="5"),this[ul]==="5"&&(this.size=0),this.linkpath=Td(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=Td(e,r+265,32),this.gname=Td(e,r+297,32),this.devmaj=dh(e,r+329,8),this.devmin=dh(e,r+337,8),e[r+475]!==0){let u=Td(e,r+345,155);this.path=u+"/"+this.path}else{let u=Td(e,r+345,130);u&&(this.path=u+"/"+this.path),this.atime=zU(e,r+476,12),this.ctime=zU(e,r+488,12)}let n=8*32;for(let u=r;u=r+512))throw new Error("need 512 bytes for header");let o=this.ctime||this.atime?130:155,a=qat(this.path||"",o),n=a[0],u=a[1];this.needPax=a[2],this.needPax=Nd(e,r,100,n)||this.needPax,this.needPax=mh(e,r+100,8,this.mode)||this.needPax,this.needPax=mh(e,r+108,8,this.uid)||this.needPax,this.needPax=mh(e,r+116,8,this.gid)||this.needPax,this.needPax=mh(e,r+124,12,this.size)||this.needPax,this.needPax=XU(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[ul].charCodeAt(0),this.needPax=Nd(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=Nd(e,r+265,32,this.uname)||this.needPax,this.needPax=Nd(e,r+297,32,this.gname)||this.needPax,this.needPax=mh(e,r+329,8,this.devmaj)||this.needPax,this.needPax=mh(e,r+337,8,this.devmin)||this.needPax,this.needPax=Nd(e,r+345,o,u)||this.needPax,e[r+475]!==0?this.needPax=Nd(e,r+345,155,u)||this.needPax:(this.needPax=Nd(e,r+345,130,u)||this.needPax,this.needPax=XU(e,r+476,12,this.atime)||this.needPax,this.needPax=XU(e,r+488,12,this.ctime)||this.needPax);let A=8*32;for(let p=r;p{let o=t,a="",n,u=GE.parse(t).root||".";if(Buffer.byteLength(o)<100)n=[o,a,!1];else{a=GE.dirname(o),o=GE.basename(o);do Buffer.byteLength(o)<=100&&Buffer.byteLength(a)<=e?n=[o,a,!1]:Buffer.byteLength(o)>100&&Buffer.byteLength(a)<=e?n=[o.substr(0,100-1),a,!0]:(o=GE.join(GE.basename(a),o),a=GE.dirname(a));while(a!==u&&!n);n||(n=[t.substr(0,100-1),"",!0])}return n},Td=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),zU=(t,e,r)=>Yat(dh(t,e,r)),Yat=t=>t===null?null:new Date(t*1e3),dh=(t,e,r)=>t[e]&128?Sue.parse(t.slice(e,e+r)):Kat(t,e,r),Wat=t=>isNaN(t)?null:t,Kat=(t,e,r)=>Wat(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Vat={12:8589934591,8:2097151},mh=(t,e,r,o)=>o===null?!1:o>Vat[r]||o<0?(Sue.encode(o,t.slice(e,e+r)),!0):(Jat(t,e,r,o),!1),Jat=(t,e,r,o)=>t.write(zat(o,r),e,r,"ascii"),zat=(t,e)=>Xat(Math.floor(t).toString(8),e),Xat=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",XU=(t,e,r,o)=>o===null?!1:mh(t,e,r,o.getTime()/1e3),Zat=new Array(156).join("\0"),Nd=(t,e,r,o)=>o===null?!1:(t.write(o+Zat,e,r,"utf8"),o.length!==Buffer.byteLength(o)||o.length>r);Pue.exports=ZU});var ix=_((V4t,bue)=>{"use strict";var $at=qE(),elt=ve("path"),G1=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),o=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(o);for(let n=0;n<512;n++)a[n]=0;new $at({path:("PaxHeader/"+elt.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+o}};G1.parse=(t,e,r)=>new G1(tlt(rlt(t),e),r);var tlt=(t,e)=>e?Object.keys(t).reduce((r,o)=>(r[o]=t[o],r),e):t,rlt=t=>t.replace(/\n$/,"").split(` +`).reduce(nlt,Object.create(null)),nlt=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let o=e.split("="),a=o.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!a)return t;let n=o.join("=");return t[a]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};bue.exports=G1});var YE=_((J4t,xue)=>{xue.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 sx=_((z4t,kue)=>{"use strict";kue.exports=t=>class extends t{warn(e,r,o={}){this.file&&(o.file=this.file),this.cwd&&(o.cwd=this.cwd),o.code=r instanceof Error&&r.code||e,o.tarCode=e,!this.strict&&o.recoverable!==!1?(r instanceof Error&&(o=Object.assign(r,o),r=r.message),this.emit("warn",o.tarCode,r,o)):r instanceof Error?this.emit("error",Object.assign(r,o)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),o))}}});var e3=_((Z4t,Que)=>{"use strict";var ox=["|","<",">","?",":"],$U=ox.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),ilt=new Map(ox.map((t,e)=>[t,$U[e]])),slt=new Map($U.map((t,e)=>[t,ox[e]]));Que.exports={encode:t=>ox.reduce((e,r)=>e.split(r).join(ilt.get(r)),t),decode:t=>$U.reduce((e,r)=>e.split(r).join(slt.get(r)),t)}});var t3=_(($4t,Rue)=>{var{isAbsolute:olt,parse:Fue}=ve("path").win32;Rue.exports=t=>{let e="",r=Fue(t);for(;olt(t)||r.root;){let o=t.charAt(0)==="/"&&t.slice(0,4)!=="//?/"?"/":r.root;t=t.substr(o.length),e+=o,r=Fue(t)}return[e,t]}});var Nue=_((eUt,Tue)=>{"use strict";Tue.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 A3=_((nUt,Jue)=>{"use strict";var jue=UE(),Gue=ix(),que=qE(),oA=ve("fs"),Lue=ve("path"),sA=jE(),alt=YE(),Yue=(t,e)=>e?(t=sA(t).replace(/^\.(\/|$)/,""),alt(e)+"/"+t):sA(t),llt=16*1024*1024,Oue=Symbol("process"),Mue=Symbol("file"),Uue=Symbol("directory"),n3=Symbol("symlink"),_ue=Symbol("hardlink"),q1=Symbol("header"),ax=Symbol("read"),i3=Symbol("lstat"),lx=Symbol("onlstat"),s3=Symbol("onread"),o3=Symbol("onreadlink"),a3=Symbol("openfile"),l3=Symbol("onopenfile"),yh=Symbol("close"),cx=Symbol("mode"),c3=Symbol("awaitDrain"),r3=Symbol("ondrain"),aA=Symbol("prefix"),Hue=Symbol("hadError"),Wue=sx(),clt=e3(),Kue=t3(),Vue=Nue(),ux=Wue(class extends jue{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=sA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||llt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=sA(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?sA(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 o=!1;if(!this.preservePaths){let[a,n]=Kue(this.path);a&&(this.path=n,o=a)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=clt.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=sA(r.absolute||Lue.resolve(this.cwd,e)),this.path===""&&(this.path="./"),o&&this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.statCache.has(this.absolute)?this[lx](this.statCache.get(this.absolute)):this[i3]()}emit(e,...r){return e==="error"&&(this[Hue]=!0),super.emit(e,...r)}[i3](){oA.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[lx](r)})}[lx](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Alt(e),this.emit("stat",e),this[Oue]()}[Oue](){switch(this.type){case"File":return this[Mue]();case"Directory":return this[Uue]();case"SymbolicLink":return this[n3]();default:return this.end()}}[cx](e){return Vue(e,this.type==="Directory",this.portable)}[aA](e){return Yue(e,this.prefix)}[q1](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new que({path:this[aA](this.path),linkpath:this.type==="Link"?this[aA](this.linkpath):this.linkpath,mode:this[cx](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 Gue({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[aA](this.path),linkpath:this.type==="Link"?this[aA](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)}[Uue](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[q1](),this.end()}[n3](){oA.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[o3](r)})}[o3](e){this.linkpath=sA(e),this[q1](),this.end()}[_ue](e){this.type="Link",this.linkpath=sA(Lue.relative(this.cwd,e)),this.stat.size=0,this[q1](),this.end()}[Mue](){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[_ue](r)}this.linkCache.set(e,this.absolute)}if(this[q1](),this.stat.size===0)return this.end();this[a3]()}[a3](){oA.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[l3](r)})}[l3](e){if(this.fd=e,this[Hue])return this[yh]();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[ax]()}[ax](){let{fd:e,buf:r,offset:o,length:a,pos:n}=this;oA.read(e,r,o,a,n,(u,A)=>{if(u)return this[yh](()=>this.emit("error",u));this[s3](A)})}[yh](e){oA.close(this.fd,e)}[s3](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[yh](()=>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[yh](()=>this.emit("error",a))}if(e===this.remain)for(let a=e;athis[r3]())}[c3](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[ax]()}}),u3=class extends ux{[i3](){this[lx](oA.lstatSync(this.absolute))}[n3](){this[o3](oA.readlinkSync(this.absolute))}[a3](){this[l3](oA.openSync(this.absolute,"r"))}[ax](){let e=!0;try{let{fd:r,buf:o,offset:a,length:n,pos:u}=this,A=oA.readSync(r,o,a,n,u);this[s3](A),e=!1}finally{if(e)try{this[yh](()=>{})}catch{}}}[c3](e){e()}[yh](e){oA.closeSync(this.fd),e()}},ult=Wue(class extends jue{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=sA(e.path),this.mode=this[cx](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=sA(e.linkpath),typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Kue(this.path);a&&(this.path=n,o=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new que({path:this[aA](this.path),linkpath:this.type==="Link"?this[aA](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}),o&&this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.header.encode()&&!this.noPax&&super.write(new Gue({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[aA](this.path),linkpath:this.type==="Link"?this[aA](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)}[aA](e){return Yue(e,this.prefix)}[cx](e){return Vue(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()}});ux.Sync=u3;ux.Tar=ult;var Alt=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";Jue.exports=ux});var Ex=_((sUt,rAe)=>{"use strict";var mx=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}},flt=UE(),plt=qU(),hlt=rx(),C3=A3(),glt=C3.Sync,dlt=C3.Tar,mlt=IS(),zue=Buffer.alloc(1024),px=Symbol("onStat"),Ax=Symbol("ended"),lA=Symbol("queue"),WE=Symbol("current"),Ld=Symbol("process"),fx=Symbol("processing"),Xue=Symbol("processJob"),cA=Symbol("jobs"),f3=Symbol("jobDone"),hx=Symbol("addFSEntry"),Zue=Symbol("addTarEntry"),d3=Symbol("stat"),m3=Symbol("readdir"),gx=Symbol("onreaddir"),dx=Symbol("pipe"),$ue=Symbol("entry"),p3=Symbol("entryOpt"),y3=Symbol("writeEntryClass"),tAe=Symbol("write"),h3=Symbol("ondrain"),yx=ve("fs"),eAe=ve("path"),ylt=sx(),g3=jE(),w3=ylt(class extends flt{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=g3(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[y3]=C3,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 plt.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[h3]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[h3]),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[lA]=new mlt,this[cA]=0,this.jobs=+e.jobs||4,this[fx]=!1,this[Ax]=!1}[tAe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[Ax]=!0,this[Ld](),this}write(e){if(this[Ax])throw new Error("write after end");return e instanceof hlt?this[Zue](e):this[hx](e),this.flowing}[Zue](e){let r=g3(eAe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let o=new mx(e.path,r,!1);o.entry=new dlt(e,this[p3](o)),o.entry.on("end",a=>this[f3](o)),this[cA]+=1,this[lA].push(o)}this[Ld]()}[hx](e){let r=g3(eAe.resolve(this.cwd,e));this[lA].push(new mx(e,r)),this[Ld]()}[d3](e){e.pending=!0,this[cA]+=1;let r=this.follow?"stat":"lstat";yx[r](e.absolute,(o,a)=>{e.pending=!1,this[cA]-=1,o?this.emit("error",o):this[px](e,a)})}[px](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Ld]()}[m3](e){e.pending=!0,this[cA]+=1,yx.readdir(e.absolute,(r,o)=>{if(e.pending=!1,this[cA]-=1,r)return this.emit("error",r);this[gx](e,o)})}[gx](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Ld]()}[Ld](){if(!this[fx]){this[fx]=!0;for(let e=this[lA].head;e!==null&&this[cA]this.warn(r,o,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}}[$ue](e){this[cA]+=1;try{return new this[y3](e.path,this[p3](e)).on("end",()=>this[f3](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[h3](){this[WE]&&this[WE].entry&&this[WE].entry.resume()}[dx](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n==="./"?"":n.replace(/\/*$/,"/");this[hx](u+a)});let r=e.entry,o=this.zip;o?r.on("data",a=>{o.write(a)||r.pause()}):r.on("data",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),E3=class extends w3{constructor(e){super(e),this[y3]=glt}pause(){}resume(){}[d3](e){let r=this.follow?"statSync":"lstatSync";this[px](e,yx[r](e.absolute))}[m3](e,r){this[gx](e,yx.readdirSync(e.absolute))}[dx](e){let r=e.entry,o=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n==="./"?"":n.replace(/\/*$/,"/");this[hx](u+a)}),o?r.on("data",a=>{o.write(a)}):r.on("data",a=>{super[tAe](a)})}};w3.Sync=E3;rAe.exports=w3});var eC=_(W1=>{"use strict";var Elt=UE(),Clt=ve("events").EventEmitter,Qa=ve("fs"),v3=Qa.writev;if(!v3){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;v3=(r,o,a,n)=>{let u=(p,h)=>n(p,h,o),A=new e;A.oncomplete=u,t.writeBuffers(r,o,a,A)}}var ZE=Symbol("_autoClose"),Yc=Symbol("_close"),Y1=Symbol("_ended"),qn=Symbol("_fd"),nAe=Symbol("_finished"),Ch=Symbol("_flags"),I3=Symbol("_flush"),D3=Symbol("_handleChunk"),S3=Symbol("_makeBuf"),vx=Symbol("_mode"),Cx=Symbol("_needDrain"),zE=Symbol("_onerror"),$E=Symbol("_onopen"),B3=Symbol("_onread"),VE=Symbol("_onwrite"),wh=Symbol("_open"),Gf=Symbol("_path"),Od=Symbol("_pos"),uA=Symbol("_queue"),JE=Symbol("_read"),iAe=Symbol("_readSize"),Eh=Symbol("_reading"),wx=Symbol("_remain"),sAe=Symbol("_size"),Ix=Symbol("_write"),KE=Symbol("_writing"),Bx=Symbol("_defaultFlag"),XE=Symbol("_errored"),Dx=class extends Elt{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[XE]=!1,this[qn]=typeof r.fd=="number"?r.fd:null,this[Gf]=e,this[iAe]=r.readSize||16*1024*1024,this[Eh]=!1,this[sAe]=typeof r.size=="number"?r.size:1/0,this[wx]=this[sAe],this[ZE]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[qn]=="number"?this[JE]():this[wh]()}get fd(){return this[qn]}get path(){return this[Gf]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[wh](){Qa.open(this[Gf],"r",(e,r)=>this[$E](e,r))}[$E](e,r){e?this[zE](e):(this[qn]=r,this.emit("open",r),this[JE]())}[S3](){return Buffer.allocUnsafe(Math.min(this[iAe],this[wx]))}[JE](){if(!this[Eh]){this[Eh]=!0;let e=this[S3]();if(e.length===0)return process.nextTick(()=>this[B3](null,0,e));Qa.read(this[qn],e,0,e.length,null,(r,o,a)=>this[B3](r,o,a))}}[B3](e,r,o){this[Eh]=!1,e?this[zE](e):this[D3](r,o)&&this[JE]()}[Yc](){if(this[ZE]&&typeof this[qn]=="number"){let e=this[qn];this[qn]=null,Qa.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[zE](e){this[Eh]=!0,this[Yc](),this.emit("error",e)}[D3](e,r){let o=!1;return this[wx]-=e,e>0&&(o=super.write(ethis[$E](e,r))}[$E](e,r){this[Bx]&&this[Ch]==="r+"&&e&&e.code==="ENOENT"?(this[Ch]="w",this[wh]()):e?this[zE](e):(this[qn]=r,this.emit("open",r),this[I3]())}end(e,r){return e&&this.write(e,r),this[Y1]=!0,!this[KE]&&!this[uA].length&&typeof this[qn]=="number"&&this[VE](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[Y1]?(this.emit("error",new Error("write() after end()")),!1):this[qn]===null||this[KE]||this[uA].length?(this[uA].push(e),this[Cx]=!0,!1):(this[KE]=!0,this[Ix](e),!0)}[Ix](e){Qa.write(this[qn],e,0,e.length,this[Od],(r,o)=>this[VE](r,o))}[VE](e,r){e?this[zE](e):(this[Od]!==null&&(this[Od]+=r),this[uA].length?this[I3]():(this[KE]=!1,this[Y1]&&!this[nAe]?(this[nAe]=!0,this[Yc](),this.emit("finish")):this[Cx]&&(this[Cx]=!1,this.emit("drain"))))}[I3](){if(this[uA].length===0)this[Y1]&&this[VE](null,0);else if(this[uA].length===1)this[Ix](this[uA].pop());else{let e=this[uA];this[uA]=[],v3(this[qn],e,this[Od],(r,o)=>this[VE](r,o))}}[Yc](){if(this[ZE]&&typeof this[qn]=="number"){let e=this[qn];this[qn]=null,Qa.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},b3=class extends Sx{[wh](){let e;if(this[Bx]&&this[Ch]==="r+")try{e=Qa.openSync(this[Gf],this[Ch],this[vx])}catch(r){if(r.code==="ENOENT")return this[Ch]="w",this[wh]();throw r}else e=Qa.openSync(this[Gf],this[Ch],this[vx]);this[$E](null,e)}[Yc](){if(this[ZE]&&typeof this[qn]=="number"){let e=this[qn];this[qn]=null,Qa.closeSync(e),this.emit("close")}}[Ix](e){let r=!0;try{this[VE](null,Qa.writeSync(this[qn],e,0,e.length,this[Od])),r=!1}finally{if(r)try{this[Yc]()}catch{}}}};W1.ReadStream=Dx;W1.ReadStreamSync=P3;W1.WriteStream=Sx;W1.WriteStreamSync=b3});var Rx=_((lUt,fAe)=>{"use strict";var wlt=sx(),Ilt=qE(),Blt=ve("events"),vlt=IS(),Dlt=1024*1024,Slt=rx(),oAe=ix(),Plt=qU(),x3=Buffer.from([31,139]),Xl=Symbol("state"),Md=Symbol("writeEntry"),qf=Symbol("readEntry"),k3=Symbol("nextEntry"),aAe=Symbol("processEntry"),Zl=Symbol("extendedHeader"),K1=Symbol("globalExtendedHeader"),Ih=Symbol("meta"),lAe=Symbol("emitMeta"),fi=Symbol("buffer"),Yf=Symbol("queue"),Ud=Symbol("ended"),cAe=Symbol("emittedEnd"),_d=Symbol("emit"),Fa=Symbol("unzip"),Px=Symbol("consumeChunk"),bx=Symbol("consumeChunkSub"),Q3=Symbol("consumeBody"),uAe=Symbol("consumeMeta"),AAe=Symbol("consumeHeader"),xx=Symbol("consuming"),F3=Symbol("bufferConcat"),R3=Symbol("maybeEnd"),V1=Symbol("writing"),Bh=Symbol("aborted"),kx=Symbol("onDone"),Hd=Symbol("sawValidEntry"),Qx=Symbol("sawNullBlock"),Fx=Symbol("sawEOF"),blt=t=>!0;fAe.exports=wlt(class extends Blt{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Hd]=null,this.on(kx,r=>{(this[Xl]==="begin"||this[Hd]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(kx,e.ondone):this.on(kx,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||Dlt,this.filter=typeof e.filter=="function"?e.filter:blt,this.writable=!0,this.readable=!1,this[Yf]=new vlt,this[fi]=null,this[qf]=null,this[Md]=null,this[Xl]="begin",this[Ih]="",this[Zl]=null,this[K1]=null,this[Ud]=!1,this[Fa]=null,this[Bh]=!1,this[Qx]=!1,this[Fx]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[AAe](e,r){this[Hd]===null&&(this[Hd]=!1);let o;try{o=new Ilt(e,r,this[Zl],this[K1])}catch(a){return this.warn("TAR_ENTRY_INVALID",a)}if(o.nullBlock)this[Qx]?(this[Fx]=!0,this[Xl]==="begin"&&(this[Xl]="header"),this[_d]("eof")):(this[Qx]=!0,this[_d]("nullBlock"));else if(this[Qx]=!1,!o.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:o});else if(!o.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:o});else{let a=o.type;if(/^(Symbolic)?Link$/.test(a)&&!o.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:o});else if(!/^(Symbolic)?Link$/.test(a)&&o.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:o});else{let n=this[Md]=new Slt(o,this[Zl],this[K1]);if(!this[Hd])if(n.remain){let u=()=>{n.invalid||(this[Hd]=!0)};n.on("end",u)}else this[Hd]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[_d]("ignoredEntry",n),this[Xl]="ignore",n.resume()):n.size>0&&(this[Ih]="",n.on("data",u=>this[Ih]+=u),this[Xl]="meta"):(this[Zl]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[_d]("ignoredEntry",n),this[Xl]=n.remain?"ignore":"header",n.resume()):(n.remain?this[Xl]="body":(this[Xl]="header",n.end()),this[qf]?this[Yf].push(n):(this[Yf].push(n),this[k3]())))}}}[aAe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[qf]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",o=>this[k3]()),r=!1)):(this[qf]=null,r=!1),r}[k3](){do;while(this[aAe](this[Yf].shift()));if(!this[Yf].length){let e=this[qf];!e||e.flowing||e.size===e.remain?this[V1]||this.emit("drain"):e.once("drain",o=>this.emit("drain"))}}[Q3](e,r){let o=this[Md],a=o.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return o.write(n),o.blockRemain||(this[Xl]="header",this[Md]=null,o.end()),n.length}[uAe](e,r){let o=this[Md],a=this[Q3](e,r);return this[Md]||this[lAe](o),a}[_d](e,r,o){!this[Yf].length&&!this[qf]?this.emit(e,r,o):this[Yf].push([e,r,o])}[lAe](e){switch(this[_d]("meta",this[Ih]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[Zl]=oAe.parse(this[Ih],this[Zl],!1);break;case"GlobalExtendedHeader":this[K1]=oAe.parse(this[Ih],this[K1],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[Zl]=this[Zl]||Object.create(null),this[Zl].path=this[Ih].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[Zl]=this[Zl]||Object.create(null),this[Zl].linkpath=this[Ih].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Bh]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[Bh])return;if(this[Fa]===null&&e){if(this[fi]&&(e=Buffer.concat([this[fi],e]),this[fi]=null),e.lengththis[Px](n)),this[Fa].on("error",n=>this.abort(n)),this[Fa].on("end",n=>{this[Ud]=!0,this[Px]()}),this[V1]=!0;let a=this[Fa][o?"end":"write"](e);return this[V1]=!1,a}}this[V1]=!0,this[Fa]?this[Fa].write(e):this[Px](e),this[V1]=!1;let r=this[Yf].length?!1:this[qf]?this[qf].flowing:!0;return!r&&!this[Yf].length&&this[qf].once("drain",o=>this.emit("drain")),r}[F3](e){e&&!this[Bh]&&(this[fi]=this[fi]?Buffer.concat([this[fi],e]):e)}[R3](){if(this[Ud]&&!this[cAe]&&!this[Bh]&&!this[xx]){this[cAe]=!0;let e=this[Md];if(e&&e.blockRemain){let r=this[fi]?this[fi].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[fi]&&e.write(this[fi]),e.end()}this[_d](kx)}}[Px](e){if(this[xx])this[F3](e);else if(!e&&!this[fi])this[R3]();else{if(this[xx]=!0,this[fi]){this[F3](e);let r=this[fi];this[fi]=null,this[bx](r)}else this[bx](e);for(;this[fi]&&this[fi].length>=512&&!this[Bh]&&!this[Fx];){let r=this[fi];this[fi]=null,this[bx](r)}this[xx]=!1}(!this[fi]||this[Ud])&&this[R3]()}[bx](e){let r=0,o=e.length;for(;r+512<=o&&!this[Bh]&&!this[Fx];)switch(this[Xl]){case"begin":case"header":this[AAe](e,r),r+=512;break;case"ignore":case"body":r+=this[Q3](e,r);break;case"meta":r+=this[uAe](e,r);break;default:throw new Error("invalid state: "+this[Xl])}r{"use strict";var xlt=OE(),hAe=Rx(),tC=ve("fs"),klt=eC(),pAe=ve("path"),T3=YE();dAe.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 o=xlt(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&Flt(o,e),o.noResume||Qlt(o),o.file&&o.sync?Rlt(o):o.file?Tlt(o,r):gAe(o)};var Qlt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},Flt=(t,e)=>{let r=new Map(e.map(n=>[T3(n),!0])),o=t.filter,a=(n,u)=>{let A=u||pAe.parse(n).root||".",p=n===A?!1:r.has(n)?r.get(n):a(pAe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(T3(n)):n=>a(T3(n))},Rlt=t=>{let e=gAe(t),r=t.file,o=!0,a;try{let n=tC.statSync(r),u=t.maxReadSize||16*1024*1024;if(n.size{let r=new hAe(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on("error",A),r.on("end",u),tC.stat(a,(p,h)=>{if(p)A(p);else{let E=new klt.ReadStream(a,{readSize:o,size:h.size});E.on("error",A),E.pipe(r)}})});return e?n.then(e,e):n},gAe=t=>new hAe(t)});var IAe=_((uUt,wAe)=>{"use strict";var Nlt=OE(),Nx=Ex(),mAe=eC(),yAe=Tx(),EAe=ve("path");wAe.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 o=Nlt(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return o.file&&o.sync?Llt(o,e):o.file?Olt(o,e,r):o.sync?Mlt(o,e):Ult(o,e)};var Llt=(t,e)=>{let r=new Nx.Sync(t),o=new mAe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(o),CAe(r,e)},Olt=(t,e,r)=>{let o=new Nx(t),a=new mAe.WriteStream(t.file,{mode:t.mode||438});o.pipe(a);let n=new Promise((u,A)=>{a.on("error",A),a.on("close",u),o.on("error",A)});return N3(o,e),r?n.then(r,r):n},CAe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?yAe({file:EAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},N3=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return yAe({file:EAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>N3(t,e));t.add(r)}t.end()},Mlt=(t,e)=>{let r=new Nx.Sync(t);return CAe(r,e),r},Ult=(t,e)=>{let r=new Nx(t);return N3(r,e),r}});var L3=_((AUt,xAe)=>{"use strict";var _lt=OE(),BAe=Ex(),Al=ve("fs"),vAe=eC(),DAe=Tx(),SAe=ve("path"),PAe=qE();xAe.exports=(t,e,r)=>{let o=_lt(t);if(!o.file)throw new TypeError("file is required");if(o.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),o.sync?Hlt(o,e):Glt(o,e,r)};var Hlt=(t,e)=>{let r=new BAe.Sync(t),o=!0,a,n;try{try{a=Al.openSync(t.file,"r+")}catch(p){if(p.code==="ENOENT")a=Al.openSync(t.file,"w+");else throw p}let u=Al.fstatSync(a),A=Buffer.alloc(512);e:for(n=0;nu.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}o=!1,jlt(t,r,n,a,e)}finally{if(o)try{Al.closeSync(a)}catch{}}},jlt=(t,e,r,o,a)=>{let n=new vAe.WriteStreamSync(t.file,{fd:o,start:r});e.pipe(n),qlt(e,a)},Glt=(t,e,r)=>{e=Array.from(e);let o=new BAe(t),a=(u,A,p)=>{let h=(C,R)=>{C?Al.close(u,L=>p(C)):p(null,R)},E=0;if(A===0)return h(null,0);let I=0,v=Buffer.alloc(512),x=(C,R)=>{if(C)return h(C);if(I+=R,I<512&&R)return Al.read(u,v,I,v.length-I,E+I,x);if(E===0&&v[0]===31&&v[1]===139)return h(new Error("cannot append to compressed archives"));if(I<512)return h(null,E);let L=new PAe(v);if(!L.cksumValid)return h(null,E);let U=512*Math.ceil(L.size/512);if(E+U+512>A||(E+=U+512,E>=A))return h(null,E);t.mtimeCache&&t.mtimeCache.set(L.path,L.mtime),I=0,Al.read(u,v,0,512,E,x)};Al.read(u,v,0,512,E,x)},n=new Promise((u,A)=>{o.on("error",A);let p="r+",h=(E,I)=>{if(E&&E.code==="ENOENT"&&p==="r+")return p="w+",Al.open(t.file,p,h);if(E)return A(E);Al.fstat(I,(v,x)=>{if(v)return Al.close(I,()=>A(v));a(I,x.size,(C,R)=>{if(C)return A(C);let L=new vAe.WriteStream(t.file,{fd:I,start:R});o.pipe(L),L.on("error",A),L.on("close",u),bAe(o,e)})})};Al.open(t.file,p,h)});return r?n.then(r,r):n},qlt=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?DAe({file:SAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},bAe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return DAe({file:SAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>bAe(t,e));t.add(r)}t.end()}});var QAe=_((fUt,kAe)=>{"use strict";var Ylt=OE(),Wlt=L3();kAe.exports=(t,e,r)=>{let o=Ylt(t);if(!o.file)throw new TypeError("file is required");if(o.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),Klt(o),Wlt(o,e,r)};var Klt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,o)=>e(r,o)&&!(t.mtimeCache.get(r)>o.mtime):(r,o)=>!(t.mtimeCache.get(r)>o.mtime)}});var TAe=_((pUt,RAe)=>{var{promisify:FAe}=ve("util"),vh=ve("fs"),Vlt=t=>{if(!t)t={mode:511,fs:vh};else if(typeof t=="object")t={mode:511,fs:vh,...t};else if(typeof t=="number")t={mode:t,fs:vh};else if(typeof t=="string")t={mode:parseInt(t,8),fs:vh};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||vh.mkdir,t.mkdirAsync=FAe(t.mkdir),t.stat=t.stat||t.fs.stat||vh.stat,t.statAsync=FAe(t.stat),t.statSync=t.statSync||t.fs.statSync||vh.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||vh.mkdirSync,t};RAe.exports=Vlt});var LAe=_((hUt,NAe)=>{var Jlt=process.platform,{resolve:zlt,parse:Xlt}=ve("path"),Zlt=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=zlt(t),Jlt==="win32"){let e=/[*|"<>?:]/,{root:r}=Xlt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};NAe.exports=Zlt});var HAe=_((gUt,_Ae)=>{var{dirname:OAe}=ve("path"),MAe=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(o=>o.isDirectory()?r:void 0,o=>o.code==="ENOENT"?MAe(t,OAe(e),e):void 0),UAe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(o){return o.code==="ENOENT"?UAe(t,OAe(e),e):void 0}};_Ae.exports={findMade:MAe,findMadeSync:UAe}});var U3=_((dUt,GAe)=>{var{dirname:jAe}=ve("path"),O3=(t,e,r)=>{e.recursive=!1;let o=jAe(t);return o===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 O3(o,e).then(n=>O3(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})})},M3=(t,e,r)=>{let o=jAe(t);if(e.recursive=!1,o===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 M3(t,e,M3(o,e,r));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};GAe.exports={mkdirpManual:O3,mkdirpManualSync:M3}});var WAe=_((mUt,YAe)=>{var{dirname:qAe}=ve("path"),{findMade:$lt,findMadeSync:ect}=HAe(),{mkdirpManual:tct,mkdirpManualSync:rct}=U3(),nct=(t,e)=>(e.recursive=!0,qAe(t)===t?e.mkdirAsync(t,e):$lt(e,t).then(o=>e.mkdirAsync(t,e).then(()=>o).catch(a=>{if(a.code==="ENOENT")return tct(t,e);throw a}))),ict=(t,e)=>{if(e.recursive=!0,qAe(t)===t)return e.mkdirSync(t,e);let o=ect(e,t);try{return e.mkdirSync(t,e),o}catch(a){if(a.code==="ENOENT")return rct(t,e);throw a}};YAe.exports={mkdirpNative:nct,mkdirpNativeSync:ict}});var zAe=_((yUt,JAe)=>{var KAe=ve("fs"),sct=process.version,_3=sct.replace(/^v/,"").split("."),VAe=+_3[0]>10||+_3[0]==10&&+_3[1]>=12,oct=VAe?t=>t.mkdir===KAe.mkdir:()=>!1,act=VAe?t=>t.mkdirSync===KAe.mkdirSync:()=>!1;JAe.exports={useNative:oct,useNativeSync:act}});var rfe=_((EUt,tfe)=>{var rC=TAe(),nC=LAe(),{mkdirpNative:XAe,mkdirpNativeSync:ZAe}=WAe(),{mkdirpManual:$Ae,mkdirpManualSync:efe}=U3(),{useNative:lct,useNativeSync:cct}=zAe(),iC=(t,e)=>(t=nC(t),e=rC(e),lct(e)?XAe(t,e):$Ae(t,e)),uct=(t,e)=>(t=nC(t),e=rC(e),cct(e)?ZAe(t,e):efe(t,e));iC.sync=uct;iC.native=(t,e)=>XAe(nC(t),rC(e));iC.manual=(t,e)=>$Ae(nC(t),rC(e));iC.nativeSync=(t,e)=>ZAe(nC(t),rC(e));iC.manualSync=(t,e)=>efe(nC(t),rC(e));tfe.exports=iC});var cfe=_((CUt,lfe)=>{"use strict";var $l=ve("fs"),jd=ve("path"),Act=$l.lchown?"lchown":"chown",fct=$l.lchownSync?"lchownSync":"chownSync",ife=$l.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),nfe=(t,e,r)=>{try{return $l[fct](t,e,r)}catch(o){if(o.code!=="ENOENT")throw o}},pct=(t,e,r)=>{try{return $l.chownSync(t,e,r)}catch(o){if(o.code!=="ENOENT")throw o}},hct=ife?(t,e,r,o)=>a=>{!a||a.code!=="EISDIR"?o(a):$l.chown(t,e,r,o)}:(t,e,r,o)=>o,H3=ife?(t,e,r)=>{try{return nfe(t,e,r)}catch(o){if(o.code!=="EISDIR")throw o;pct(t,e,r)}}:(t,e,r)=>nfe(t,e,r),gct=process.version,sfe=(t,e,r)=>$l.readdir(t,e,r),dct=(t,e)=>$l.readdirSync(t,e);/^v4\./.test(gct)&&(sfe=(t,e,r)=>$l.readdir(t,r));var Lx=(t,e,r,o)=>{$l[Act](t,e,r,hct(t,e,r,a=>{o(a&&a.code!=="ENOENT"?a:null)}))},ofe=(t,e,r,o,a)=>{if(typeof e=="string")return $l.lstat(jd.resolve(t,e),(n,u)=>{if(n)return a(n.code!=="ENOENT"?n:null);u.name=e,ofe(t,u,r,o,a)});if(e.isDirectory())j3(jd.resolve(t,e.name),r,o,n=>{if(n)return a(n);let u=jd.resolve(t,e.name);Lx(u,r,o,a)});else{let n=jd.resolve(t,e.name);Lx(n,r,o,a)}},j3=(t,e,r,o)=>{sfe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return o();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return o(a)}if(a||!n.length)return Lx(t,e,r,o);let u=n.length,A=null,p=h=>{if(!A){if(h)return o(A=h);if(--u===0)return Lx(t,e,r,o)}};n.forEach(h=>ofe(t,h,e,r,p))})},mct=(t,e,r,o)=>{if(typeof e=="string")try{let a=$l.lstatSync(jd.resolve(t,e));a.name=e,e=a}catch(a){if(a.code==="ENOENT")return;throw a}e.isDirectory()&&afe(jd.resolve(t,e.name),r,o),H3(jd.resolve(t,e.name),r,o)},afe=(t,e,r)=>{let o;try{o=dct(t,{withFileTypes:!0})}catch(a){if(a.code==="ENOENT")return;if(a.code==="ENOTDIR"||a.code==="ENOTSUP")return H3(t,e,r);throw a}return o&&o.length&&o.forEach(a=>mct(t,a,e,r)),H3(t,e,r)};lfe.exports=j3;j3.sync=afe});var pfe=_((wUt,G3)=>{"use strict";var ufe=rfe(),ec=ve("fs"),Ox=ve("path"),Afe=cfe(),Wc=jE(),Mx=class extends Error{constructor(e,r){super("Cannot extract through symbolic link"),this.path=r,this.symlink=e}get name(){return"SylinkError"}},Ux=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'"),this.path=e,this.code=r}get name(){return"CwdError"}},_x=(t,e)=>t.get(Wc(e)),J1=(t,e,r)=>t.set(Wc(e),r),yct=(t,e)=>{ec.stat(t,(r,o)=>{(r||!o.isDirectory())&&(r=new Ux(t,r&&r.code||"ENOTDIR")),e(r)})};G3.exports=(t,e,r)=>{t=Wc(t);let o=e.umask,a=e.mode|448,n=(a&o)!==0,u=e.uid,A=e.gid,p=typeof u=="number"&&typeof A=="number"&&(u!==e.processUid||A!==e.processGid),h=e.preserve,E=e.unlink,I=e.cache,v=Wc(e.cwd),x=(L,U)=>{L?r(L):(J1(I,t,!0),U&&p?Afe(U,u,A,J=>x(J)):n?ec.chmod(t,a,r):r())};if(I&&_x(I,t)===!0)return x();if(t===v)return yct(t,x);if(h)return ufe(t,{mode:a}).then(L=>x(null,L),x);let R=Wc(Ox.relative(v,t)).split("/");Hx(v,R,a,I,E,v,null,x)};var Hx=(t,e,r,o,a,n,u,A)=>{if(!e.length)return A(null,u);let p=e.shift(),h=Wc(Ox.resolve(t+"/"+p));if(_x(o,h))return Hx(h,e,r,o,a,n,u,A);ec.mkdir(h,r,ffe(h,e,r,o,a,n,u,A))},ffe=(t,e,r,o,a,n,u,A)=>p=>{p?ec.lstat(t,(h,E)=>{if(h)h.path=h.path&&Wc(h.path),A(h);else if(E.isDirectory())Hx(t,e,r,o,a,n,u,A);else if(a)ec.unlink(t,I=>{if(I)return A(I);ec.mkdir(t,r,ffe(t,e,r,o,a,n,u,A))});else{if(E.isSymbolicLink())return A(new Mx(t,t+"/"+e.join("/")));A(p)}}):(u=u||t,Hx(t,e,r,o,a,n,u,A))},Ect=t=>{let e=!1,r="ENOTDIR";try{e=ec.statSync(t).isDirectory()}catch(o){r=o.code}finally{if(!e)throw new Ux(t,r)}};G3.exports.sync=(t,e)=>{t=Wc(t);let r=e.umask,o=e.mode|448,a=(o&r)!==0,n=e.uid,u=e.gid,A=typeof n=="number"&&typeof u=="number"&&(n!==e.processUid||u!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,I=Wc(e.cwd),v=L=>{J1(E,t,!0),L&&A&&Afe.sync(L,n,u),a&&ec.chmodSync(t,o)};if(E&&_x(E,t)===!0)return v();if(t===I)return Ect(I),v();if(p)return v(ufe.sync(t,o));let C=Wc(Ox.relative(I,t)).split("/"),R=null;for(let L=C.shift(),U=I;L&&(U+="/"+L);L=C.shift())if(U=Wc(Ox.resolve(U)),!_x(E,U))try{ec.mkdirSync(U,o),R=R||U,J1(E,U,!0)}catch{let te=ec.lstatSync(U);if(te.isDirectory()){J1(E,U,!0);continue}else if(h){ec.unlinkSync(U),ec.mkdirSync(U,o),R=R||U,J1(E,U,!0);continue}else if(te.isSymbolicLink())return new Mx(U,U+"/"+C.join("/"))}return v(R)}});var Y3=_((IUt,hfe)=>{var q3=Object.create(null),{hasOwnProperty:Cct}=Object.prototype;hfe.exports=t=>(Cct.call(q3,t)||(q3[t]=t.normalize("NFKD")),q3[t])});var yfe=_((BUt,mfe)=>{var gfe=ve("assert"),wct=Y3(),Ict=YE(),{join:dfe}=ve("path"),Bct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,vct=Bct==="win32";mfe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split("/").slice(0,-1).reduce((I,v)=>(I.length&&(v=dfe(I[I.length-1],v)),I.push(v||"/"),I),[]),o=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(I=>t.get(I)),dirs:[...E.dirs].map(I=>t.get(I))}},n=h=>{let{paths:E,dirs:I}=a(h);return E.every(v=>v[0]===h)&&I.every(v=>v[0]instanceof Set&&v[0].has(h))},u=h=>o.has(h)||!n(h)?!1:(o.add(h),h(()=>A(h)),!0),A=h=>{if(!o.has(h))return!1;let{paths:E,dirs:I}=e.get(h),v=new Set;return E.forEach(x=>{let C=t.get(x);gfe.equal(C[0],h),C.length===1?t.delete(x):(C.shift(),typeof C[0]=="function"?v.add(C[0]):C[0].forEach(R=>v.add(R)))}),I.forEach(x=>{let C=t.get(x);gfe(C[0]instanceof Set),C[0].size===1&&C.length===1?t.delete(x):C[0].size===1?(C.shift(),v.add(C[0])):C[0].delete(h)}),o.delete(h),v.forEach(x=>u(x)),!0};return{check:n,reserve:(h,E)=>{h=vct?["win32 parallelization disabled"]:h.map(v=>wct(Ict(dfe(v))).toLowerCase());let I=new Set(h.map(v=>r(v)).reduce((v,x)=>v.concat(x)));return e.set(E,{dirs:I,paths:h}),h.forEach(v=>{let x=t.get(v);x?x.push(E):t.set(v,[E])}),I.forEach(v=>{let x=t.get(v);x?x[x.length-1]instanceof Set?x[x.length-1].add(E):x.push(new Set([E])):t.set(v,[new Set([E])])}),u(E)}}}});var wfe=_((vUt,Cfe)=>{var Dct=process.platform,Sct=Dct==="win32",Pct=global.__FAKE_TESTING_FS__||ve("fs"),{O_CREAT:bct,O_TRUNC:xct,O_WRONLY:kct,UV_FS_O_FILEMAP:Efe=0}=Pct.constants,Qct=Sct&&!!Efe,Fct=512*1024,Rct=Efe|xct|bct|kct;Cfe.exports=Qct?t=>t"w"});var e_=_((DUt,Nfe)=>{"use strict";var Tct=ve("assert"),Nct=Rx(),vn=ve("fs"),Lct=eC(),Wf=ve("path"),Ffe=pfe(),Ife=e3(),Oct=yfe(),Mct=t3(),fl=jE(),Uct=YE(),_ct=Y3(),Bfe=Symbol("onEntry"),V3=Symbol("checkFs"),vfe=Symbol("checkFs2"),qx=Symbol("pruneCache"),J3=Symbol("isReusable"),tc=Symbol("makeFs"),z3=Symbol("file"),X3=Symbol("directory"),Yx=Symbol("link"),Dfe=Symbol("symlink"),Sfe=Symbol("hardlink"),Pfe=Symbol("unsupported"),bfe=Symbol("checkPath"),Dh=Symbol("mkdir"),To=Symbol("onError"),jx=Symbol("pending"),xfe=Symbol("pend"),sC=Symbol("unpend"),W3=Symbol("ended"),K3=Symbol("maybeClose"),Z3=Symbol("skip"),z1=Symbol("doChown"),X1=Symbol("uid"),Z1=Symbol("gid"),$1=Symbol("checkedCwd"),Rfe=ve("crypto"),Tfe=wfe(),Hct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,e2=Hct==="win32",jct=(t,e)=>{if(!e2)return vn.unlink(t,e);let r=t+".DELETE."+Rfe.randomBytes(16).toString("hex");vn.rename(t,r,o=>{if(o)return e(o);vn.unlink(r,e)})},Gct=t=>{if(!e2)return vn.unlinkSync(t);let e=t+".DELETE."+Rfe.randomBytes(16).toString("hex");vn.renameSync(t,e),vn.unlinkSync(e)},kfe=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Qfe=t=>_ct(Uct(fl(t))).toLowerCase(),qct=(t,e)=>{e=Qfe(e);for(let r of t.keys()){let o=Qfe(r);(o===e||o.indexOf(e+"/")===0)&&t.delete(r)}},Yct=t=>{for(let e of t.keys())t.delete(e)},t2=class extends Nct{constructor(e){if(e||(e={}),e.ondone=r=>{this[W3]=!0,this[K3]()},super(e),this[$1]=!1,this.reservations=Oct(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[jx]=0,this[W3]=!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||e2,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=fl(Wf.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[Bfe](r))}warn(e,r,o={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(o.recoverable=!1),super.warn(e,r,o)}[K3](){this[W3]&&this[jx]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[bfe](e){if(this.strip){let r=fl(e.path).split("/");if(r.length=this.strip)e.linkpath=o.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let r=fl(e.path),o=r.split("/");if(o.includes("..")||e2&&/^[a-z]:\.\.$/i.test(o[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;let[a,n]=Mct(r);a&&(e.path=n,this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Wf.isAbsolute(e.path)?e.absolute=fl(Wf.resolve(e.path)):e.absolute=fl(Wf.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:fl(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}=Wf.win32.parse(e.absolute);e.absolute=r+Ife.encode(e.absolute.substr(r.length));let{root:o}=Wf.win32.parse(e.path);e.path=o+Ife.encode(e.path.substr(o.length))}return!0}[Bfe](e){if(!this[bfe](e))return e.resume();switch(Tct.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[V3](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Pfe](e)}}[To](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[sC](),r.resume())}[Dh](e,r,o){Ffe(fl(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},o)}[z1](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}[X1](e){return kfe(this.uid,e.uid,this.processUid)}[Z1](e){return kfe(this.gid,e.gid,this.processGid)}[z3](e,r){let o=e.mode&4095||this.fmode,a=new Lct.WriteStream(e.absolute,{flags:Tfe(e.size),mode:o,autoClose:!1});a.on("error",p=>{a.fd&&vn.close(a.fd,()=>{}),a.write=()=>!0,this[To](p,e),r()});let n=1,u=p=>{if(p){a.fd&&vn.close(a.fd,()=>{}),this[To](p,e),r();return}--n===0&&vn.close(a.fd,h=>{h?this[To](h,e):this[sC](),r()})};a.on("finish",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let I=e.atime||new Date,v=e.mtime;vn.futimes(E,I,v,x=>x?vn.utimes(h,I,v,C=>u(C&&x)):u())}if(this[z1](e)){n++;let I=this[X1](e),v=this[Z1](e);vn.fchown(E,I,v,x=>x?vn.chown(h,I,v,C=>u(C&&x)):u())}u()});let A=this.transform&&this.transform(e)||e;A!==e&&(A.on("error",p=>{this[To](p,e),r()}),e.pipe(A)),A.pipe(a)}[X3](e,r){let o=e.mode&4095||this.dmode;this[Dh](e.absolute,o,a=>{if(a){this[To](a,e),r();return}let n=1,u=A=>{--n===0&&(r(),this[sC](),e.resume())};e.mtime&&!this.noMtime&&(n++,vn.utimes(e.absolute,e.atime||new Date,e.mtime,u)),this[z1](e)&&(n++,vn.chown(e.absolute,this[X1](e),this[Z1](e),u)),u()})}[Pfe](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Dfe](e,r){this[Yx](e,e.linkpath,"symlink",r)}[Sfe](e,r){let o=fl(Wf.resolve(this.cwd,e.linkpath));this[Yx](e,o,"link",r)}[xfe](){this[jx]++}[sC](){this[jx]--,this[K3]()}[Z3](e){this[sC](),e.resume()}[J3](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!e2}[V3](e){this[xfe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,o=>this[vfe](e,o))}[qx](e){e.type==="SymbolicLink"?Yct(this.dirCache):e.type!=="Directory"&&qct(this.dirCache,e.absolute)}[vfe](e,r){this[qx](e);let o=A=>{this[qx](e),r(A)},a=()=>{this[Dh](this.cwd,this.dmode,A=>{if(A){this[To](A,e),o();return}this[$1]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let A=fl(Wf.dirname(e.absolute));if(A!==this.cwd)return this[Dh](A,this.dmode,p=>{if(p){this[To](p,e),o();return}u()})}u()},u=()=>{vn.lstat(e.absolute,(A,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[Z3](e),o();return}if(A||this[J3](e,p))return this[tc](null,e,o);if(p.isDirectory()){if(e.type==="Directory"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=I=>this[tc](I,e,o);return h?vn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return vn.rmdir(e.absolute,h=>this[tc](h,e,o))}if(e.absolute===this.cwd)return this[tc](null,e,o);jct(e.absolute,h=>this[tc](h,e,o))})};this[$1]?n():a()}[tc](e,r,o){if(e){this[To](e,r),o();return}switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[z3](r,o);case"Link":return this[Sfe](r,o);case"SymbolicLink":return this[Dfe](r,o);case"Directory":case"GNUDumpDir":return this[X3](r,o)}}[Yx](e,r,o,a){vn[o](r,e.absolute,n=>{n?this[To](n,e):(this[sC](),e.resume()),a()})}},Gx=t=>{try{return[null,t()]}catch(e){return[e,null]}},$3=class extends t2{[tc](e,r){return super[tc](e,r,()=>{})}[V3](e){if(this[qx](e),!this[$1]){let n=this[Dh](this.cwd,this.dmode);if(n)return this[To](n,e);this[$1]=!0}if(e.absolute!==this.cwd){let n=fl(Wf.dirname(e.absolute));if(n!==this.cwd){let u=this[Dh](n,this.dmode);if(u)return this[To](u,e)}}let[r,o]=Gx(()=>vn.lstatSync(e.absolute));if(o&&(this.keep||this.newer&&o.mtime>e.mtime))return this[Z3](e);if(r||this[J3](e,o))return this[tc](null,e);if(o.isDirectory()){if(e.type==="Directory"){let u=!this.noChmod&&e.mode&&(o.mode&4095)!==e.mode,[A]=u?Gx(()=>{vn.chmodSync(e.absolute,e.mode)}):[];return this[tc](A,e)}let[n]=Gx(()=>vn.rmdirSync(e.absolute));this[tc](n,e)}let[a]=e.absolute===this.cwd?[]:Gx(()=>Gct(e.absolute));this[tc](a,e)}[z3](e,r){let o=e.mode&4095||this.fmode,a=A=>{let p;try{vn.closeSync(n)}catch(h){p=h}(A||p)&&this[To](A||p,e),r()},n;try{n=vn.openSync(e.absolute,Tfe(e.size),o)}catch(A){return a(A)}let u=this.transform&&this.transform(e)||e;u!==e&&(u.on("error",A=>this[To](A,e)),e.pipe(u)),u.on("data",A=>{try{vn.writeSync(n,A,0,A.length)}catch(p){a(p)}}),u.on("end",A=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{vn.futimesSync(n,h,E)}catch(I){try{vn.utimesSync(e.absolute,h,E)}catch{p=I}}}if(this[z1](e)){let h=this[X1](e),E=this[Z1](e);try{vn.fchownSync(n,h,E)}catch(I){try{vn.chownSync(e.absolute,h,E)}catch{p=p||I}}}a(p)})}[X3](e,r){let o=e.mode&4095||this.dmode,a=this[Dh](e.absolute,o);if(a){this[To](a,e),r();return}if(e.mtime&&!this.noMtime)try{vn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[z1](e))try{vn.chownSync(e.absolute,this[X1](e),this[Z1](e))}catch{}r(),e.resume()}[Dh](e,r){try{return Ffe.sync(fl(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(o){return o}}[Yx](e,r,o,a){try{vn[o+"Sync"](r,e.absolute),a(),e.resume()}catch(n){return this[To](n,e)}}};t2.Sync=$3;Nfe.exports=t2});var _fe=_((SUt,Ufe)=>{"use strict";var Wct=OE(),Wx=e_(),Ofe=ve("fs"),Mfe=eC(),Lfe=ve("path"),t_=YE();Ufe.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 o=Wct(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&Kct(o,e),o.file&&o.sync?Vct(o):o.file?Jct(o,r):o.sync?zct(o):Xct(o)};var Kct=(t,e)=>{let r=new Map(e.map(n=>[t_(n),!0])),o=t.filter,a=(n,u)=>{let A=u||Lfe.parse(n).root||".",p=n===A?!1:r.has(n)?r.get(n):a(Lfe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(t_(n)):n=>a(t_(n))},Vct=t=>{let e=new Wx.Sync(t),r=t.file,o=Ofe.statSync(r),a=t.maxReadSize||16*1024*1024;new Mfe.ReadStreamSync(r,{readSize:a,size:o.size}).pipe(e)},Jct=(t,e)=>{let r=new Wx(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on("error",A),r.on("close",u),Ofe.stat(a,(p,h)=>{if(p)A(p);else{let E=new Mfe.ReadStream(a,{readSize:o,size:h.size});E.on("error",A),E.pipe(r)}})});return e?n.then(e,e):n},zct=t=>new Wx.Sync(t),Xct=t=>new Wx(t)});var Hfe=_(us=>{"use strict";us.c=us.create=IAe();us.r=us.replace=L3();us.t=us.list=Tx();us.u=us.update=QAe();us.x=us.extract=_fe();us.Pack=Ex();us.Unpack=e_();us.Parse=Rx();us.ReadEntry=rx();us.WriteEntry=A3();us.Header=qE();us.Pax=ix();us.types=KU()});var r_,jfe,Sh,r2,n2,Gfe=Et(()=>{r_=$e(id()),jfe=ve("worker_threads"),Sh=Symbol("kTaskInfo"),r2=class{constructor(e,r){this.fn=e;this.limit=(0,r_.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},n2=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,r_.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let o=this.workers.pop();o?o.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new jfe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",r=>{if(!e[Sh])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[Sh].resolve(r),e[Sh]=null,e.unref(),this.workers.push(e)}),e.on("error",r=>{e[Sh]?.reject(r),e[Sh]=null}),e.on("exit",r=>{r!==0&&e[Sh]?.reject(new Error(`Worker exited with code ${r}`)),e[Sh]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((o,a)=>{r[Sh]={resolve:o,reject:a},r.postMessage(e)})})}}});var Yfe=_((kUt,qfe)=>{var n_;qfe.exports.getContent=()=>(typeof n_>"u"&&(n_=ve("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),n_)});var Xi={};Vt(Xi,{convertToZip:()=>tut,convertToZipWorker:()=>o_,extractArchiveTo:()=>zfe,getDefaultTaskPool:()=>Vfe,getTaskPoolForConfiguration:()=>Jfe,makeArchiveFromDirectory:()=>eut});function Zct(t,e){switch(t){case"async":return new r2(o_,{poolSize:e});case"workers":return new n2((0,s_.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function Vfe(){return typeof i_>"u"&&(i_=Zct("workers",Ji.availableParallelism())),i_}function Jfe(t){return typeof t>"u"?Vfe():ol($ct,t,()=>{let e=t.get("taskPoolMode"),r=t.get("taskPoolConcurrency");switch(e){case"async":return new r2(o_,{poolSize:r});case"workers":return new n2((0,s_.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function o_(t){let{tmpFile:e,tgz:r,compressionLevel:o,extractBufferOpts:a}=t,n=new zi(e,{create:!0,level:o,stats:Ea.makeDefaultStats()}),u=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await zfe(u,n,a),n.saveAndClose(),e}async function eut(t,{baseFs:e=new Tn,prefixPath:r=Bt.root,compressionLevel:o,inMemory:a=!1}={}){let n;if(a)n=new zi(null,{level:o});else{let A=await oe.mktempPromise(),p=V.join(A,"archive.zip");n=new zi(p,{create:!0,level:o})}let u=V.resolve(Bt.root,r);return await n.copyPromise(u,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function tut(t,e={}){let r=await oe.mktempPromise(),o=V.join(r,"archive.zip"),a=e.compressionLevel??e.configuration?.get("compressionLevel")??"mixed",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??Jfe(e.configuration)).run({tmpFile:o,tgz:t,compressionLevel:a,extractBufferOpts:n}),new zi(o,{level:e.compressionLevel})}async function*rut(t){let e=new Kfe.default.Parse,r=new Wfe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",o=>{r.write(o)}),e.on("error",o=>{r.destroy(o)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let o of r){let a=o;yield a,a.resume()}}async function zfe(t,e,{stripComponents:r=0,prefixPath:o=Bt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let u=n.path.split(/\//g);return!!(u.some(A=>A==="..")||u.length<=r)}for await(let n of rut(t)){if(a(n))continue;let u=V.normalize(ue.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(u.length<=r)continue;let A=u.slice(r).join("/"),p=V.join(o,A),h=420;switch((n.type==="Directory"||((n.mode??0)&73)!==0)&&(h|=73),n.type){case"Directory":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.writeFileSync(p,await Vy(n),{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break}}return e}var Wfe,Kfe,s_,i_,$ct,Xfe=Et(()=>{Ye();St();nA();Wfe=ve("stream"),Kfe=$e(Hfe());Gfe();jl();s_=$e(Yfe());$ct=new WeakMap});var $fe=_((a_,Zfe)=>{(function(t,e){typeof a_=="object"?Zfe.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(a_,function(){function t(a,n){var u=n?"\u2514":"\u251C";return a?u+="\u2500 ":u+="\u2500\u2500\u2510",u}function e(a,n){var u=[];for(var A in a)!a.hasOwnProperty(A)||n&&typeof a[A]=="function"||u.push(A);return u}function r(a,n,u,A,p,h,E){var I="",v=0,x,C,R=A.slice(0);if(R.push([n,u])&&A.length>0&&(A.forEach(function(U,J){J>0&&(I+=(U[1]?" ":"\u2502")+" "),!C&&U[0]===n&&(C=!0)}),I+=t(a,u)+a,p&&(typeof n!="object"||n instanceof Date)&&(I+=": "+n),C&&(I+=" (circular ref.)"),E(I)),!C&&typeof n=="object"){var L=e(n,h);L.forEach(function(U){x=++v===L.length,r(U,n[U],x,R,p,h,E)})}}var o={};return o.asLines=function(a,n,u,A){var p=typeof u!="function"?u:!1;r(".",a,!1,[],n,p,A||u)},o.asTree=function(a,n,u){var A="";return r(".",a,!1,[],n,u,function(p){A+=p+` +`}),A},o})});var $s={};Vt($s,{emitList:()=>nut,emitTree:()=>npe,treeNodeToJson:()=>rpe,treeNodeToTreeify:()=>tpe});function tpe(t,{configuration:e}){let r={},o=0,a=(n,u)=>{let A=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of A){if(!h)continue;let{label:E,value:I,children:v}=h,x=[];typeof E<"u"&&x.push(yd(e,E,2)),typeof I<"u"&&x.push(Mt(e,I[0],I[1])),x.length===0&&x.push(yd(e,`${p}`,2));let C=x.join(": ").trim(),R=`\0${o++}\0`,L=u[`${R}${C}`]={};typeof v<"u"&&a(v,L)}};if(typeof t.children>"u")throw new Error("The root node must only contain children");return a(t.children,r),r}function rpe(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 Ed(r.value[0],r.value[1])}let o=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,u]of o)u&&(a[iut(n)]=e(u));return typeof r.value>"u"?a:{value:Ed(r.value[0],r.value[1]),children:a}};return e(t)}function nut(t,{configuration:e,stdout:r,json:o}){let a=t.map(n=>({value:n}));npe({children:a},{configuration:e,stdout:r,json:o})}function npe(t,{configuration:e,stdout:r,json:o,separators:a=0}){if(o){let u=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let A of u)A&&r.write(`${JSON.stringify(rpe(A))} +`);return}let n=(0,epe.asTree)(tpe(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 u=0;u<2;++u)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 iut(t){return typeof t=="string"?t.replace(/^\0[0-9]+\0/,""):t}var epe,ipe=Et(()=>{epe=$e($fe());Gl()});function i2(t){let e=t.match(sut);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 spe,l_,c_,Kx,Lr,sut,u_=Et(()=>{Ye();St();St();nA();spe=ve("crypto"),l_=$e(ve("fs"));Yl();nh();jl();bo();c_=Jy(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),Kx=Jy(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Lr=class{constructor(e,{configuration:r,immutable:o=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,spe.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=o,this.check=a;let{cacheSpec:n,cacheKey:u}=Lr.getCacheKey(r);this.cacheSpec=n,this.cacheKey=u}static async find(e,{immutable:r,check:o}={}){let a=new Lr(e.get("cacheFolder"),{configuration:e,immutable:r,check:o});return await a.setup(),a}static getCacheKey(e){let r=e.get("compressionLevel"),o=r!=="mixed"?`c${r}`:"";return{cacheKey:[Kx,o].join(""),cacheSpec:o}}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`${lE(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=i2(r).hash.slice(0,10);return`${lE(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:o}=i2(e);if(r===null||r{let he=new zi,Be=V.join(Bt.root,nM(e));return he.mkdirSync(Be,{recursive:!0}),he.writeJsonSync(V.join(Be,dr.manifest),{name:fn(e),mocked:!0}),he},E=async(he,{isColdHit:Be,controlPath:we=null})=>{if(we===null&&u.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?i2(r).cacheKey:this.cacheKey,Ee=!u.skipIntegrityCheck||!r?`${g}/${await NP(he)}`:r;if(we!==null){let le=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await NP(we)}`:r;if(Ee!==le)throw new zt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}let Se=null;switch(r!==null&&Ee!==r&&(this.check?Se="throw":i2(r).cacheKey!==i2(Ee).cacheKey?Se="update":Se=this.configuration.get("checksumBehavior")),Se){case null:case"update":return{isValid:!0,hash:Ee};case"ignore":return{isValid:!0,hash:r};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new zt(18,"The remote archive doesn't match the expected checksum")}},I=async he=>{if(!n)throw new Error(`Cache check required but no loader configured for ${jr(this.configuration,e)}`);let Be=await n(),we=Be.getRealPath();Be.saveAndClose(),await oe.chmodPromise(we,420);let g=await E(he,{controlPath:we,isColdHit:!1});if(!g.isValid)throw new Error("Assertion failed: Expected a valid checksum");return g.hash},v=async()=>{if(A===null||!await oe.existsPromise(A)){let he=await n(),Be=he.getRealPath();return he.saveAndClose(),{source:"loader",path:Be}}return{source:"mirror",path:A}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${jr(this.configuration,e)}`);if(this.immutable)throw new zt(56,`Cache entry required but missing for ${jr(this.configuration,e)}`);let{path:he,source:Be}=await v(),{hash:we}=await E(he,{isColdHit:!0}),g=this.getLocatorPath(e,we),Ee=[];Be!=="mirror"&&A!==null&&Ee.push(async()=>{let le=`${A}${this.cacheId}`;await oe.copyFilePromise(he,le,l_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(le,420),await oe.renamePromise(le,A)}),(!u.mirrorWriteOnly||A===null)&&Ee.push(async()=>{let le=`${g}${this.cacheId}`;await oe.copyFilePromise(he,le,l_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(le,420),await oe.renamePromise(le,g)});let Se=u.mirrorWriteOnly?A??g:g;return await Promise.all(Ee.map(le=>le())),[!1,Se,we]},C=async()=>{let Be=(async()=>{let we=u.unstablePackages?.has(e.locatorHash),g=we||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,Ee=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Se=!!u.mockedPackages?.has(e.locatorHash)&&(!this.check||!Ee),le=Se||Ee,ne=le?o:a;if(ne&&ne(),le){let ee=null,Ie=g;if(!Se)if(this.check)ee=await I(Ie);else{let Fe=await E(Ie,{isColdHit:!1});if(Fe.isValid)ee=Fe.hash;else return x()}return[Se,Ie,ee]}else{if(this.immutable&&we)throw new zt(56,`Cache entry required but missing for ${jr(this.configuration,e)}; consider defining ${de.pretty(this.configuration,"supportedArchitectures",de.Type.CODE)} to cache packages for multiple systems`);return x()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let he;he=this.mutexes.get(e.locatorHash);)await he;let[R,L,U]=await C();R||this.markedFiles.add(L);let J,te=R?()=>h():()=>new zi(L,{baseFs:p,readOnly:!0}),ae=new iy(()=>EL(()=>J=te(),he=>`Failed to open the cache entry for ${jr(this.configuration,e)}: ${he}`),V),fe=new Uu(L,{baseFs:ae,pathUtils:V}),ce=()=>{J?.discardAndClose()},me=u.unstablePackages?.has(e.locatorHash)?null:U;return[fe,ce,me]}},sut=/^(?:(?(?[0-9]+)(?.*))\/)?(?.*)$/});var Vx,ope=Et(()=>{Vx=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(Vx||{})});var out,oC,A_=Et(()=>{St();Nl();Qf();bo();out=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,o)=>`${r}#commit=${o}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",o,a)=>`https://${r}github.com/${o}.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)=>_P({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oC=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let o=V.join(e.cwd,dr.lockfile);if(!oe.existsSync(o))return;let a=await oe.readFilePromise(o,"utf8"),n=Ki(a);if(Object.hasOwn(n,"__metadata"))return;let u=this.resolutions=new Map;for(let A of Object.keys(n)){let p=s1(A);if(!p){r.reportWarning(14,`Failed to parse the string "${A}" into a proper descriptor`);continue}let h=xa(p.range)?In(p,`npm:${p.range}`):p,{version:E,resolved:I}=n[A];if(!I)continue;let v;for(let[C,R]of out){let L=I.match(C);if(L){v=R(E,...L);break}}if(!v){r.reportWarning(14,`${Gn(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${I}")`);continue}let x=h;try{let C=Bd(h.range),R=s1(C.selector,!0);R&&(x=R)}catch{}u.set(h.descriptorHash,Qs(x,v))}}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,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){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=$O(a),u=o.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(u,r,o)}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var AA,ape=Et(()=>{Yl();O1();Gl();AA=class extends Xs{constructor({configuration:r,stdout:o,suggestInstall:a=!0}){super();this.errorCount=0;XI(this,{configuration:r}),this.configuration=r,this.stdout=o,this.suggestInstall=a}static async start(r,o){let a=new this(r);try{await o(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,o){return o()}async startSectionPromise(r,o){return await o()}startTimerSync(r,o,a){return(typeof o=="function"?o:a)()}async startTimerPromise(r,o,a){return await(typeof o=="function"?o:a)()}reportSeparator(){}reportInfo(r,o){}reportWarning(r,o){}reportError(r,o){this.errorCount+=1,this.stdout.write(`${Mt(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${o} +`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,o){}async finalize(){this.errorCount>0&&(this.stdout.write(` +`),this.stdout.write(`${Mt(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. +`),this.suggestInstall&&this.stdout.write(`${Mt(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 yU(r,{configuration:this.configuration,json:!1})}}});var aC,f_=Et(()=>{bo();aC=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(OP(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,o){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){let a=o.project.storedResolutions.get(e.descriptorHash);if(a){let u=o.project.originalPackages.get(a);if(u)return[u]}let n=o.project.originalPackages.get(OP(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.originalPackages.get(e.locatorHash);if(!o)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return o}}});function Kf(){}function aut(t,e,r,o,a){for(var n=0,u=e.length,A=0,p=0;nx.length?R:x}),h.value=t.join(E)}else h.value=t.join(r.slice(A,A+h.count));A+=h.count,h.added||(p+=h.count)}}var v=e[u-1];return u>1&&typeof v.value=="string"&&(v.added||v.removed)&&t.equals("",v.value)&&(e[u-2].value+=v.value,e.pop()),e}function lut(t){return{newPos:t.newPos,components:t.components.slice(0)}}function cut(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 upe(t,e,r){return r=cut(r,{ignoreWhitespace:!0}),m_.diff(t,e,r)}function uut(t,e,r){return y_.diff(t,e,r)}function Jx(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Jx=function(e){return typeof e}:Jx=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Jx(t)}function p_(t){return put(t)||hut(t)||gut(t)||dut()}function put(t){if(Array.isArray(t))return h_(t)}function hut(t){if(typeof Symbol<"u"&&Symbol.iterator in Object(t))return Array.from(t)}function gut(t,e){if(!!t){if(typeof t=="string")return h_(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 h_(t,e)}}function h_(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r"u"&&(u.context=4);var A=uut(r,o,u);if(!A)return;A.push({value:"",lines:[]});function p(U){return U.map(function(J){return" "+J})}for(var h=[],E=0,I=0,v=[],x=1,C=1,R=function(J){var te=A[J],ae=te.lines||te.value.replace(/\n$/,"").split(` +`);if(te.lines=ae,te.added||te.removed){var fe;if(!E){var ce=A[J-1];E=x,I=C,ce&&(v=u.context>0?p(ce.lines.slice(-u.context)):[],E-=v.length,I-=v.length)}(fe=v).push.apply(fe,p_(ae.map(function(le){return(te.added?"+":"-")+le}))),te.added?C+=ae.length:x+=ae.length}else{if(E)if(ae.length<=u.context*2&&J=A.length-2&&ae.length<=u.context){var g=/\n$/.test(r),Ee=/\n$/.test(o),Se=ae.length==0&&v.length>we.oldLines;!g&&Se&&r.length>0&&v.splice(we.oldLines,0,"\\ No newline at end of file"),(!g&&!Se||!Ee)&&v.push("\\ No newline at end of file")}h.push(we),E=0,I=0,v=[]}x+=ae.length,C+=ae.length}},L=0;L{Kf.prototype={diff:function(e,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=o.callback;typeof o=="function"&&(a=o,o={}),this.options=o;var n=this;function u(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var A=r.length,p=e.length,h=1,E=A+p;o.maxEditLength&&(E=Math.min(E,o.maxEditLength));var I=[{newPos:-1,components:[]}],v=this.extractCommon(I[0],r,e,0);if(I[0].newPos+1>=A&&v+1>=p)return u([{value:this.join(r),count:r.length}]);function x(){for(var R=-1*h;R<=h;R+=2){var L=void 0,U=I[R-1],J=I[R+1],te=(J?J.newPos:0)-R;U&&(I[R-1]=void 0);var ae=U&&U.newPos+1=A&&te+1>=p)return u(aut(n,L.components,r,e,n.useLongestToken));I[R]=L}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();x()||R()},0)})();else for(;h<=E;){var C=x();if(C)return C}},pushComponent:function(e,r,o){var a=e[e.length-1];a&&a.added===r&&a.removed===o?e[e.length-1]={count:a.count+1,added:r,removed:o}:e.push({count:1,added:r,removed:o})},extractCommon:function(e,r,o,a){for(var n=r.length,u=o.length,A=e.newPos,p=A-a,h=0;A+1"u"?r:u}:o;return typeof t=="string"?t:JSON.stringify(g_(t,null,null,a),a," ")};s2.equals=function(t,e){return Kf.prototype.equals.call(s2,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};d_=new Kf;d_.tokenize=function(t){return t.slice()};d_.join=d_.removeEmpty=function(t){return t}});var ppe=_((s3t,fpe)=>{var yut=Hl(),Eut=pE(),Cut=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,wut=/^\w*$/;function Iut(t,e){if(yut(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||Eut(t)?!0:wut.test(t)||!Cut.test(t)||e!=null&&t in Object(e)}fpe.exports=Iut});var dpe=_((o3t,gpe)=>{var hpe=_S(),But="Expected a function";function C_(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(But);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var u=t.apply(this,o);return r.cache=n.set(a,u)||n,u};return r.cache=new(C_.Cache||hpe),r}C_.Cache=hpe;gpe.exports=C_});var ype=_((a3t,mpe)=>{var vut=dpe(),Dut=500;function Sut(t){var e=vut(t,function(o){return r.size===Dut&&r.clear(),o}),r=e.cache;return e}mpe.exports=Sut});var w_=_((l3t,Epe)=>{var Put=ype(),but=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,xut=/\\(\\)?/g,kut=Put(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(but,function(r,o,a,n){e.push(a?n.replace(xut,"$1"):o||r)}),e});Epe.exports=kut});var Gd=_((c3t,Cpe)=>{var Qut=Hl(),Fut=ppe(),Rut=w_(),Tut=N1();function Nut(t,e){return Qut(t)?t:Fut(t,e)?[t]:Rut(Tut(t))}Cpe.exports=Nut});var lC=_((u3t,wpe)=>{var Lut=pE(),Out=1/0;function Mut(t){if(typeof t=="string"||Lut(t))return t;var e=t+"";return e=="0"&&1/t==-Out?"-0":e}wpe.exports=Mut});var zx=_((A3t,Ipe)=>{var Uut=Gd(),_ut=lC();function Hut(t,e){e=Uut(e,t);for(var r=0,o=e.length;t!=null&&r{var jut=rP(),Gut=Gd(),qut=_I(),Bpe=il(),Yut=lC();function Wut(t,e,r,o){if(!Bpe(t))return t;e=Gut(e,t);for(var a=-1,n=e.length,u=n-1,A=t;A!=null&&++a{var Kut=zx(),Vut=I_(),Jut=Gd();function zut(t,e,r){for(var o=-1,a=e.length,n={};++o{function Xut(t,e){return t!=null&&e in Object(t)}Ppe.exports=Xut});var B_=_((g3t,xpe)=>{var Zut=Gd(),$ut=OI(),eAt=Hl(),tAt=_I(),rAt=YS(),nAt=lC();function iAt(t,e,r){e=Zut(e,t);for(var o=-1,a=e.length,n=!1;++o{var sAt=bpe(),oAt=B_();function aAt(t,e){return t!=null&&oAt(t,e,sAt)}kpe.exports=aAt});var Rpe=_((m3t,Fpe)=>{var lAt=Spe(),cAt=Qpe();function uAt(t,e){return lAt(t,e,function(r,o){return cAt(t,o)})}Fpe.exports=uAt});var Ope=_((y3t,Lpe)=>{var Tpe=pd(),AAt=OI(),fAt=Hl(),Npe=Tpe?Tpe.isConcatSpreadable:void 0;function pAt(t){return fAt(t)||AAt(t)||!!(Npe&&t&&t[Npe])}Lpe.exports=pAt});var _pe=_((E3t,Upe)=>{var hAt=GS(),gAt=Ope();function Mpe(t,e,r,o,a){var n=-1,u=t.length;for(r||(r=gAt),a||(a=[]);++n0&&r(A)?e>1?Mpe(A,e-1,r,o,a):hAt(a,A):o||(a[a.length]=A)}return a}Upe.exports=Mpe});var jpe=_((C3t,Hpe)=>{var dAt=_pe();function mAt(t){var e=t==null?0:t.length;return e?dAt(t,1):[]}Hpe.exports=mAt});var v_=_((w3t,Gpe)=>{var yAt=jpe(),EAt=AL(),CAt=fL();function wAt(t){return CAt(EAt(t,void 0,yAt),t+"")}Gpe.exports=wAt});var D_=_((I3t,qpe)=>{var IAt=Rpe(),BAt=v_(),vAt=BAt(function(t,e){return t==null?{}:IAt(t,e)});qpe.exports=vAt});var Xx,Ype=Et(()=>{Yl();Xx=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,o){return this.resolver.bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){throw new zt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,o,a){throw new zt(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 zt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var Qi,S_=Et(()=>{Yl();Qi=class extends Xs{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,o){return(typeof r=="function"?r:o)()}async startTimerPromise(e,r,o){return await(typeof r=="function"?r:o)()}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 Wpe,cC,P_=Et(()=>{St();Wpe=$e(RP());fE();vd();Gl();nh();Qf();bo();cC=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ot.tryFind(this.cwd)??new Ot,this.relativeCwd=V.relative(this.project.cwd,this.cwd)||Bt.dot;let e=this.manifest.name?this.manifest.name:eA(null,`${this.computeCandidateName()}-${zs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=In(e,`${Xn.protocol}${this.relativeCwd}`),this.anchoredLocator=Qs(e,`${Xn.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let o=await(0,Wpe.default)(r,{cwd:ue.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:["**/node_modules","**/.git","**/.yarn"]});o.sort(),await o.reduce(async(a,n)=>{let u=V.resolve(this.cwd,ue.toPortablePath(n)),A=await oe.existsPromise(V.join(u,"package.json"));await a,A&&this.workspacesCwds.add(u)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${a1(this.project.configuration,this)} (${Mt(this.project.configuration,V.join(this.cwd,dr.manifest),yt.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return e}accepts(e){let r=e.indexOf(":"),o=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(o===Xn.protocol&&V.normalize(a)===this.relativeCwd||o===Xn.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=xa(a);return n?o===Xn.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":`${V.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ot.hardDependencies}={}){let r=new Set,o=a=>{for(let n of e)for(let u of a.manifest[n].values()){let A=this.project.tryWorkspaceByDescriptor(u);A===null||r.has(A)||(r.add(A),o(A))}};return o(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ot.hardDependencies}={}){let r=new Set,o=a=>{for(let n of this.project.workspaces)e.some(A=>[...n.manifest[A].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&i1(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),o(n))};return o(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let o of r.workspacesCwds){let a=this.project.workspacesByCwd.get(o);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=V.join(this.cwd,Ot.fileName),o=`${JSON.stringify(e,null,this.manifest.indent)} +`;await oe.changeFilePromise(r,o,{automaticNewlines:!0}),this.manifest.raw=e}}});function kAt({project:t,allDescriptors:e,allResolutions:r,allPackages:o,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:u=new Map,peerWarnings:A=[],volatileDescriptors:p=new Set}){let h=new Map,E=[],I=new Map,v=new Map,x=new Map,C=new Map,R=new Map,L=new Map(t.workspaces.map(ce=>{let me=ce.anchoredLocator.locatorHash,he=o.get(me);if(typeof he>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[me,e1(he)]})),U=()=>{let ce=oe.mktempSync(),me=V.join(ce,"stacktrace.log"),he=String(E.length+1).length,Be=E.map((we,g)=>`${`${g+1}.`.padStart(he," ")} ${ba(we)} +`).join("");throw oe.writeFileSync(me,Be),oe.detachTemp(ce),new zt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${ue.fromPortablePath(me)}`)},J=ce=>{let me=r.get(ce.descriptorHash);if(typeof me>"u")throw new Error("Assertion failed: The resolution should have been registered");let he=o.get(me);if(!he)throw new Error("Assertion failed: The package could not be found");return he},te=(ce,me,he,{top:Be,optional:we})=>{E.length>1e3&&U(),E.push(me);let g=ae(ce,me,he,{top:Be,optional:we});return E.pop(),g},ae=(ce,me,he,{top:Be,optional:we})=>{if(we||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=o.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${jr(t.configuration,me)}) should have been registered`);let Ee=[],Se=[],le=[],ne=[],ee=[];for(let Fe of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Fe.identHash)&&g.locatorHash!==Be)continue;if(bf(Fe))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");p.delete(Fe.descriptorHash);let At=we;if(!At){let Te=g.dependenciesMeta.get(fn(Fe));if(typeof Te<"u"){let Je=Te.get(null);typeof Je<"u"&&Je.optional&&(At=!0)}}let H=r.get(Fe.descriptorHash);if(!H)throw new Error(`Assertion failed: The resolution (${Gn(t.configuration,Fe)}) should have been registered`);let at=L.get(H)||o.get(H);if(!at)throw new Error(`Assertion failed: The package (${H}, resolved from ${Gn(t.configuration,Fe)}) should have been registered`);if(at.peerDependencies.size===0){te(Fe,at,new Map,{top:Be,optional:At});continue}let Re,ke,xe=new Set,He;Se.push(()=>{Re=tM(Fe,me.locatorHash),ke=rM(at,me.locatorHash),g.dependencies.delete(Fe.identHash),g.dependencies.set(Re.identHash,Re),r.set(Re.descriptorHash,ke.locatorHash),e.set(Re.descriptorHash,Re),o.set(ke.locatorHash,ke),Ee.push([at,Re,ke])}),le.push(()=>{He=new Map;for(let Te of ke.peerDependencies.values()){let Je=g.dependencies.get(Te.identHash);if(!Je&&n1(me,Te)&&(ce.identHash===me.identHash?Je=ce:(Je=In(me,ce.range),e.set(Je.descriptorHash,Je),r.set(Je.descriptorHash,me.locatorHash),p.delete(Je.descriptorHash))),(!Je||Je.range==="missing:")&&ke.dependencies.has(Te.identHash)){ke.peerDependencies.delete(Te.identHash);continue}Je||(Je=In(Te,"missing:")),ke.dependencies.set(Je.identHash,Je),bf(Je)&&md(x,Je.descriptorHash).add(ke.locatorHash),I.set(Je.identHash,Je),Je.range==="missing:"&&xe.add(Je.identHash),He.set(Te.identHash,he.get(Te.identHash)??ke.locatorHash)}ke.dependencies=new Map(ks(ke.dependencies,([Te,Je])=>fn(Je)))}),ne.push(()=>{if(!o.has(ke.locatorHash))return;let Te=h.get(at.locatorHash);typeof Te=="number"&&Te>=2&&U();let Je=h.get(at.locatorHash),je=typeof Je<"u"?Je+1:1;h.set(at.locatorHash,je),te(Re,ke,He,{top:Be,optional:At}),h.set(at.locatorHash,je-1)}),ee.push(()=>{let Te=g.dependencies.get(Fe.identHash);if(typeof Te>"u")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let Je=r.get(Te.descriptorHash);if(typeof Je>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");if(md(R,Je).add(me.locatorHash),!!o.has(ke.locatorHash)){for(let je of ke.peerDependencies.values()){let b=He.get(je.identHash);if(typeof b>"u")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");Yy(Wy(C,b),fn(je)).push(ke.locatorHash)}for(let je of xe)ke.dependencies.delete(je)}})}for(let Fe of[...Se,...le])Fe();let Ie;do{Ie=!0;for(let[Fe,At,H]of Ee){let at=Wy(v,Fe.locatorHash),Re=zs(...[...H.dependencies.values()].map(Te=>{let Je=Te.range!=="missing:"?r.get(Te.descriptorHash):"missing:";if(typeof Je>"u")throw new Error(`Assertion failed: Expected the resolution for ${Gn(t.configuration,Te)} to have been registered`);return Je===Be?`${Je} (top)`:Je}),At.identHash),ke=at.get(Re);if(typeof ke>"u"){at.set(Re,At);continue}if(ke===At)continue;o.delete(H.locatorHash),e.delete(At.descriptorHash),r.delete(At.descriptorHash),a.delete(H.locatorHash);let xe=x.get(At.descriptorHash)||[],He=[g.locatorHash,...xe];x.delete(At.descriptorHash);for(let Te of He){let Je=o.get(Te);typeof Je>"u"||(Je.dependencies.get(At.identHash).descriptorHash!==ke.descriptorHash&&(Ie=!1),Je.dependencies.set(At.identHash,ke))}}}while(!Ie);for(let Fe of[...ne,...ee])Fe()};for(let ce of t.workspaces){let me=ce.anchoredLocator;p.delete(ce.anchoredDescriptor.descriptorHash),te(ce.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}let fe=new Map;for(let[ce,me]of R){let he=o.get(ce);if(typeof he>"u")throw new Error("Assertion failed: Expected the root to be registered");let Be=C.get(ce);if(!(typeof Be>"u"))for(let we of me){let g=o.get(we);if(!(typeof g>"u")&&!!t.tryWorkspaceByLocator(g))for(let[Ee,Se]of Be){let le=Js(Ee);if(g.peerDependencies.has(le.identHash))continue;let ne=`p${zs(we,Ee,ce).slice(0,5)}`;u.set(ne,{subject:we,requested:le,rootRequester:ce,allRequesters:Se});let ee=he.dependencies.get(le.identHash);if(typeof ee<"u"){let Ie=J(ee),Fe=Ie.version??"0.0.0",At=new Set;for(let at of Se){let Re=o.get(at);if(typeof Re>"u")throw new Error("Assertion failed: Expected the link to be registered");let ke=Re.peerDependencies.get(le.identHash);if(typeof ke>"u")throw new Error("Assertion failed: Expected the ident to be registered");At.add(ke.range)}if(![...At].every(at=>{if(at.startsWith(Xn.protocol)){if(!t.tryWorkspaceByLocator(Ie))return!1;at=at.slice(Xn.protocol.length),(at==="^"||at==="~")&&(at="*")}return kf(Fe,at)})){let at=ol(fe,Ie.locatorHash,()=>({type:2,requested:le,subject:Ie,dependents:new Map,requesters:new Map,links:new Map,version:Fe,hash:`p${Ie.locatorHash.slice(0,5)}`}));at.dependents.set(g.locatorHash,g),at.requesters.set(he.locatorHash,he);for(let Re of Se)at.links.set(Re,o.get(Re));A.push({type:1,subject:g,requested:le,requester:he,version:Fe,hash:ne,requirementCount:Se.length})}}else he.peerDependenciesMeta.get(Ee)?.optional||A.push({type:0,subject:g,requested:le,requester:he,hash:ne})}}}A.push(...fe.values())}function QAt(t,e){let r=wL(t.peerWarnings,"type"),o=r[2]?.map(n=>{let u=Array.from(n.links.values(),E=>{let I=t.storedPackages.get(E.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the package to be registered");let v=I.peerDependencies.get(n.requested.identHash);if(typeof v>"u")throw new Error("Assertion failed: Expected the ident to be registered");return v.range}),A=n.links.size>1?"and other dependencies request":"requests",p=sM(u),h=p?cE(t.configuration,p):Mt(t.configuration,"but they have non-overlapping ranges!","redBright");return`${cs(t.configuration,n.requested)} is listed by your project with version ${o1(t.configuration,n.version)}, which doesn't satisfy what ${cs(t.configuration,n.requesters.values().next().value)} (${Mt(t.configuration,n.hash,yt.CODE)}) ${A} (${h}).`})??[],a=r[0]?.map(n=>`${jr(t.configuration,n.subject)} doesn't provide ${cs(t.configuration,n.requested)} (${Mt(t.configuration,n.hash,yt.CODE)}), requested by ${cs(t.configuration,n.requester)}.`)??[];e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met; run ${Mt(t.configuration,"yarn explain peer-requirements ",yt.CODE)} for details, where ${Mt(t.configuration,"",yt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of ks(o,u=>Xy.default(u)))e.reportWarning(60,n);for(let n of ks(a,u=>Xy.default(u)))e.reportWarning(2,n)})}var Zx,$x,ek,Jpe,k_,x_,Q_,tk,DAt,SAt,Kpe,PAt,bAt,xAt,pl,b_,rk,Vpe,Pt,zpe=Et(()=>{St();St();Nl();jt();Zx=ve("crypto");E_();$x=$e(D_()),ek=$e(id()),Jpe=$e(zn()),k_=ve("util"),x_=$e(ve("v8")),Q_=$e(ve("zlib"));u_();S1();A_();f_();fE();uM();Yl();Ype();O1();S_();vd();P_();WP();Gl();nh();jl();vb();BU();Qf();bo();tk=Jy(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),DAt=3,SAt=/ *, */g,Kpe=/\/$/,PAt=32,bAt=(0,k_.promisify)(Q_.default.gzip),xAt=(0,k_.promisify)(Q_.default.gunzip),pl=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))(pl||{}),b_={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["skippedBuilds","storedBuildState"]},rk=(o=>(o[o.NotProvided=0]="NotProvided",o[o.NotCompatible=1]="NotCompatible",o[o.NotCompatibleAggregate=2]="NotCompatibleAggregate",o))(rk||{}),Vpe=t=>zs(`${DAt}`,t),Pt=class{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.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 it(`No project found in ${r}`);let o=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,oe.existsSync(V.join(n,dr.manifest))){o=n;break}a=V.dirname(n)}let u=new Pt(e.projectCwd,{configuration:e});Ke.telemetry?.reportProject(u.cwd),await u.setupResolutions(),await u.setupWorkspaces(),Ke.telemetry?.reportWorkspaceCount(u.workspaces.length),Ke.telemetry?.reportDependencyCount(u.workspaces.reduce((C,R)=>C+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let A=u.tryWorkspaceByCwd(o);if(A)return{project:u,workspace:A,locator:A.anchoredLocator};let p=await u.findLocatorForLocation(`${o}/`,{strict:!0});if(p)return{project:u,locator:p,workspace:null};let h=Mt(e,u.cwd,yt.PATH),E=Mt(e,V.relative(u.cwd,o),yt.PATH),I=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,v=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- 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 it(`The nearest package directory (${Mt(e,o,yt.PATH)}) doesn't seem to be part of the project declared in ${Mt(e,u.cwd,yt.PATH)}. + +${[I,v,x].join(` +`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=V.join(this.cwd,dr.lockfile),r=this.configuration.get("defaultLanguageName");if(oe.existsSync(e)){let o=await oe.readFilePromise(e,"utf8");this.lockFileChecksum=Vpe(o);let a=Ki(o);if(a.__metadata){let n=a.__metadata.version,u=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${A})`);let h=xf(p.resolution,!0),E=new Ot;E.load(p,{yamlCompatibilityMode:!0});let I=E.version,v=E.languageName||r,x=p.linkType.toUpperCase(),C=p.conditions??null,R=E.dependencies,L=E.peerDependencies,U=E.dependenciesMeta,J=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let fe=typeof u<"u"&&!p.checksum.includes("/")?`${u}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,fe)}let ae={...h,version:I,languageName:v,linkType:x,conditions:C,dependencies:R,peerDependencies:L,dependenciesMeta:U,peerDependenciesMeta:J,bin:te};this.originalPackages.set(ae.locatorHash,ae);for(let fe of A.split(SAt)){let ce=ih(fe);n<=6&&(ce=this.configuration.normalizeDependency(ce),ce=In(ce,ce.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(ce.descriptorHash,ce),this.storedResolutions.set(ce.descriptorHash,h.locatorHash)}}}else o.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,ek.default)(4),o=async(a,n)=>{if(e.has(n))return a;e.add(n);let u=new cC(n,{project:this});await r(()=>u.setup());let A=a.then(()=>{this.addWorkspace(u)});return Array.from(u.workspacesCwds).reduce(o,A)};await o(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${cs(this.configuration,e.anchoredLocator)}: ${ue.fromPortablePath(e.cwd)} conflicts with ${ue.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){V.isAbsolute(e)||(e=V.resolve(this.cwd,e)),e=V.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 o of this.workspaces)V.relative(o.cwd,e).startsWith("../")||r&&r.cwd.length>=o.cwd.length||(r=o);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 (${cs(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Xn.protocol)){let o=e.range.slice(Xn.protocol.length);if(o!=="^"&&o!=="~"&&o!=="*"&&!xa(o))return this.tryWorkspaceByCwd(o)}let r=this.tryWorkspaceByIdent(e);return r===null||(bf(e)&&(e=t1(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Gn(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Hc(e)&&(e=r1(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${jr(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 o=new Set(this.storedResolutions.values());typeof r<"u"&&!o.has(r)&&this.deleteLocator(r)}if("locatorHash"in e){this.deleteLocator(e.locatorHash);for(let[r,o]of this.storedResolutions)o===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[o,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(o)}for(let o of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(o,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(o.locatorHash);let n=r.get(o.locatorHash);if(n){r.delete(o.locatorHash);for(let u of n)this.deleteDescriptor(u)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,o]of e.dependencies)bf(o)&&e.dependencies.set(r,t1(o))}getDependencyMeta(e,r){let o={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(e));if(!n)return o;let u=n.get(null);if(u&&Object.assign(o,u),r===null||!Jpe.default.valid(r))return o;for(let[A,p]of n)A!==null&&A===r&&Object.assign(o,p);return o}async findLocatorForLocation(e,{strict:r=!1}={}){let o=new Qi,a=this.configuration.getLinkers(),n={project:this,report:o};for(let u of a){let A=await u.findPackageLocator(e,n);if(A){if(r&&(await u.findPackageLocation(A,n)).replace(Kpe,"")!==e.replace(Kpe,""))continue;return A}}return null}async loadUserConfig(){let e=V.join(this.cwd,".pnp.cjs");await oe.existsPromise(e)&&Df(e).setup();let r=V.join(this.cwd,"yarn.config.cjs");return await oe.existsPromise(r)?Df(r):null}async preparePackage(e,{resolver:r,resolveOptions:o}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[u,A]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,A,this,n,A,{resolver:r,resolveOptions:o});if(!n1(A,p))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let h=r.bindDescriptor(p,n,o);n.dependencies.set(u,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),o=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new oC(a);await n.setup(this,{report:e.report});let u=e.lockfileOnly?[new Xx(a)]:[n,a],A=new Dd([new aC(a),...u]),p=new Dd([...u]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:A}:{project:this,report:e.report,resolver:A,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},I=new Map,v=new Map,x=new Map,C=new Map,R=new Map,L=new Map,U=this.topLevelWorkspace.anchoredLocator,J=new Set,te=[],ae=M4(),fe=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Xs.progressViaTitle(),async le=>{let ne=async H=>{let at=await Ky(async()=>await A.resolve(H,E),He=>`${jr(this.configuration,H)}: ${He}`);if(!i1(H,at))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${jr(this.configuration,H)} to ${jr(this.configuration,at)})`);C.set(at.locatorHash,at),!r.delete(at.locatorHash)&&!this.tryWorkspaceByLocator(at)&&o.push(at);let ke=await this.preparePackage(at,{resolver:A,resolveOptions:E}),xe=Uc([...ke.dependencies.values()].map(He=>At(He)));return te.push(xe),xe.catch(()=>{}),v.set(ke.locatorHash,ke),ke},ee=async H=>{let at=R.get(H.locatorHash);if(typeof at<"u")return at;let Re=Promise.resolve().then(()=>ne(H));return R.set(H.locatorHash,Re),Re},Ie=async(H,at)=>{let Re=await At(at);return I.set(H.descriptorHash,H),x.set(H.descriptorHash,Re.locatorHash),Re},Fe=async H=>{le.setTitle(Gn(this.configuration,H));let at=this.resolutionAliases.get(H.descriptorHash);if(typeof at<"u")return Ie(H,this.storedDescriptors.get(at));let Re=A.getResolutionDependencies(H,E),ke=Object.fromEntries(await Uc(Object.entries(Re).map(async([Te,Je])=>{let je=A.bindDescriptor(Je,U,E),b=await At(je);return J.add(b.locatorHash),[Te,b]}))),He=(await Ky(async()=>await A.getCandidates(H,ke,E),Te=>`${Gn(this.configuration,H)}: ${Te}`))[0];if(typeof He>"u")throw new zt(82,`${Gn(this.configuration,H)}: No candidates found`);if(e.checkResolutions){let{locators:Te}=await p.getSatisfying(H,ke,[He],{...E,resolver:p});if(!Te.find(Je=>Je.locatorHash===He.locatorHash))throw new zt(78,`Invalid resolution ${ZI(this.configuration,H,He)}`)}return I.set(H.descriptorHash,H),x.set(H.descriptorHash,He.locatorHash),ee(He)},At=H=>{let at=L.get(H.descriptorHash);if(typeof at<"u")return at;I.set(H.descriptorHash,H);let Re=Promise.resolve().then(()=>Fe(H));return L.set(H.descriptorHash,Re),Re};for(let H of this.workspaces){let at=H.anchoredDescriptor;te.push(At(at))}for(;te.length>0;){let H=[...te];te.length=0,await Uc(H)}});let ce=sl(r.values(),le=>this.tryWorkspaceByLocator(le)?sl.skip:le);if(o.length>0||ce.length>0){let le=new Set(this.workspaces.flatMap(H=>{let at=v.get(H.anchoredLocator.locatorHash);if(!at)throw new Error("Assertion failed: The workspace should have been resolved");return Array.from(at.dependencies.values(),Re=>{let ke=x.get(Re.descriptorHash);if(!ke)throw new Error("Assertion failed: The resolution should have been registered");return ke})})),ne=H=>le.has(H.locatorHash)?"0":"1",ee=H=>ba(H),Ie=ks(o,[ne,ee]),Fe=ks(ce,[ne,ee]),At=e.report.getRecommendedLength();Ie.length>0&&e.report.reportInfo(85,`${Mt(this.configuration,"+",yt.ADDED)} ${cP(this.configuration,Ie,At)}`),Fe.length>0&&e.report.reportInfo(85,`${Mt(this.configuration,"-",yt.REMOVED)} ${cP(this.configuration,Fe,At)}`)}let me=new Set(this.resolutionAliases.values()),he=new Set(v.keys()),Be=new Set,we=new Map,g=[];kAt({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:he,peerRequirements:we,peerWarnings:g,allDescriptors:I,allResolutions:x,allPackages:v});for(let le of J)he.delete(le);for(let le of me)I.delete(le),x.delete(le);let Ee=new Set,Se=new Set;for(let le of v.values())le.conditions!=null&&(!he.has(le.locatorHash)||(jP(le,fe)||(jP(le,ae)&&e.report.reportWarningOnce(77,`${jr(this.configuration,le)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Mt(this.configuration,"supportedArchitectures",yt.SETTING)} setting`),Se.add(le.locatorHash)),Ee.add(le.locatorHash)));this.storedResolutions=x,this.storedDescriptors=I,this.storedPackages=v,this.accessibleLocators=Be,this.conditionalLocators=Ee,this.disabledLocators=Se,this.originalPackages=C,this.optionalBuilds=he,this.peerRequirements=we,this.peerWarnings=g}async fetchEverything({cache:e,report:r,fetcher:o,mode:a,persistProject:n=!0}){let u={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},A=o||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:A,report:r,cacheOptions:u},h=Array.from(new Set(ks(this.storedResolutions.values(),[C=>{let R=this.storedPackages.get(C);if(!R)throw new Error("Assertion failed: The locator should have been registered");return ba(R)}])));a==="update-lockfile"&&(h=h.filter(C=>!this.storedChecksums.has(C)));let E=!1,I=Xs.progressViaCounter(h.length);await r.reportProgress(I);let v=(0,ek.default)(PAt);if(await Uc(h.map(C=>v(async()=>{let R=this.storedPackages.get(C);if(!R)throw new Error("Assertion failed: The locator should have been registered");if(Hc(R))return;let L;try{L=await A.fetch(R,p)}catch(U){U.message=`${jr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}L.checksum!=null?this.storedChecksums.set(R.locatorHash,L.checksum):this.storedChecksums.delete(R.locatorHash),L.releaseFs&&L.releaseFs()}).finally(()=>{I.tick()}))),E)throw E;let x=n&&a!=="update-lockfile"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||x){let R=(await Promise.all([...r.cacheMisses].map(async ce=>{let me=this.storedPackages.get(ce),he=this.storedChecksums.get(ce)??null,Be=e.getLocatorPath(me,he);return(await oe.statPromise(Be)).size}))).reduce((ce,me)=>ce+me,0)-(x?.size??0),L=r.cacheMisses.size,U=x?.count??0,J=`${nP(L,{zero:"No new packages",one:"A package was",more:`${Mt(this.configuration,L,yt.NUMBER)} packages were`})} added to the project`,te=`${nP(U,{zero:"none were",one:"one was",more:`${Mt(this.configuration,U,yt.NUMBER)} were`})} removed`,ae=R!==0?` (${Mt(this.configuration,R,yt.SIZE_DIFF)})`:"",fe=U>0?L>0?`${J}, and ${te}${ae}.`:`${J}, but ${te}${ae}.`:`${J}${ae}.`;r.reportInfo(13,fe)}}async linkEverything({cache:e,report:r,fetcher:o,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(le=>{let ne=le.makeInstaller(h),ee=le.getCustomDataKey(),Ie=this.linkersCustomData.get(ee);return typeof Ie<"u"&&ne.attachCustomData(Ie),[le,ne]})),I=new Map,v=new Map,x=new Map,C=new Map(await Uc([...this.accessibleLocators].map(async le=>{let ne=this.storedPackages.get(le);if(!ne)throw new Error("Assertion failed: The locator should have been registered");return[le,await u.fetch(ne,A)]}))),R=[],L=new Set,U=[];for(let le of this.accessibleLocators){let ne=this.storedPackages.get(le);if(typeof ne>"u")throw new Error("Assertion failed: The locator should have been registered");let ee=C.get(ne.locatorHash);if(typeof ee>"u")throw new Error("Assertion failed: The fetch result should have been registered");let Ie=[],Fe=H=>{Ie.push(H)},At=this.tryWorkspaceByLocator(ne);if(At!==null){let H=[],{scripts:at}=At.manifest;for(let ke of["preinstall","install","postinstall"])at.has(ke)&&H.push({type:0,script:ke});try{for(let[ke,xe]of E)if(ke.supportsPackage(ne,h)&&(await xe.installPackage(ne,ee,{holdFetchResult:Fe})).buildRequest!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{Ie.length===0?ee.releaseFs?.():R.push(Uc(Ie).catch(()=>{}).then(()=>{ee.releaseFs?.()}))}let Re=V.join(ee.packageFs.getRealPath(),ee.prefixPath);v.set(ne.locatorHash,Re),!Hc(ne)&&H.length>0&&x.set(ne.locatorHash,{buildDirectives:H,buildLocations:[Re]})}else{let H=p.find(ke=>ke.supportsPackage(ne,h));if(!H)throw new zt(12,`${jr(this.configuration,ne)} isn't supported by any available linker`);let at=E.get(H);if(!at)throw new Error("Assertion failed: The installer should have been registered");let Re;try{Re=await at.installPackage(ne,ee,{holdFetchResult:Fe})}finally{Ie.length===0?ee.releaseFs?.():R.push(Uc(Ie).then(()=>{}).then(()=>{ee.releaseFs?.()}))}I.set(ne.locatorHash,H),v.set(ne.locatorHash,Re.packageLocation),Re.buildRequest&&Re.packageLocation&&(Re.buildRequest.skipped?(L.add(ne.locatorHash),this.skippedBuilds.has(ne.locatorHash)||U.push([ne,Re.buildRequest.explain])):x.set(ne.locatorHash,{buildDirectives:Re.buildRequest.directives,buildLocations:[Re.packageLocation]}))}}let J=new Map;for(let le of this.accessibleLocators){let ne=this.storedPackages.get(le);if(!ne)throw new Error("Assertion failed: The locator should have been registered");let ee=this.tryWorkspaceByLocator(ne)!==null,Ie=async(Fe,At)=>{let H=v.get(ne.locatorHash);if(typeof H>"u")throw new Error(`Assertion failed: The package (${jr(this.configuration,ne)}) should have been registered`);let at=[];for(let Re of ne.dependencies.values()){let ke=this.storedResolutions.get(Re.descriptorHash);if(typeof ke>"u")throw new Error(`Assertion failed: The resolution (${Gn(this.configuration,Re)}, from ${jr(this.configuration,ne)})should have been registered`);let xe=this.storedPackages.get(ke);if(typeof xe>"u")throw new Error(`Assertion failed: The package (${ke}, resolved from ${Gn(this.configuration,Re)}) should have been registered`);let He=this.tryWorkspaceByLocator(xe)===null?I.get(ke):null;if(typeof He>"u")throw new Error(`Assertion failed: The package (${ke}, resolved from ${Gn(this.configuration,Re)}) should have been registered`);He===Fe||He===null?v.get(xe.locatorHash)!==null&&at.push([Re,xe]):!ee&&H!==null&&Yy(J,ke).push(H)}H!==null&&await At.attachInternalDependencies(ne,at)};if(ee)for(let[Fe,At]of E)Fe.supportsPackage(ne,h)&&await Ie(Fe,At);else{let Fe=I.get(ne.locatorHash);if(!Fe)throw new Error("Assertion failed: The linker should have been found");let At=E.get(Fe);if(!At)throw new Error("Assertion failed: The installer should have been registered");await Ie(Fe,At)}}for(let[le,ne]of J){let ee=this.storedPackages.get(le);if(!ee)throw new Error("Assertion failed: The package should have been registered");let Ie=I.get(ee.locatorHash);if(!Ie)throw new Error("Assertion failed: The linker should have been found");let Fe=E.get(Ie);if(!Fe)throw new Error("Assertion failed: The installer should have been registered");await Fe.attachExternalDependents(ee,ne)}let te=new Map;for(let[le,ne]of E){let ee=await ne.finalizeInstall();for(let Ie of ee?.records??[])Ie.buildRequest.skipped?(L.add(Ie.locator.locatorHash),this.skippedBuilds.has(Ie.locator.locatorHash)||U.push([Ie.locator,Ie.buildRequest.explain])):x.set(Ie.locator.locatorHash,{buildDirectives:Ie.buildRequest.directives,buildLocations:Ie.buildLocations});typeof ee?.customData<"u"&&te.set(le.getCustomDataKey(),ee.customData)}if(this.linkersCustomData=te,await Uc(R),a==="skip-build")return;for(let[,le]of ks(U,([ne])=>ba(ne)))le(r);let ae=new Set(this.storedPackages.keys()),fe=new Set(x.keys());for(let le of fe)ae.delete(le);let ce=(0,Zx.createHash)("sha512");ce.update(process.versions.node),await this.configuration.triggerHook(le=>le.globalHashGeneration,this,le=>{ce.update("\0"),ce.update(le)});let me=ce.digest("hex"),he=new Map,Be=le=>{let ne=he.get(le.locatorHash);if(typeof ne<"u")return ne;let ee=this.storedPackages.get(le.locatorHash);if(typeof ee>"u")throw new Error("Assertion failed: The package should have been registered");let Ie=(0,Zx.createHash)("sha512");Ie.update(le.locatorHash),he.set(le.locatorHash,"");for(let Fe of ee.dependencies.values()){let At=this.storedResolutions.get(Fe.descriptorHash);if(typeof At>"u")throw new Error(`Assertion failed: The resolution (${Gn(this.configuration,Fe)}) should have been registered`);let H=this.storedPackages.get(At);if(typeof H>"u")throw new Error("Assertion failed: The package should have been registered");Ie.update(Be(H))}return ne=Ie.digest("hex"),he.set(le.locatorHash,ne),ne},we=(le,ne)=>{let ee=(0,Zx.createHash)("sha512");ee.update(me),ee.update(Be(le));for(let Ie of ne)ee.update(Ie);return ee.digest("hex")},g=new Map,Ee=!1,Se=le=>{let ne=new Set([le.locatorHash]);for(let ee of ne){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error("Assertion failed: The package should have been registered");for(let Fe of Ie.dependencies.values()){let At=this.storedResolutions.get(Fe.descriptorHash);if(!At)throw new Error(`Assertion failed: The resolution (${Gn(this.configuration,Fe)}) should have been registered`);if(At!==le.locatorHash&&fe.has(At))return!1;let H=this.storedPackages.get(At);if(!H)throw new Error("Assertion failed: The package should have been registered");let at=this.tryWorkspaceByLocator(H);if(at){if(at.anchoredLocator.locatorHash!==le.locatorHash&&fe.has(at.anchoredLocator.locatorHash))return!1;ne.add(at.anchoredLocator.locatorHash)}ne.add(At)}}return!0};for(;fe.size>0;){let le=fe.size,ne=[];for(let ee of fe){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error("Assertion failed: The package should have been registered");if(!Se(Ie))continue;let Fe=x.get(Ie.locatorHash);if(!Fe)throw new Error("Assertion failed: The build directive should have been registered");let At=we(Ie,Fe.buildLocations);if(this.storedBuildState.get(Ie.locatorHash)===At){g.set(Ie.locatorHash,At),fe.delete(ee);continue}Ee||(await this.persistInstallStateFile(),Ee=!0),this.storedBuildState.has(Ie.locatorHash)?r.reportInfo(8,`${jr(this.configuration,Ie)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${jr(this.configuration,Ie)} must be built because it never has been before or the last one failed`);let H=Fe.buildLocations.map(async at=>{if(!V.isAbsolute(at))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${at})`);for(let Re of Fe.buildDirectives){let ke=`# This file contains the result of Yarn building a package (${ba(Ie)}) +`;switch(Re.type){case 0:ke+=`# Script name: ${Re.script} +`;break;case 1:ke+=`# Script code: ${Re.script} +`;break}let xe=null;if(!await oe.mktempPromise(async Te=>{let Je=V.join(Te,"build.log"),{stdout:je,stderr:b}=this.configuration.getSubprocessStreams(Je,{header:ke,prefix:jr(this.configuration,Ie),report:r}),w;try{switch(Re.type){case 0:w=await Wb(Ie,Re.script,[],{cwd:at,project:this,stdin:xe,stdout:je,stderr:b});break;case 1:w=await EU(Ie,Re.script,[],{cwd:at,project:this,stdin:xe,stdout:je,stderr:b});break}}catch(F){b.write(F.stack),w=1}if(je.end(),b.end(),w===0)return!0;oe.detachTemp(Te);let P=`${jr(this.configuration,Ie)} couldn't be built successfully (exit code ${Mt(this.configuration,w,yt.NUMBER)}, logs can be found here: ${Mt(this.configuration,Je,yt.PATH)})`,y=this.optionalBuilds.has(Ie.locatorHash);return y?r.reportInfo(9,P):r.reportError(9,P),Kce&&r.reportFold(ue.fromPortablePath(Je),oe.readFileSync(Je,"utf8")),y}))return!1}return!0});ne.push(...H,Promise.allSettled(H).then(at=>{fe.delete(ee),at.every(Re=>Re.status==="fulfilled"&&Re.value===!0)&&g.set(Ie.locatorHash,At)}))}if(await Uc(ne),le===fe.size){let ee=Array.from(fe).map(Ie=>{let Fe=this.storedPackages.get(Ie);if(!Fe)throw new Error("Assertion failed: The package should have been registered");return jr(this.configuration,Fe)}).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: ${ee})`);break}}this.storedBuildState=g,this.skippedBuilds=L}async installWithNewReport(e,r){return(await Nt.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");Ke.telemetry?.reportInstall(r);let o=!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,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),o=!0}})}),o)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,I]of E)for(let v of I)v.status="inactive";let n=V.join(this.cwd,dr.lockfile),u=null;if(e.immutable)try{u=await oe.readFilePromise(n,"utf8")}catch(E){throw E.code==="ENOENT"?new zt(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()=>{QAt(this,e.report);for(let[,E]of a)for(let[,I]of E)for(let v of I)if(v.userProvided){let x=Mt(this.configuration,v,yt.PACKAGE_EXTENSION);switch(v.status){case"inactive":e.report.reportWarning(68,`${x}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${x}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(u!==null){let E=_g(u,this.generateLockfile());if(E!==u){let I=Ape(n,n,u,E,void 0,void 0,{maxEditLength:100});if(I){e.report.reportSeparator();for(let v of I.hunks){e.report.reportInfo(null,`@@ -${v.oldStart},${v.oldLines} +${v.newStart},${v.newLines} @@`);for(let x of v.lines)x.startsWith("+")?e.report.reportError(28,Mt(this.configuration,x,yt.ADDED)):x.startsWith("-")?e.report.reportError(28,Mt(this.configuration,x,yt.REMOVED)):e.report.reportInfo(null,Mt(this.configuration,x,"grey"))}e.report.reportSeparator()}throw new zt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let E of a.values())for(let[,I]of E)for(let v of I)v.userProvided&&v.status==="active"&&Ke.telemetry?.reportPackageExtension(Ed(v,yt.PACKAGE_EXTENSION));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e)});let A=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],p=await Promise.all(A.map(async E=>LP(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 ${Mt(this.configuration,"mode=update-lockfile",yt.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(A.map(async I=>LP(I,{cwd:this.cwd})));for(let I=0;I{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,u]of this.storedResolutions.entries()){let A=e.get(u);A||e.set(u,A=new Set),A.add(n)}let r={},{cacheKey:o}=Lr.getCacheKey(this.configuration);r.__metadata={version:tk,cacheKey:o};for(let[n,u]of e.entries()){let A=this.originalPackages.get(n);if(!A)continue;let p=[];for(let I of u){let v=this.storedDescriptors.get(I);if(!v)throw new Error("Assertion failed: The descriptor should have been registered");p.push(v)}let h=p.map(I=>Pa(I)).sort().join(", "),E=new Ot;E.version=A.linkType==="HARD"?A.version:"0.0.0-use.local",E.languageName=A.languageName,E.dependencies=new Map(A.dependencies),E.peerDependencies=new Map(A.peerDependencies),E.dependenciesMeta=new Map(A.dependenciesMeta),E.peerDependenciesMeta=new Map(A.peerDependenciesMeta),E.bin=new Map(A.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:A.linkType.toLowerCase(),resolution:ba(A),checksum:this.storedChecksums.get(A.locatorHash),conditions:A.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. +`,`# Manual changes might be lost - proceed with caution! +`].join("")} +`+Ba(r)}async persistLockfile(){let e=V.join(this.cwd,dr.lockfile),r="";try{r=await oe.readFilePromise(e,"utf8")}catch{}let o=this.generateLockfile(),a=_g(r,o);a!==r&&(await oe.writeFilePromise(e,a),this.lockFileChecksum=Vpe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let u of Object.values(b_))e.push(...u);let r=(0,$x.default)(this,e),o=x_.default.serialize(r),a=zs(o);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await oe.mkdirPromise(V.dirname(n),{recursive:!0}),await oe.writeFilePromise(n,await bAt(o)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:o=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let u=await xAt(await oe.readFilePromise(a));n=x_.default.deserialize(u),this.installStateChecksum=zs(u)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),o&&Object.assign(this,(0,$x.default)(n,b_.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,$x.default)(n,b_.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Qi}),await this.persistInstallStateFile()}async persist(){let e=(0,ek.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 o=new Set([".gitignore"]);if(!CM(e.cwd,this.cwd)||!await oe.existsPromise(e.cwd))return null;let a=[];for(let u of await oe.readdirPromise(e.cwd)){if(o.has(u))continue;let A=V.resolve(e.cwd,u);e.markedFiles.has(A)||(e.immutable?r.reportError(56,`${Mt(this.configuration,V.basename(A),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(oe.lstatPromise(A).then(async p=>(await oe.removePromise(A),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((u,A)=>u+A,0)}}}});function FAt(t){let o=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),u=n+a,A=t.state.lastTips??o*864e5,p=A+864e5+8*36e5-t.timeZone,h=u<=t.timeNow,E=p<=t.timeNow,I=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(I={},I.lastUpdate=h?t.timeNow:n,I.lastTips=A,I.blocks=h?{}:t.state.blocks,I.displayedTips=t.state.displayedTips),{nextState:I,triggerUpdate:h,triggerTips:E,nextTips:E?o*864e5:A}}var uC,Xpe=Et(()=>{St();L1();nh();Ib();jl();Qf();uC=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 o=this.getRegistryPath();this.isNew=!oe.existsSync(o),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),o=A=>A&&rn?kf(rn,A):!1,a=e.map((A,p)=>p).filter(A=>e[A]&&o(e[A]?.selector));if(a.length===0)return null;let n=a.filter(A=>!r.has(A));if(n.length===0){let A=Math.floor(a.length*.2);this.displayedTips=A>0?this.displayedTips.slice(-A):[],n=a.filter(p=>!r.has(p))}let u=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(u),this.commitTips(),e[u]}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){md(this.values,e).add(r)}reportEnumerator(e,r){md(this.enumerators,e).add(zs(r))}reportHit(e,r="*"){let o=Wy(this.hits,e),a=ol(o,r,()=>0);o.set(r,a+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return V.join(e,"telemetry.json")}sendReport(e){let r=this.getRegistryPath(),o;try{o=oe.readJsonSync(r)}catch{o={}}let{nextState:a,triggerUpdate:n,triggerTips:u,nextTips:A}=FAt({state:o,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get("telemetryInterval")});if(this.nextTips=A,this.displayedTips=o.displayedTips??[],a!==null)try{oe.mkdirSync(V.dirname(r),{recursive:!0}),oe.writeJsonSync(r,a)}catch{return!1}if(u&&this.configuration.get("enableTips")&&(this.shouldShowTips=!0),n){let p=o.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=I=>O4(h,I,{configuration:this.configuration}).catch(()=>{});for(let[I,v]of Object.entries(o.blocks??{})){if(Object.keys(v).length===0)continue;let x=v;x.userId=I,x.reportType="primary";for(let L of Object.keys(x.enumerators??{}))x.enumerators[L]=x.enumerators[L].length;E(x);let C=new Map,R=20;for(let[L,U]of Object.entries(x.values))U.length>0&&C.set(L,U.slice(0,R));for(;C.size>0;){let L={};L.userId=I,L.reportType="secondary",L.metrics={};for(let[U,J]of C)L.metrics[U]=J.shift(),J.length===0&&C.delete(U);E(L)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=oe.readJsonSync(e)}catch{r={}}let o=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[o]=a[o]??{};for(let u of this.hits.keys()){let A=n.hits=n.hits??{},p=A[u]=A[u]??{};for(let[h,E]of this.hits.get(u))p[h]=(p[h]??0)+E}for(let u of["values","enumerators"])for(let A of this[u].keys()){let p=n[u]=n[u]??{};p[A]=[...new Set([...p[A]??[],...this[u].get(A)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),oe.mkdirSync(V.dirname(e),{recursive:!0}),oe.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var o2={};Vt(o2,{BuildDirectiveType:()=>Vx,CACHE_CHECKPOINT:()=>c_,CACHE_VERSION:()=>Kx,Cache:()=>Lr,Configuration:()=>Ke,DEFAULT_RC_FILENAME:()=>q4,FormatType:()=>xle,InstallMode:()=>pl,LEGACY_PLUGINS:()=>v1,LOCKFILE_VERSION:()=>tk,LegacyMigrationResolver:()=>oC,LightReport:()=>AA,LinkType:()=>zy,LockfileResolver:()=>aC,Manifest:()=>Ot,MessageName:()=>wr,MultiFetcher:()=>hE,PackageExtensionStatus:()=>BL,PackageExtensionType:()=>IL,PeerWarningType:()=>rk,Project:()=>Pt,Report:()=>Xs,ReportError:()=>zt,SettingsType:()=>D1,StreamReport:()=>Nt,TAG_REGEXP:()=>FE,TelemetryManager:()=>uC,ThrowReport:()=>Qi,VirtualFetcher:()=>gE,WindowsLinkType:()=>xb,Workspace:()=>cC,WorkspaceFetcher:()=>mE,WorkspaceResolver:()=>Xn,YarnVersion:()=>rn,execUtils:()=>Ur,folderUtils:()=>YP,formatUtils:()=>de,hashUtils:()=>wn,httpUtils:()=>nn,miscUtils:()=>_e,nodeUtils:()=>Ji,parseMessageName:()=>AS,reportOptionDeprecations:()=>LE,scriptUtils:()=>un,semverUtils:()=>kr,stringifyMessageName:()=>Wu,structUtils:()=>W,tgzUtils:()=>Xi,treeUtils:()=>$s});var Ye=Et(()=>{Db();WP();Gl();nh();Ib();jl();vb();BU();Qf();bo();Xfe();ipe();u_();S1();S1();ope();A_();ape();f_();fE();fS();cM();zpe();Yl();O1();Xpe();S_();AM();fM();vd();P_();L1();Cne()});var nhe=_((K_t,l2)=>{"use strict";var TAt=process.env.TERM_PROGRAM==="Hyper",NAt=process.platform==="win32",ehe=process.platform==="linux",F_={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"},the=Object.assign({},F_,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),rhe=Object.assign({},F_,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:ehe?"\u25B8":"\u276F",pointerSmall:ehe?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});l2.exports=NAt&&!TAt?the:rhe;Reflect.defineProperty(l2.exports,"common",{enumerable:!1,value:F_});Reflect.defineProperty(l2.exports,"windows",{enumerable:!1,value:the});Reflect.defineProperty(l2.exports,"other",{enumerable:!1,value:rhe})});var Kc=_((V_t,R_)=>{"use strict";var LAt=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),OAt=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,ihe=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=n=>{let u=n.open=`\x1B[${n.codes[0]}m`,A=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(A)&&(h=h.replace(p,A+u));let I=u+h+A;return E?I.replace(/\r*\n/g,`${A}$&${u}`):I},n},r=(n,u,A)=>typeof n=="function"?n(u):n.wrap(u,A),o=(n,u)=>{if(n===""||n==null)return"";if(t.enabled===!1)return n;if(t.visible===!1)return"";let A=""+n,p=A.includes(` +`),h=u.length;for(h>0&&u.includes("unstyle")&&(u=[...new Set(["unstyle",...u])].reverse());h-- >0;)A=r(t.styles[u[h]],A,p);return A},a=(n,u,A)=>{t.styles[n]=e({name:n,codes:u}),(t.keys[A]||(t.keys[A]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>o(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=OAt,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&t.ansiRegex.test(n)),t.alias=(n,u)=>{let A=typeof u=="string"?t[u]:u;if(typeof A!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");A.stack||(Reflect.defineProperty(A,"name",{value:n}),t.styles[n]=A,A.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>o(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(A.stack):A.stack,p}})},t.theme=n=>{if(!LAt(n))throw new TypeError("Expected theme to be an object");for(let u of Object.keys(n))t.alias(u,n[u]);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=nhe(),t.define=a,t};R_.exports=ihe();R_.exports.create=ihe});var No=_(sn=>{"use strict";var MAt=Object.prototype.toString,rc=Kc(),she=!1,T_=[],ohe={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};sn.longest=(t,e)=>t.reduce((r,o)=>Math.max(r,e?o[e].length:o.length),0);sn.hasColor=t=>!!t&&rc.hasColor(t);var ik=sn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);sn.nativeType=t=>MAt.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");sn.isAsyncFn=t=>sn.nativeType(t)==="asyncfunction";sn.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";sn.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;sn.scrollDown=(t=[])=>[...t.slice(1),t[0]];sn.scrollUp=(t=[])=>[t.pop(),...t];sn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,o)=>r.index>o.index?1:r.index{let o=t.length,a=r===o?0:r<0?o-1:r,n=t[e];t[e]=t[a],t[a]=n};sn.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};sn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};sn.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:o=` +`+r,width:a=80}=e,n=(o+r).match(/[^\S\n]/g)||[];a-=n.length;let u=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,A=t.trim(),p=new RegExp(u,"g"),h=A.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(o)};sn.unmute=t=>{let e=t.stack.find(o=>rc.keys.color.includes(o));return e?rc[e]:t.stack.find(o=>o.slice(2)==="bg")?rc[e.slice(2)]:o=>o};sn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";sn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o));if(e){let o=rc["bg"+sn.pascal(e)];return o?o.black:t}let r=t.stack.find(o=>o.slice(0,2)==="bg");return r?rc[r.slice(2).toLowerCase()]||t:rc.none};sn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o)),r=t.stack.find(o=>o.slice(0,2)==="bg");if(e&&!r)return rc[ohe[e]||e];if(r){let o=r.slice(2).toLowerCase(),a=ohe[o];return a&&rc["bg"+sn.pascal(a)]||t}return rc.none};sn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),o=e>=12?"pm":"am";e=e%12;let a=e===0?12:e,n=r<10?"0"+r:r;return a+":"+n+" "+o};sn.set=(t={},e="",r)=>e.split(".").reduce((o,a,n,u)=>{let A=u.length-1>n?o[a]||{}:r;return!sn.isObject(A)&&n{let o=t[e]==null?e.split(".").reduce((a,n)=>a&&a[n],t):t[e];return o??r};sn.mixin=(t,e)=>{if(!ik(t))return e;if(!ik(e))return t;for(let r of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,r);if(o.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&ik(o.value)){let a=Object.getOwnPropertyDescriptor(t,r);ik(a.value)?t[r]=sn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,o)}else Reflect.defineProperty(t,r,o);else Reflect.defineProperty(t,r,o)}return t};sn.merge=(...t)=>{let e={};for(let r of t)sn.mixin(e,r);return e};sn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let o of Object.keys(r)){let a=r[o];typeof a=="function"?sn.define(t,o,a.bind(e)):sn.define(t,o,a)}};sn.onExit=t=>{let e=(r,o)=>{she||(she=!0,T_.forEach(a=>a()),r===!0&&process.exit(128+o))};T_.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),T_.push(t)};sn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};sn.defineExport=(t,e,r)=>{let o;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){o=a},get(){return o?o():r()}})}});var ahe=_(hC=>{"use strict";hC.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"};hC.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};hC.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};hC.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};hC.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 uhe=_((X_t,che)=>{"use strict";var lhe=ve("readline"),UAt=ahe(),_At=/^(?:\x1b)([a-zA-Z0-9])$/,HAt=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,jAt={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 GAt(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function qAt(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var sk=(t="",e={})=>{let r,o={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=o.sequence||""),o.sequence=o.sequence||t||o.name,t==="\r")o.raw=void 0,o.name="return";else if(t===` +`)o.name="enter";else if(t===" ")o.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x1B\x7F"||t==="\x1B\b")o.name="backspace",o.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")o.name="escape",o.meta=t.length===2;else if(t===" "||t==="\x1B ")o.name="space",o.meta=t.length===2;else if(t<="")o.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),o.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")o.name="number";else if(t.length===1&&t>="a"&&t<="z")o.name=t;else if(t.length===1&&t>="A"&&t<="Z")o.name=t.toLowerCase(),o.shift=!0;else if(r=_At.exec(t))o.meta=!0,o.shift=/^[A-Z]$/.test(r[1]);else if(r=HAt.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(o.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),u=(r[3]||r[5]||1)-1;o.ctrl=!!(u&4),o.meta=!!(u&10),o.shift=!!(u&1),o.code=n,o.name=jAt[n],o.shift=GAt(n)||o.shift,o.ctrl=qAt(n)||o.ctrl}return o};sk.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let o=lhe.createInterface({terminal:!0,input:r});lhe.emitKeypressEvents(r,o);let a=(A,p)=>e(A,sk(A,p),o),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),o.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),o.pause(),o.close()}};sk.action=(t,e,r)=>{let o={...UAt,...r};return e.ctrl?(e.action=o.ctrl[e.name],e):e.option&&o.option?(e.action=o.option[e.name],e):e.shift?(e.action=o.shift[e.name],e):(e.action=o.keys[e.name],e)};che.exports=sk});var fhe=_((Z_t,Ahe)=>{"use strict";Ahe.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let o=e[r];typeof o=="number"&&(o={interval:o}),YAt(t,r,o)}};function YAt(t,e,r={}){let o=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;o.frames=r.frames||[],o.loading=!0;let n=setInterval(()=>{o.ms=Date.now()-o.start,o.tick++,t.render()},a);return o.stop=()=>{o.loading=!1,clearInterval(n)},Reflect.defineProperty(o,"interval",{value:n}),t.once("close",()=>o.stop()),o.stop}});var hhe=_(($_t,phe)=>{"use strict";var{define:WAt,width:KAt}=No(),N_=class{constructor(e){let r=e.options;WAt(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=KAt(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"}};phe.exports=N_});var dhe=_((e8t,ghe)=>{"use strict";var L_=No(),eo=Kc(),O_={default:eo.noop,noop:eo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||L_.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||L_.complement(this.primary)},primary:eo.cyan,success:eo.green,danger:eo.magenta,strong:eo.bold,warning:eo.yellow,muted:eo.dim,disabled:eo.gray,dark:eo.dim.gray,underline:eo.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}};O_.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(eo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(eo.visible=t.styles.visible);let e=L_.merge({},O_,t.styles);delete e.merge;for(let r of Object.keys(eo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});for(let r of Object.keys(eo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});return e};ghe.exports=O_});var yhe=_((t8t,mhe)=>{"use strict";var M_=process.platform==="win32",Vf=Kc(),VAt=No(),U_={...Vf.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Vf.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:Vf.symbols.question,submitted:Vf.symbols.check,cancelled:Vf.symbols.cross},separator:{pending:Vf.symbols.pointerSmall,submitted:Vf.symbols.middot,cancelled:Vf.symbols.middot},radio:{off:M_?"( )":"\u25EF",on:M_?"(*)":"\u25C9",disabled:M_?"(|)":"\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"]};U_.merge=t=>{let e=VAt.merge({},Vf.symbols,U_,t.symbols);return delete e.merge,e};mhe.exports=U_});var Che=_((r8t,Ehe)=>{"use strict";var JAt=dhe(),zAt=yhe(),XAt=No();Ehe.exports=t=>{t.options=XAt.merge({},t.options.theme,t.options),t.symbols=zAt.merge(t.options),t.styles=JAt.merge(t.options)}});var Dhe=_((Bhe,vhe)=>{"use strict";var whe=process.env.TERM_PROGRAM==="Apple_Terminal",ZAt=Kc(),__=No(),Vc=vhe.exports=Bhe,Di="\x1B[",Ihe="\x07",H_=!1,Ph=Vc.code={bell:Ihe,beep:Ihe,beginning:`${Di}G`,down:`${Di}J`,esc:Di,getPosition:`${Di}6n`,hide:`${Di}?25l`,line:`${Di}2K`,lineEnd:`${Di}K`,lineStart:`${Di}1K`,restorePosition:Di+(whe?"8":"u"),savePosition:Di+(whe?"7":"s"),screen:`${Di}2J`,show:`${Di}?25h`,up:`${Di}1J`},qd=Vc.cursor={get hidden(){return H_},hide(){return H_=!0,Ph.hide},show(){return H_=!1,Ph.show},forward:(t=1)=>`${Di}${t}C`,backward:(t=1)=>`${Di}${t}D`,nextLine:(t=1)=>`${Di}E`.repeat(t),prevLine:(t=1)=>`${Di}F`.repeat(t),up:(t=1)=>t?`${Di}${t}A`:"",down:(t=1)=>t?`${Di}${t}B`:"",right:(t=1)=>t?`${Di}${t}C`:"",left:(t=1)=>t?`${Di}${t}D`:"",to(t,e){return e?`${Di}${e+1};${t+1}H`:`${Di}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?qd.left(-t):t>0?qd.right(t):"",r+=e<0?qd.up(-e):e>0?qd.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:o,input:a,prompt:n,size:u,value:A}=t;if(o=__.isPrimitive(o)?String(o):"",a=__.isPrimitive(a)?String(a):"",A=__.isPrimitive(A)?String(A):"",u){let p=Vc.cursor.up(u)+Vc.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Vc.cursor.left(h)),p}if(A||e){let p=!a&&!!o?-o.length:-a.length+r;return e&&(p-=e.length),a===""&&o&&!n.includes(o)&&(p+=o.length),Vc.cursor.move(p)}}},j_=Vc.erase={screen:Ph.screen,up:Ph.up,down:Ph.down,line:Ph.line,lineEnd:Ph.lineEnd,lineStart:Ph.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return j_.line+qd.to(0);let r=n=>[...ZAt.unstyle(n)].length,o=t.split(/\r?\n/),a=0;for(let n of o)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(j_.line+qd.prevLine()).repeat(a-1)+j_.line+qd.to(0)}});var gC=_((n8t,Phe)=>{"use strict";var $At=ve("events"),She=Kc(),G_=uhe(),eft=fhe(),tft=hhe(),rft=Che(),Ra=No(),Yd=Dhe(),c2=class extends $At{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,rft(this),eft(this),this.state=new tft(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=ift(this.options.margin),this.setMaxListeners(0),nft(this)}async keypress(e,r={}){this.keypressed=!0;let o=G_.action(e,G_(e,r),this.options.actions);this.state.keypress=o,this.emit("keypress",e,o),this.emit("state",this.state.clone());let a=this.options[o.action]||this[o.action]||this.dispatch;if(typeof a=="function")return await a.call(this,e,o);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Yd.code.beep)}cursorHide(){this.stdout.write(Yd.cursor.hide()),Ra.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Yd.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(Yd.cursor.down(e)+Yd.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:o}=this.sections(),{cursor:a,initial:n="",input:u="",value:A=""}=this,p=this.state.size=o.length,h={after:r,cursor:a,initial:n,input:u,prompt:e,size:p,value:A},E=Yd.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:o}=this.state;o=She.unstyle(o);let a=She.unstyle(e),n=a.indexOf(o),u=a.slice(0,n),p=a.slice(n).split(` +`),h=p[0],E=p[p.length-1],v=(o+(r?" "+r:"")).length,x=ve.call(this,this.value),this.result=()=>o.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,o){let{options:a,state:n,symbols:u,timers:A}=this,p=A&&A[e];n.timer=p;let h=a[e]||n[e]||u[e],E=r&&r[e]!=null?r[e]:await h;if(E==="")return E;let I=await this.resolve(E,n,r,o);return!I&&r&&r[e]?this.resolve(h,n,r,o):I}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,o=this.state;return o.timer=r,Ra.isObject(e)&&(e=e[o.status]||e.pending),Ra.hasColor(e)?e:(this.styles[o.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return Ra.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,o=this.state;o.timer=r;let a=e[o.status]||e.pending||o.separator,n=await this.resolve(a,o);return Ra.isObject(n)&&(n=n[o.status]||n.pending),Ra.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let o=await this.element("pointer",e,r);if(typeof o=="string"&&Ra.hasColor(o))return o;if(o){let a=this.styles,n=this.index===r,u=n?a.primary:h=>h,A=await this.resolve(o[n?"on":"off"]||o,this.state),p=Ra.hasColor(A)?A:u(A);return n?p:" ".repeat(A.length)}}async indicator(e,r){let o=await this.element("indicator",e,r);if(typeof o=="string"&&Ra.hasColor(o))return o;if(o){let a=this.styles,n=e.enabled===!0,u=n?a.success:a.dark,A=o[n?"on":"off"]||o;return Ra.hasColor(A)?A:u(A)}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 Ra.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 Ra.resolve(this,e,...r)}get base(){return c2.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Ra.height(this.stdout,25)}get width(){return this.options.columns||Ra.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,o=[r,e].find(this.isValue.bind(this));return this.isValue(o)?o:this.initial}static get prompt(){return e=>new this(e).run()}};function nft(t){let e=a=>t[a]===void 0||typeof t[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],o=["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)?o.includes(a)||(t[a]=n.bind(t)):typeof t[a]!="function"&&(t[a]=n)}}function ift(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?` +`:" ",o=[];for(let a=0;a<4;a++){let n=r(a);e[a]?o.push(n.repeat(e[a])):o.push("")}return o}Phe.exports=c2});var khe=_((i8t,xhe)=>{"use strict";var sft=No(),bhe={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 bhe.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}};xhe.exports=(t,e={})=>{let r=sft.merge({},bhe,e.roles);return r[t]||r.default}});var u2=_((s8t,Rhe)=>{"use strict";var oft=Kc(),aft=gC(),lft=khe(),ok=No(),{reorder:q_,scrollUp:cft,scrollDown:uft,isObject:Qhe,swap:Aft}=ok,Y_=class extends aft{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:o,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");Qhe(r)&&(r=Object.keys(r)),Array.isArray(r)?(o!=null&&(this.index=this.findIndex(o)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(o!=null&&(r=o),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 o=[],a=0,n=async(u,A)=>{typeof u=="function"&&(u=await u.call(this)),u instanceof Promise&&(u=await u);for(let p=0;p(this.state.loadingChoices=!1,u))}async toChoice(e,r,o){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=lft(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,ok.define(e,"parent",o),e.level=o?o.level+1:1,e.indent==null&&(e.indent=o?o.indent+" ":e.indent||""),e.path=o?o.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,oft.unstyle(e.message).length));let u={...e};return e.reset=(A=u.input,p=u.value)=>{for(let h of Object.keys(u))e[h]=u[h];e.input=A,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,o){let a=await this.toChoice(e,r,o);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,o){let a={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,o);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 o=e.parent;for(;o;){let a=o.choices.filter(n=>this.isDisabled(n));o.enabled=a.every(n=>n.enabled===!0),o=o.parent}return Fhe(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=o=>{let a=Number(o);if(a>this.choices.length-1)return this.alert();let n=this.focused,u=this.choices.find(A=>a===A.index);if(!u.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(u)===-1){let A=q_(this.choices),p=A.indexOf(u);if(n.index>p){let h=A.slice(p,p+this.limit),E=A.filter(I=>!h.includes(I));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=A.slice(h).concat(A.slice(0,h))}}return this.index=this.choices.indexOf(u),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(o=>{let a=this.choices.length,n=this.num,u=(A=!1,p)=>{clearTimeout(this.numberTimeout),A&&(p=r(n)),this.num="",o(p)};if(n==="0"||n.length===1&&Number(n+"0")>a)return u(!0);if(Number(n)>a)return u(!1,this.alert());this.numberTimeout=setTimeout(()=>u(!0),this.delay)})}home(){return this.choices=q_(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=q_(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,o=this.index;return this.options.scroll===!1&&o===0?this.alert():e>r&&o===0?this.scrollUp():(this.index=(o-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===r-1?this.alert():e>r&&o===r-1?this.scrollDown():(this.index=(o+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=cft(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=uft(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){Aft(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(o=>e[o]===!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(o=>!this.isDisabled(o));return e.enabled&&r.every(o=>this.isEnabled(o))}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((o,a)=>(o[a]=this.find(a,r),o),{})}filter(e,r){let a=typeof e=="function"?e:(A,p)=>[A.name,p].includes(e),u=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?u.map(A=>A[r]):u}find(e,r){if(Qhe(e))return r?e[r]:e;let a=typeof e=="function"?e:(u,A)=>[u.name,A].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(u=>u.newChoice))return this.alert();let{reorder:r,sort:o}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&o!==!0&&(n=ok.reorder(n)),this.value=a?n.map(u=>u.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(o=>o.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 o=this.find(r);o&&(this.initial=o.index,this.focus(o,!0))}}}get choices(){return Fhe(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:o}=this,a=e.limit||this._limit||r.limit||o.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 Fhe(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(ok.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let o=r.choices.filter(a=>!t.isDisabled(a));r.enabled=o.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}Rhe.exports=Y_});var bh=_((o8t,The)=>{"use strict";var fft=u2(),W_=No(),K_=class extends fft{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 o=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!W_.hasColor(o)&&(o=this.styles.strong(o)),this.resolve(o,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||""),u=await this.resolve(e.hint,this.state,e,r);u&&!W_.hasColor(u)&&(u=this.styles.muted(u));let A=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],A+a+n,p,this.margin[1],u].filter(Boolean).join(" ");return e.role==="heading"?h():e.disabled?(W_.hasColor(p)||(p=this.styles.disabled(p)),h()):(o&&(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,u)=>await this.renderChoice(n,u)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let o=this.margin[0]+r.join(` +`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,o].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,o="",a=await this.header(),n=await this.prefix(),u=await this.separator(),A=await this.message();this.options.promptLine!==!1&&(o=[n,A,u,""].join(" "),this.state.prompt=o);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();p&&(o+=p),h&&!o.includes(h)&&(o+=" "+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,o,E,I].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};The.exports=K_});var Lhe=_((a8t,Nhe)=>{"use strict";var pft=bh(),hft=(t,e)=>{let r=t.toLowerCase();return o=>{let n=o.toLowerCase().indexOf(r),u=e(o.slice(n,n+r.length));return n>=0?o.slice(0,n)+u+o.slice(n+r.length):o}},V_=class extends pft{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:o}=this.state;return this.input=o.slice(0,r)+e+o.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 o=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(o))}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=hft(this.input,e),o=this.choices;this.choices=o.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=o}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Nhe.exports=V_});var z_=_((l8t,Ohe)=>{"use strict";var J_=No();Ohe.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:o="",pos:a,showCursor:n=!0,color:u}=e,A=u||t.styles.placeholder,p=J_.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),E=r,I=" ",v=h(I);if(t.blink&&t.blink.off===!0&&(h=R=>R,v=""),n&&a===0&&o===""&&r==="")return h(I);if(n&&a===0&&(r===o||r===""))return h(o[0])+A(o.slice(1));o=J_.isPrimitive(o)?`${o}`:"",r=J_.isPrimitive(r)?`${r}`:"";let x=o&&o.startsWith(r)&&o!==r,C=x?h(o[r.length]):v;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),C=""),n===!1&&(C=""),x){let R=t.styles.unstyle(E+C);return E+C+A(o.slice(R.length))}return E+C}});var ak=_((c8t,Mhe)=>{"use strict";var gft=Kc(),dft=bh(),mft=z_(),X_=class extends dft{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:o,input:a}=r;return r.value=r.input=a.slice(0,o)+e+a.slice(o),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:o}=e;return e.value=e.input=o.slice(0,r-1)+o.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:o}=e;if(o[r]===void 0)return this.alert();let a=`${o}`.slice(0,r)+`${o}`.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:o}=e;return r&&r.startsWith(o)&&o!==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 o=await this.resolve(e.separator,this.state,e,r)||":";return o?" "+this.styles.disabled(o):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:o,styles:a}=this,{cursor:n,initial:u="",name:A,hint:p,input:h=""}=e,{muted:E,submitted:I,primary:v,danger:x}=a,C=p,R=this.index===r,L=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),J=e.message;this.align==="right"&&(J=J.padStart(this.longest+1," ")),this.align==="left"&&(J=J.padEnd(this.longest+1," "));let te=this.values[A]=h||u,ae=h?"success":"dark";await L.call(e,te,this.state)!==!0&&(ae="danger");let fe=a[ae],ce=fe(await this.indicator(e,r))+(e.pad||""),me=this.indent(e),he=()=>[me,ce,J+U,h,C].filter(Boolean).join(" ");if(o.submitted)return J=gft.unstyle(J),h=I(h),C="",he();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=mft(this,{input:h,initial:u,pos:n,showCursor:R,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[A]=await e.result.call(this,te,e,r)),R&&(J=v(J)),e.error?h+=(h?" ":"")+x(e.error.trim()):e.hint&&(h+=(h?" ":"")+E(e.hint.trim())),he()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Mhe.exports=X_});var Z_=_((u8t,_he)=>{"use strict";var yft=ak(),Eft=()=>{throw new Error("expected prompt to have a custom authenticate method")},Uhe=(t=Eft)=>{class e extends yft{constructor(o){super(o)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(o){return Uhe(o)}}return e};_he.exports=Uhe()});var Ghe=_((A8t,jhe)=>{"use strict";var Cft=Z_();function wft(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hhe=(t=wft)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(o){return this.options.showPassword?o:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(o.length))}}];class r extends Cft.create(t){constructor(a){super({...a,choices:e})}static create(a){return Hhe(a)}}return r};jhe.exports=Hhe()});var lk=_((f8t,qhe)=>{"use strict";var Ift=gC(),{isPrimitive:Bft,hasColor:vft}=No(),$_=class extends Ift{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:o}=this;return o.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 Bft(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return vft(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=this.styles.muted(this.default),A=[o,n,u,a].filter(Boolean).join(" ");this.state.prompt=A;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),I=await this.error()||await this.hint(),v=await this.footer();I&&!A.includes(I)&&(E+=" "+I),A+=" "+E,this.clear(r),this.write([p,A,v].filter(Boolean).join(` +`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};qhe.exports=$_});var Whe=_((p8t,Yhe)=>{"use strict";var Dft=lk(),e8=class extends Dft{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};Yhe.exports=e8});var Vhe=_((h8t,Khe)=>{"use strict";var Sft=bh(),Pft=ak(),dC=Pft.prototype,t8=class extends Sft{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let o=this.focused,a=o.parent||{};return!o.editable&&!a.editable&&(e==="a"||e==="i")?super[e]():dC.dispatch.call(this,e,r)}append(e,r){return dC.append.call(this,e,r)}delete(e,r){return dC.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?dC.next.call(this):super.next()}prev(){return this.focused.editable?dC.prev.call(this):super.prev()}async indicator(e,r){let o=e.indicator||"",a=e.editable?o: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?dC.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 o=r.parent?this.value[r.parent.name]:this.value;if(r.editable?o=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(o=r.enabled===!0),e=await r.validate(o,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)}};Khe.exports=t8});var Wd=_((g8t,Jhe)=>{"use strict";var bft=gC(),xft=z_(),{isPrimitive:kft}=No(),r8=class extends bft{constructor(e){super(e),this.initial=kft(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let o=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!o||o.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:o}=this.state;this.input=`${o}`.slice(0,r)+e+`${o}`.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),o=this.input.slice(e),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=o,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):xft(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),o=await this.separator(),a=await this.message(),n=[r,a,o].filter(Boolean).join(" ");this.state.prompt=n;let u=await this.header(),A=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!A.includes(p)&&(A+=" "+p),n+=" "+A,this.clear(e),this.write([u,n,h].filter(Boolean).join(` +`)),this.restore()}};Jhe.exports=r8});var Xhe=_((d8t,zhe)=>{"use strict";var Qft=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),ck=t=>Qft(t).filter(Boolean);zhe.exports=(t,e={},r="")=>{let{past:o=[],present:a=""}=e,n,u;switch(t){case"prev":case"undo":return n=o.slice(0,o.length-1),u=o[o.length-1]||"",{past:ck([r,...n]),present:u};case"next":case"redo":return n=o.slice(1),u=o[0]||"",{past:ck([...n,r]),present:u};case"save":return{past:ck([...o,r]),present:""};case"remove":return u=ck(o.filter(A=>A!==r)),a="",u.length&&(a=u.pop()),{past:u,present:a};default:throw new Error(`Invalid action: "${t}"`)}}});var i8=_((m8t,$he)=>{"use strict";var Fft=Wd(),Zhe=Xhe(),n8=class extends Fft{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let o=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:o},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Zhe(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=Zhe("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};$he.exports=n8});var t0e=_((y8t,e0e)=>{"use strict";var Rft=Wd(),s8=class extends Rft{format(){return""}};e0e.exports=s8});var n0e=_((E8t,r0e)=>{"use strict";var Tft=Wd(),o8=class extends Tft{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()}};r0e.exports=o8});var s0e=_((C8t,i0e)=>{"use strict";var Nft=bh(),a8=class extends Nft{constructor(e){super({...e,multiple:!0})}};i0e.exports=a8});var c8=_((w8t,o0e)=>{"use strict";var Lft=Wd(),l8=class extends Lft{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,o=this.toNumber(this.input);return o>this.max+r?this.alert():(this.input=`${o+r}`,this.render())}down(e){let r=e||this.minor,o=this.toNumber(this.input);return othis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};o0e.exports=l8});var l0e=_((I8t,a0e)=>{a0e.exports=c8()});var u0e=_((B8t,c0e)=>{"use strict";var Oft=Wd(),u8=class extends Oft{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)):""}};c0e.exports=u8});var p0e=_((v8t,f0e)=>{"use strict";var Mft=Kc(),Uft=u2(),A0e=No(),A8=class extends Uft{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((o,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 o=0;o=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(o=>` ${o.name} - ${o.message}`)].map(o=>this.styles.muted(o)).join(` +`)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let o=this.scaleLength-r.join("").length,a=Math.round(o/(r.length-1)),u=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),A=" ".repeat(this.widths[0]);return this.margin[3]+A+this.margin[1]+u}scaleIndicator(e,r,o){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,o);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 o=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term==="Hyper"?"":" ";return o.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!A0e.hasColor(n)&&(n=this.styles.muted(n));let u=C=>this.margin[3]+C.replace(/\s+$/,"").padEnd(this.widths[0]," "),A=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),I=this.margin[1]+this.margin[3];this.scaleLength=Mft.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-I.length);let x=A0e.wordWrap(h,{width:this.widths[0],newline:A}).split(` +`).map(C=>u(C)+this.margin[1]);return o&&(E=this.styles.info(E),x=x.map(C=>this.styles.info(C))),x[0]+=E,this.linebreak&&x.push(""),[p+a,x.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),o=await this.renderScaleHeading();return this.margin[0]+[o,...r.map(a=>a.join(" "))].join(` +`)}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u="";this.options.promptLine!==!1&&(u=[o,n,a,""].join(" "),this.state.prompt=u);let A=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),I=await this.renderChoices(),v=await this.footer(),x=this.emptyError;p&&(u+=p),E&&!u.includes(E)&&(u+=" "+E),e&&!p&&!I.trim()&&this.multiple&&x!=null&&(u+=this.styles.danger(x)),this.clear(r),this.write([A,u,h,I,v].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)}};f0e.exports=A8});var d0e=_((D8t,g0e)=>{"use strict";var h0e=Kc(),_ft=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",p8=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=_ft(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},Hft=async(t={},e={},r=o=>o)=>{let o=new Set,a=t.fields||[],n=t.template,u=[],A=[],p=[],h=1;typeof n=="function"&&(n=await n());let E=-1,I=()=>n[++E],v=()=>n[E+1],x=C=>{C.line=h,u.push(C)};for(x({type:"bos",value:""});Eae.name===U.key);U.field=a.find(ae=>ae.name===U.key),te||(te=new p8(U),A.push(te)),te.lines.push(U.line-1);continue}let R=u[u.length-1];R.type==="text"&&R.line===h?R.value+=C:x({type:"text",value:C})}return x({type:"eos",value:""}),{input:n,tabstops:u,unique:o,keys:p,items:A}};g0e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),o={...e.values,...e.initial},{tabstops:a,items:n,keys:u}=await Hft(e,o),A=f8("result",t,e),p=f8("format",t,e),h=f8("validate",t,e,!0),E=t.isValue.bind(t);return async(I={},v=!1)=>{let x=0;I.required=r,I.items=n,I.keys=u,I.output="";let C=async(J,te,ae,fe)=>{let ce=await h(J,te,ae,fe);return ce===!1?"Invalid field "+ae.name:ce};for(let J of a){let te=J.value,ae=J.key;if(J.type!=="template"){te&&(I.output+=te);continue}if(J.type==="template"){let fe=n.find(we=>we.name===ae);e.required===!0&&I.required.add(fe.name);let ce=[fe.input,I.values[fe.value],fe.value,te].find(E),he=(fe.field||{}).message||J.inner;if(v){let we=await C(I.values[ae],I,fe,x);if(we&&typeof we=="string"||we===!1){I.invalid.set(ae,we);continue}I.invalid.delete(ae);let g=await A(I.values[ae],I,fe,x);I.output+=h0e.unstyle(g);continue}fe.placeholder=!1;let Be=te;te=await p(te,I,fe,x),ce!==te?(I.values[ae]=ce,te=t.styles.typing(ce),I.missing.delete(he)):(I.values[ae]=void 0,ce=`<${he}>`,te=t.styles.primary(ce),fe.placeholder=!0,I.required.has(ae)&&I.missing.add(he)),I.missing.has(he)&&I.validating&&(te=t.styles.warning(ce)),I.invalid.has(ae)&&I.validating&&(te=t.styles.danger(ce)),x===I.index&&(Be!==te?te=t.styles.underline(te):te=t.styles.heading(h0e.unstyle(te))),x++}te&&(I.output+=te)}let R=I.output.split(` +`).map(J=>" "+J),L=n.length,U=0;for(let J of n)I.invalid.has(J.name)&&J.lines.forEach(te=>{R[te][0]===" "&&(R[te]=I.styles.danger(I.symbols.bullet)+R[te].slice(1))}),t.isValue(I.values[J.name])&&U++;return I.completed=(U/L*100).toFixed(0),I.output=R.join(` +`),I.output}};function f8(t,e,r,o){return(a,n,u,A)=>typeof u.field[t]=="function"?u.field[t].call(e,a,n,u,A):[o,a].find(p=>e.isValue(p))}});var y0e=_((S8t,m0e)=>{"use strict";var jft=Kc(),Gft=d0e(),qft=gC(),h8=class extends qft{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Gft(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 o=this.getItem(),a=o.input.slice(0,this.cursor),n=o.input.slice(this.cursor);this.input=o.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),o=e.input.slice(0,this.cursor-1);this.input=e.input=`${o}${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:o,size:a}=this.state,n=[this.options.newline,` +`].find(J=>J!=null),u=await this.prefix(),A=await this.separator(),p=await this.message(),h=[u,p,A].filter(Boolean).join(" ");this.state.prompt=h;let E=await this.header(),I=await this.error()||"",v=await this.hint()||"",x=o?"":await this.interpolate(this.state),C=this.state.key=r[e]||"",R=await this.format(C),L=await this.footer();R&&(h+=" "+R),v&&!R&&this.state.completed===0&&(h+=" "+v),this.clear(a);let U=[E,h,x,L,I.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:o,index:a}=this.state,n=r.find(u=>u.name===o[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:o,values:a}=this.state;if(e.size){let A="";for(let[p,h]of e)A+=`Invalid ${p}: ${h} +`;return this.state.error=A,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let u=jft.unstyle(o).split(` +`).map(A=>A.slice(1)).join(` +`);return this.value={values:a,result:u},super.submit()}};m0e.exports=h8});var C0e=_((P8t,E0e)=>{"use strict";var Yft="(Use + to sort)",Wft=bh(),g8=class extends Wft{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Yft].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let o=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} - `+o:n+o}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};E0e.exports=g8});var I0e=_((b8t,w0e)=>{"use strict";var Kft=u2(),d8=class extends Kft{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(o=>this.styles.muted(o)),this.state.header=r.join(` + `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let o of r)o.scale=Vft(5,this.options),o.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],o=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!o,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 o=this.index===r,a=this.term==="Hyper",n=a?9:8,u=a?"":" ",A=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=te=>(te?this.styles.success("\u25C9"):"\u25EF")+u,E=r+1+".",I=o?this.styles.heading:this.styles.noop,v=await this.resolve(e.message,this.state,e,r),x=this.indent(e),C=x+e.scale.map((te,ae)=>h(ae===e.scaleIdx)).join(A),R=te=>te===e.scaleIdx?I(te):te,L=x+e.scale.map((te,ae)=>R(ae)).join(p),U=()=>[E,v].filter(Boolean).join(" "),J=()=>[U(),C,L," "].filter(Boolean).join(` +`);return o&&(C=this.styles.cyan(C),L=this.styles.cyan(L)),J()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(o,a)=>await this.renderChoice(o,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,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=[o,n,a].filter(Boolean).join(" ");this.state.prompt=u;let A=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();(p||!h)&&(u+=" "+p),h&&!u.includes(h)&&(u+=" "+h),e&&!p&&!E&&this.multiple&&this.type!=="form"&&(u+=this.styles.danger(this.emptyError)),this.clear(r),this.write([u,A,E,I].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 Vft(t,e={}){if(Array.isArray(e.scale))return e.scale.map(o=>({...o}));let r=[];for(let o=1;o{B0e.exports=i8()});var S0e=_((k8t,D0e)=>{"use strict";var Jft=lk(),m8=class extends Jft{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=o=>this.styles.primary.underline(o);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(),o=await this.prefix(),a=await this.separator(),n=await this.message(),u=await this.format(),A=await this.error()||await this.hint(),p=await this.footer(),h=[o,n,a,u].join(" ");this.state.prompt=h,A&&!h.includes(A)&&(h+=" "+A),this.clear(e),this.write([r,h,p].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};D0e.exports=m8});var b0e=_((Q8t,P0e)=>{"use strict";var zft=bh(),y8=class extends zft{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 o=await super.toChoices(e,r);if(o.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>o.length)throw new Error("Please specify the index of the correct answer from the list of choices");return o}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)}}};P0e.exports=y8});var k0e=_(E8=>{"use strict";var x0e=No(),As=(t,e)=>{x0e.defineExport(E8,t,e),x0e.defineExport(E8,t.toLowerCase(),e)};As("AutoComplete",()=>Lhe());As("BasicAuth",()=>Ghe());As("Confirm",()=>Whe());As("Editable",()=>Vhe());As("Form",()=>ak());As("Input",()=>i8());As("Invisible",()=>t0e());As("List",()=>n0e());As("MultiSelect",()=>s0e());As("Numeral",()=>l0e());As("Password",()=>u0e());As("Scale",()=>p0e());As("Select",()=>bh());As("Snippet",()=>y0e());As("Sort",()=>C0e());As("Survey",()=>I0e());As("Text",()=>v0e());As("Toggle",()=>S0e());As("Quiz",()=>b0e())});var F0e=_((R8t,Q0e)=>{Q0e.exports={ArrayPrompt:u2(),AuthPrompt:Z_(),BooleanPrompt:lk(),NumberPrompt:c8(),StringPrompt:Wd()}});var f2=_((T8t,T0e)=>{"use strict";var R0e=ve("assert"),w8=ve("events"),xh=No(),Jc=class extends w8{constructor(e,r){super(),this.options=xh.merge({},e),this.answers={...r}}register(e,r){if(xh.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}R0e.equal(typeof r,"function","expected a function");let o=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[o]=r:this.prompts[o]=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(xh.merge({},this.options,r))}catch(o){return Promise.reject(o)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=xh.merge({},this.options,e),{type:o,name:a}=e,{set:n,get:u}=xh;if(typeof o=="function"&&(o=await o.call(this,e,this.answers)),!o)return this.answers[a];R0e(this.prompts[o],`Prompt "${o}" is not registered`);let A=new this.prompts[o](r),p=u(this.answers,a);A.state.answers=this.answers,A.enquirer=this,a&&A.on("submit",E=>{this.emit("answer",a,E,A),n(this.answers,a,E)});let h=A.emit.bind(A);return A.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit("prompt",A,this),r.autofill&&p!=null?(A.value=A.input=p,r.autofill==="show"&&await A.submit()):p=A.value=await A.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||gC()}static get prompts(){return k0e()}static get types(){return F0e()}static get prompt(){let e=(r,...o)=>{let a=new this(...o),n=a.emit.bind(a);return a.emit=(...u)=>(e.emit(...u),n(...u)),a.prompt(r)};return xh.mixinEmitter(e,new w8),e}};xh.mixinEmitter(Jc,new w8);var C8=Jc.prompts;for(let t of Object.keys(C8)){let e=t.toLowerCase(),r=o=>new C8[t](o).run();Jc.prompt[e]=r,Jc[e]=r,Jc[t]||Reflect.defineProperty(Jc,t,{get:()=>C8[t]})}var A2=t=>{xh.defineExport(Jc,t,()=>Jc.types[t])};A2("ArrayPrompt");A2("AuthPrompt");A2("BooleanPrompt");A2("NumberPrompt");A2("StringPrompt");T0e.exports=Jc});var d2=_((dHt,H0e)=>{var rpt=zx();function npt(t,e,r){var o=t==null?void 0:rpt(t,e);return o===void 0?r:o}H0e.exports=npt});var q0e=_((IHt,G0e)=>{function ipt(t,e){for(var r=-1,o=t==null?0:t.length;++r{var spt=dd(),opt=zS();function apt(t,e){return t&&spt(e,opt(e),t)}Y0e.exports=apt});var V0e=_((vHt,K0e)=>{var lpt=dd(),cpt=qy();function upt(t,e){return t&&lpt(e,cpt(e),t)}K0e.exports=upt});var z0e=_((DHt,J0e)=>{var Apt=dd(),fpt=qS();function ppt(t,e){return Apt(t,fpt(t),e)}J0e.exports=ppt});var P8=_((SHt,X0e)=>{var hpt=GS(),gpt=tP(),dpt=qS(),mpt=WN(),ypt=Object.getOwnPropertySymbols,Ept=ypt?function(t){for(var e=[];t;)hpt(e,dpt(t)),t=gpt(t);return e}:mpt;X0e.exports=Ept});var $0e=_((PHt,Z0e)=>{var Cpt=dd(),wpt=P8();function Ipt(t,e){return Cpt(t,wpt(t),e)}Z0e.exports=Ipt});var b8=_((bHt,ege)=>{var Bpt=YN(),vpt=P8(),Dpt=qy();function Spt(t){return Bpt(t,Dpt,vpt)}ege.exports=Spt});var rge=_((xHt,tge)=>{var Ppt=Object.prototype,bpt=Ppt.hasOwnProperty;function xpt(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&bpt.call(t,"index")&&(r.index=t.index,r.input=t.input),r}tge.exports=xpt});var ige=_((kHt,nge)=>{var kpt=$S();function Qpt(t,e){var r=e?kpt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}nge.exports=Qpt});var oge=_((QHt,sge)=>{var Fpt=/\w*$/;function Rpt(t){var e=new t.constructor(t.source,Fpt.exec(t));return e.lastIndex=t.lastIndex,e}sge.exports=Rpt});var Age=_((FHt,uge)=>{var age=pd(),lge=age?age.prototype:void 0,cge=lge?lge.valueOf:void 0;function Tpt(t){return cge?Object(cge.call(t)):{}}uge.exports=Tpt});var pge=_((RHt,fge)=>{var Npt=$S(),Lpt=ige(),Opt=oge(),Mpt=Age(),Upt=oL(),_pt="[object Boolean]",Hpt="[object Date]",jpt="[object Map]",Gpt="[object Number]",qpt="[object RegExp]",Ypt="[object Set]",Wpt="[object String]",Kpt="[object Symbol]",Vpt="[object ArrayBuffer]",Jpt="[object DataView]",zpt="[object Float32Array]",Xpt="[object Float64Array]",Zpt="[object Int8Array]",$pt="[object Int16Array]",eht="[object Int32Array]",tht="[object Uint8Array]",rht="[object Uint8ClampedArray]",nht="[object Uint16Array]",iht="[object Uint32Array]";function sht(t,e,r){var o=t.constructor;switch(e){case Vpt:return Npt(t);case _pt:case Hpt:return new o(+t);case Jpt:return Lpt(t,r);case zpt:case Xpt:case Zpt:case $pt:case eht:case tht:case rht:case nht:case iht:return Upt(t,r);case jpt:return new o;case Gpt:case Wpt:return new o(t);case qpt:return Opt(t);case Ypt:return new o;case Kpt:return Mpt(t)}}fge.exports=sht});var gge=_((THt,hge)=>{var oht=qI(),aht=Ju(),lht="[object Map]";function cht(t){return aht(t)&&oht(t)==lht}hge.exports=cht});var Ege=_((NHt,yge)=>{var uht=gge(),Aht=WS(),dge=KS(),mge=dge&&dge.isMap,fht=mge?Aht(mge):uht;yge.exports=fht});var wge=_((LHt,Cge)=>{var pht=qI(),hht=Ju(),ght="[object Set]";function dht(t){return hht(t)&&pht(t)==ght}Cge.exports=dht});var Dge=_((OHt,vge)=>{var mht=wge(),yht=WS(),Ige=KS(),Bge=Ige&&Ige.isSet,Eht=Bge?yht(Bge):mht;vge.exports=Eht});var x8=_((MHt,xge)=>{var Cht=HS(),wht=q0e(),Iht=rP(),Bht=W0e(),vht=V0e(),Dht=sL(),Sht=eP(),Pht=z0e(),bht=$0e(),xht=zN(),kht=b8(),Qht=qI(),Fht=rge(),Rht=pge(),Tht=aL(),Nht=Hl(),Lht=UI(),Oht=Ege(),Mht=il(),Uht=Dge(),_ht=zS(),Hht=qy(),jht=1,Ght=2,qht=4,Sge="[object Arguments]",Yht="[object Array]",Wht="[object Boolean]",Kht="[object Date]",Vht="[object Error]",Pge="[object Function]",Jht="[object GeneratorFunction]",zht="[object Map]",Xht="[object Number]",bge="[object Object]",Zht="[object RegExp]",$ht="[object Set]",e0t="[object String]",t0t="[object Symbol]",r0t="[object WeakMap]",n0t="[object ArrayBuffer]",i0t="[object DataView]",s0t="[object Float32Array]",o0t="[object Float64Array]",a0t="[object Int8Array]",l0t="[object Int16Array]",c0t="[object Int32Array]",u0t="[object Uint8Array]",A0t="[object Uint8ClampedArray]",f0t="[object Uint16Array]",p0t="[object Uint32Array]",ri={};ri[Sge]=ri[Yht]=ri[n0t]=ri[i0t]=ri[Wht]=ri[Kht]=ri[s0t]=ri[o0t]=ri[a0t]=ri[l0t]=ri[c0t]=ri[zht]=ri[Xht]=ri[bge]=ri[Zht]=ri[$ht]=ri[e0t]=ri[t0t]=ri[u0t]=ri[A0t]=ri[f0t]=ri[p0t]=!0;ri[Vht]=ri[Pge]=ri[r0t]=!1;function Ak(t,e,r,o,a,n){var u,A=e&jht,p=e&Ght,h=e&qht;if(r&&(u=a?r(t,o,a,n):r(t)),u!==void 0)return u;if(!Mht(t))return t;var E=Nht(t);if(E){if(u=Fht(t),!A)return Sht(t,u)}else{var I=Qht(t),v=I==Pge||I==Jht;if(Lht(t))return Dht(t,A);if(I==bge||I==Sge||v&&!a){if(u=p||v?{}:Tht(t),!A)return p?bht(t,vht(u,t)):Pht(t,Bht(u,t))}else{if(!ri[I])return a?t:{};u=Rht(t,I,A)}}n||(n=new Cht);var x=n.get(t);if(x)return x;n.set(t,u),Uht(t)?t.forEach(function(L){u.add(Ak(L,e,r,L,t,n))}):Oht(t)&&t.forEach(function(L,U){u.set(U,Ak(L,e,r,U,t,n))});var C=h?p?kht:xht:p?Hht:_ht,R=E?void 0:C(t);return wht(R||t,function(L,U){R&&(U=L,L=t[U]),Iht(u,U,Ak(L,e,r,U,t,n))}),u}xge.exports=Ak});var k8=_((UHt,kge)=>{var h0t=x8(),g0t=1,d0t=4;function m0t(t){return h0t(t,g0t|d0t)}kge.exports=m0t});var Q8=_((_Ht,Qge)=>{var y0t=I_();function E0t(t,e,r){return t==null?t:y0t(t,e,r)}Qge.exports=E0t});var Lge=_((WHt,Nge)=>{var C0t=Object.prototype,w0t=C0t.hasOwnProperty;function I0t(t,e){return t!=null&&w0t.call(t,e)}Nge.exports=I0t});var Mge=_((KHt,Oge)=>{var B0t=Lge(),v0t=B_();function D0t(t,e){return t!=null&&v0t(t,e,B0t)}Oge.exports=D0t});var _ge=_((VHt,Uge)=>{function S0t(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Uge.exports=S0t});var jge=_((JHt,Hge)=>{var P0t=zx(),b0t=pU();function x0t(t,e){return e.length<2?t:P0t(t,b0t(e,0,-1))}Hge.exports=x0t});var R8=_((zHt,Gge)=>{var k0t=Gd(),Q0t=_ge(),F0t=jge(),R0t=lC();function T0t(t,e){return e=k0t(e,t),t=F0t(t,e),t==null||delete t[R0t(Q0t(e))]}Gge.exports=T0t});var T8=_((XHt,qge)=>{var N0t=R8();function L0t(t,e){return t==null?!0:N0t(t,e)}qge.exports=L0t});var Jge=_((S6t,U0t)=>{U0t.exports={name:"@yarnpkg/cli",version:"4.1.0",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-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-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":"^3.2.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-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"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=18.12.0"}}});var G8=_((n9t,ade)=>{"use strict";ade.exports=function(e,r){r===!0&&(r=0);var o="";if(typeof e=="string")try{o=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(o=e.protocol);var a=o.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var cde=_((i9t,lde)=>{"use strict";var igt=G8();function sgt(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=igt(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}lde.exports=sgt});var fde=_((s9t,Ade)=>{"use strict";var ogt=cde();function agt(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var lgt=agt(ogt),cgt="text/plain",ugt="us-ascii",ude=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Agt=(t,{stripHash:e})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:o,data:a,hash:n}=r.groups,u=o.split(";");n=e?"":n;let A=!1;u[u.length-1]==="base64"&&(u.pop(),A=!0);let p=(u.shift()||"").toLowerCase(),E=[...u.map(I=>{let[v,x=""]=I.split("=").map(C=>C.trim());return v==="charset"&&(x=x.toLowerCase(),x===ugt)?"":`${v}${x?`=${x}`:""}`}).filter(Boolean)];return A&&E.push("base64"),(E.length>0||p&&p!==cgt)&&E.unshift(p),`data:${E.join(";")},${A?a.trim():a}${n?`#${n}`:""}`};function fgt(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 Agt(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 u=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,A=0,p="";for(;;){let E=u.exec(a.pathname);if(!E)break;let I=E[0],v=E.index,x=a.pathname.slice(A,v);p+=x.replace(/\/{2,}/g,"/"),p+=I,A=v+I.length}let h=a.pathname.slice(A,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 u=a.pathname.split("/"),A=u[u.length-1];ude(A,e.removeDirectoryIndex)&&(u=u.slice(0,-1),a.pathname=u.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 u of[...a.searchParams.keys()])ude(u,e.removeQueryParameters)&&a.searchParams.delete(u);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 q8=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,o=n=>{let u=new Error(n);throw u.subject_url=t,u};(typeof t!="string"||!t.trim())&&o("Invalid url."),t.length>q8.MAX_INPUT_LENGTH&&o("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),e&&(typeof e!="object"&&(e={stripHash:!1}),t=fgt(t,e));let a=lgt.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):o("URL parsing failed.")}return a};q8.MAX_INPUT_LENGTH=2048;Ade.exports=q8});var gde=_((o9t,hde)=>{"use strict";var pgt=G8();function pde(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=pgt(t);if(t=t.substring(t.indexOf("://")+3),pde(e))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!t.match(r)&&t.indexOf("@"){"use strict";var hgt=fde(),dde=gde();function ggt(t){var e=hgt(t);return e.token="",e.password==="x-oauth-basic"?e.token=e.user:e.user==="x-token-auth"&&(e.token=e.password),dde(e.protocols)||e.protocols.length===0&&dde(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol="file",e.protocols=["file"]),e.href=e.href.replace(/\/$/,""),e}mde.exports=ggt});var Cde=_((l9t,Ede)=>{"use strict";var dgt=yde();function Y8(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=dgt(t),o=r.resource.split("."),a=null;switch(r.toString=function(L){return Y8.stringify(this,L)},r.source=o.length>2?o.slice(1-o.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=o[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 u=a.indexOf("-",2),A=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),E=a.indexOf("src",2),I=a.indexOf("raw",2),v=a.indexOf("edit",2);n=u>0?u-1:A>0?A-1:p>0?p-1:h>0?h-1:E>0?E-1:I>0?I-1:v>0?v-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 x=a.length>n&&a[n+1]==="-"?n+1:n;a.length>x+2&&["raw","src","blob","tree","edit"].indexOf(a[x+1])>=0&&(r.filepathtype=a[x+1],r.ref=a[x+2],a.length>x+3&&(r.filepath=a.slice(x+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 C=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,R=C.exec(r.pathname);return R!=null&&(r.source="bitbucket-server",R[1]==="users"?r.owner="~"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[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}Y8.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",o=t.user||"git",a=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+o+"@"+t.resource+r+"/"+t.full_name+a:o+"@"+t.resource+":"+t.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+o+"@"+t.resource+r+"/"+t.full_name+a;case"http":case"https":var n=t.token?mgt(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+n+t.resource+r+"/"+ygt(t)+a;default:return t.href}};function mgt(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function ygt(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}Ede.exports=Y8});var Lde=_((H5t,Nde)=>{var xgt=Hb(),kgt=eP(),Qgt=Hl(),Fgt=pE(),Rgt=w_(),Tgt=lC(),Ngt=N1();function Lgt(t){return Qgt(t)?xgt(t,Tgt):Fgt(t)?[t]:kgt(Rgt(Ngt(t)))}Nde.exports=Lgt});function _gt(t,e){return e===1&&Ugt.has(t[0])}function B2(t){let e=Array.isArray(t)?t:(0,Ude.default)(t);return e.map((o,a)=>Ogt.test(o)?`[${o}]`:Mgt.test(o)&&!_gt(e,a)?`.${o}`:`[${JSON.stringify(o)}]`).join("").replace(/^\./,"")}function Hgt(t,e){let r=[];if(e.methodName!==null&&r.push(de.pretty(t,e.methodName,de.Type.CODE)),e.file!==null){let o=[];o.push(de.pretty(t,e.file,de.Type.PATH)),e.line!==null&&(o.push(de.pretty(t,e.line,de.Type.NUMBER)),e.column!==null&&o.push(de.pretty(t,e.column,de.Type.NUMBER))),r.push(`(${o.join(de.pretty(t,":","grey"))})`)}return r.join(" ")}function gk(t,{manifestUpdates:e,reportedErrors:r},{fix:o}={}){let a=new Map,n=new Map,u=[...r.keys()].map(A=>[A,new Map]);for(let[A,p]of[...u,...e]){let h=r.get(A)?.map(x=>({text:x,fixable:!1}))??[],E=!1,I=t.getWorkspaceByCwd(A),v=I.manifest.exportTo({});for(let[x,C]of p){if(C.size>1){let R=[...C].map(([L,U])=>{let J=de.pretty(t.configuration,L,de.Type.INSPECT),te=U.size>0?Hgt(t.configuration,U.values().next().value):null;return te!==null?` +${J} at ${te}`:` +${J}`}).join("");h.push({text:`Conflict detected in constraint targeting ${de.pretty(t.configuration,x,de.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=C,L=(0,Ode.default)(v,x);if(JSON.stringify(L)===JSON.stringify(R))continue;if(!o){let U=typeof L>"u"?`Missing field ${de.pretty(t.configuration,x,de.Type.CODE)}; expected ${de.pretty(t.configuration,R,de.Type.INSPECT)}`:typeof R>"u"?`Extraneous field ${de.pretty(t.configuration,x,de.Type.CODE)} currently set to ${de.pretty(t.configuration,L,de.Type.INSPECT)}`:`Invalid field ${de.pretty(t.configuration,x,de.Type.CODE)}; expected ${de.pretty(t.configuration,R,de.Type.INSPECT)}, found ${de.pretty(t.configuration,L,de.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>"u"?(0,_de.default)(v,x):(0,Mde.default)(v,x,R),E=!0}E&&a.set(I,v)}h.length>0&&n.set(I,h)}return{changedWorkspaces:a,remainingErrors:n}}function Hde(t,{configuration:e}){let r={children:[]};for(let[o,a]of t){let n=[];for(let A of a){let p=A.text.split(/\n/);A.fixable&&(p[0]=`${de.pretty(e,"\u2699","gray")} ${p[0]}`),n.push({value:de.tuple(de.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:de.tuple(de.Type.NO_HINT,h)}))})}let u={value:de.tuple(de.Type.LOCATOR,o.anchoredLocator),children:_e.sortMap(n,A=>A.value[1])};r.children.push(u)}return r.children=_e.sortMap(r.children,o=>o.value[1]),r}var Ode,Mde,Ude,_de,wC,Ogt,Mgt,Ugt,v2=Et(()=>{Ye();Ode=$e(d2()),Mde=$e(Q8()),Ude=$e(Lde()),_de=$e(T8()),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 o=Object.hasOwn(e,r)?e[r]:void 0;if(typeof o>"u")continue;_e.getArrayWithDefault(this.indexes[r],o).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 o=[],a;for(let[u,A]of r){let p=u,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){o.push([p,A]);continue}let E=new Set(h.get(A)??[]);if(E.size===0)return[];if(typeof a>"u")a=E;else for(let I of a)E.has(I)||a.delete(I);if(a.size===0)break}let n=[...a??[]];return o.length>0&&(n=n.filter(u=>{for(let[A,p]of o)if(!(typeof p<"u"?Object.hasOwn(u,A)&&u[A]===p:Object.hasOwn(u,A)===!1))return!1;return!0})),n}},Ogt=/^[0-9]+$/,Mgt=/^[a-zA-Z0-9_]+$/,Ugt=new Set(["scripts",...Ot.allDependencies])});var jde=_(($5t,sH)=>{var jgt;(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(o,a,n){var u=n.args[0],A=n.args[1];if(!t.type.is_variable(A)&&!t.type.is_integer(A))o.throw_error(t.error.type("integer",A,n.indicator));else if(t.type.is_integer(A)&&A.value<0)o.throw_error(t.error.domain("not_less_than_zero",A,n.indicator));else{var p=new t.type.Term("length",[u,new t.type.Num(0,!1),A]);t.type.is_integer(A)&&(p=new t.type.Term(",",[p,new t.type.Term("!",[])])),o.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(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(A))o.throw_error(t.error.type("integer",A,n.indicator));else if(A.value<0)o.throw_error(t.error.domain("not_less_than_zero",A,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=new t.type.Term("[]"),E=0;E0;I--)E[I].equals(E[I-1])&&E.splice(I,1);for(var v=new t.type.Term("[]"),I=E.length-1;I>=0;I--)v=new t.type.Term(".",[E[I],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,A])),a.substitution,a)])}}},"msort/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else{for(var p=[],h=u;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type("list",u,n.indicator));else{for(var E=p.sort(t.compare),I=new t.type.Term("[]"),v=E.length-1;v>=0;v--)I=new t.type.Term(".",[E[v],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[I,A])),a.substitution,a)])}}},"keysort/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else{for(var p=[],h,E=u;E.indicator==="./2";){if(h=E.args[0],t.type.is_variable(h)){o.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!=="-/2"){o.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))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))o.throw_error(t.error.type("list",u,n.indicator));else{for(var I=p.sort(t.compare),v=new t.type.Term("[]"),x=I.length-1;x>=0;x--)v=new t.type.Term(".",[new t.type.Term("-",[I[x],I[x].pair]),v]),delete I[x].pair;o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,A])),a.substitution,a)])}}},"take/3":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type("integer",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator==="./2";)E.push(I.args[0]),I=I.args[1],h--;if(h===0){for(var v=new t.type.Term("[]"),h=E.length-1;h>=0;h--)v=new t.type.Term(".",[E[h],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,p])),a.substitution,a)])}}},"drop/3":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type("integer",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator==="./2";)E.push(I.args[0]),I=I.args[1],h--;h===0&&o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[I,p])),a.substitution,a)])}},"reverse/2":function(o,a,n){var u=n.args[0],A=n.args[1],p=t.type.is_instantiated_list(u),h=t.type.is_instantiated_list(A);if(t.type.is_variable(u)&&t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(u)&&!t.type.is_fully_list(u))o.throw_error(t.error.type("list",u,n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!p&&!h)o.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?u:A,I=new t.type.Term("[]",[]);E.indicator==="./2";)I=new t.type.Term(".",[E.args[0],I]),E=E.args[1];o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[I,p?A:u])),a.substitution,a)])}},"list_to_set/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else{for(var p=u,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!=="[]/0")o.throw_error(t.error.type("list",u,n.indicator));else{for(var E=[],I=new t.type.Term("[]",[]),v,x=0;x=0;x--)I=new t.type.Term(".",[E[x],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[A,I])),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 sH<"u"?sH.exports=function(o){t=o,new t.type.Module("lists",e(),r)}:new t.type.Module("lists",e(),r)})(jgt)});var nme=_(Yr=>{"use strict";var $d=process.platform==="win32",oH="aes-256-cbc",Ggt="sha256",Yde="The current environment doesn't support interactive reading from TTY.",Yn=ve("fs"),Gde=process.binding("tty_wrap").TTY,lH=ve("child_process"),c0=ve("path"),cH={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},zf="none",Xc,BC,qde=!1,l0,mk,aH,qgt=0,hH="",Zd=[],yk,Wde=!1,uH=!1,D2=!1;function Kde(t){function e(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(o){return"#"+o.charCodeAt(0)+";"})}return mk.concat(function(r){var o=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?t[a]&&o.push("--"+a):r[a]==="string"&&t[a]&&o.push("--"+a,e(t[a]))}),o}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function Ygt(t,e){function r(U){var J,te="",ae;for(aH=aH||ve("os").tmpdir();;){J=c0.join(aH,U+te);try{ae=Yn.openSync(J,"wx")}catch(fe){if(fe.code==="EEXIST"){te++;continue}else throw fe}Yn.closeSync(ae);break}return J}var o,a,n,u={},A,p,h=r("readline-sync.stdout"),E=r("readline-sync.stderr"),I=r("readline-sync.exit"),v=r("readline-sync.done"),x=ve("crypto"),C,R,L;C=x.createHash(Ggt),C.update(""+process.pid+qgt+++Math.random()),L=C.digest("hex"),R=x.createDecipher(oH,L),o=Kde(t),$d?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+l0+"%Q%"+o.map(function(U){return" %Q%"+U+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+I+"%Q%%Q%) 2>%Q%"+E+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+oH+"%Q% %Q%"+L+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+v+"%Q%"]):(a="/bin/sh",n=["-c",'("'+l0+'"'+o.map(function(U){return" '"+U.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+I+'") 2>"'+E+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+oH+'" "'+L+'" >"'+h+'"; echo 1 >"'+v+'"']),D2&&D2("_execFileSync",o);try{lH.spawn(a,n,e)}catch(U){u.error=new Error(U.message),u.error.method="_execFileSync - spawn",u.error.program=a,u.error.args=n}for(;Yn.readFileSync(v,{encoding:t.encoding}).trim()!=="1";);return(A=Yn.readFileSync(I,{encoding:t.encoding}).trim())==="0"?u.input=R.update(Yn.readFileSync(h,{encoding:"binary"}),"hex",t.encoding)+R.final(t.encoding):(p=Yn.readFileSync(E,{encoding:t.encoding}).trim(),u.error=new Error(Yde+(p?` +`+p:"")),u.error.method="_execFileSync",u.error.program=a,u.error.args=n,u.error.extMessage=p,u.error.exitCode=+A),Yn.unlinkSync(h),Yn.unlinkSync(E),Yn.unlinkSync(I),Yn.unlinkSync(v),u}function Wgt(t){var e,r={},o,a={env:process.env,encoding:t.encoding};if(l0||($d?process.env.PSModulePath?(l0="powershell.exe",mk=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(l0="cscript.exe",mk=["//nologo",__dirname+"\\read.cs.js"]):(l0="/bin/sh",mk=[__dirname+"/read.sh"])),$d&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),lH.execFileSync){e=Kde(t),D2&&D2("execFileSync",e);try{r.input=lH.execFileSync(l0,e,a)}catch(n){o=n.stderr?(n.stderr+"").trim():"",r.error=new Error(Yde+(o?` +`+o:"")),r.error.method="execFileSync",r.error.program=l0,r.error.args=e,r.error.extMessage=o,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Ygt(t,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),t.display=""),r}function AH(t){var e="",r=t.display,o=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=Wgt(t);if(n.error)throw n.error;return n.input}return uH&&uH(t),function(){var n,u,A;function p(){return n||(n=process.binding("fs"),u=process.binding("constants")),n}if(typeof zf=="string")if(zf=null,$d){if(A=function(h){var E=h.replace(/^\D+/,"").split("."),I=0;return(E[0]=+E[0])&&(I+=E[0]*1e4),(E[1]=+E[1])&&(I+=E[1]*100),(E[2]=+E[2])&&(I+=E[2]),I}(process.version),!(A>=20302&&A<40204||A>=5e4&&A<50100||A>=50600&&A<60200)&&process.stdin.isTTY)process.stdin.pause(),zf=process.stdin.fd,BC=process.stdin._handle;else try{zf=p().open("CONIN$",u.O_RDWR,parseInt("0666",8)),BC=new Gde(zf,!0)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else{try{Xc=Yn.openSync("\\\\.\\CON","w")}catch{}if(typeof Xc!="number")try{Xc=p().open("CONOUT$",u.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{zf=Yn.openSync("/dev/tty","r"),BC=process.stdin._handle}catch{}}else try{zf=Yn.openSync("/dev/tty","r"),BC=new Gde(zf,!1)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else try{Xc=Yn.openSync("/dev/tty","w")}catch{}}}(),function(){var n,u,A=!t.hideEchoBack&&!t.keyIn,p,h,E,I,v;yk="";function x(C){return C===qde?!0:BC.setRawMode(C)!==0?!1:(qde=C,!0)}if(Wde||!BC||typeof Xc!="number"&&(t.display||!A)){e=a();return}if(t.display&&(Yn.writeSync(Xc,t.display),t.display=""),!t.displayOnly){if(!x(!A)){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&&(u=new RegExp("[^"+t.limit+"]","g"+(t.caseSensitive?"":"i")));;){E=0;try{E=Yn.readSync(zf,p,0,h)}catch(C){if(C.code!=="EOF"){x(!1),e+=a();return}}if(E>0?(I=p.toString(t.encoding,0,E),yk+=I):(I=` +`,yk+=String.fromCharCode(0)),I&&typeof(v=(I.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(I=v,n=!0),I&&(I=I.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),I&&u&&(I=I.replace(u,"")),I&&(A||(t.hideEchoBack?t.mask&&Yn.writeSync(Xc,new Array(I.length+1).join(t.mask)):Yn.writeSync(Xc,I)),e+=I),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!A&&!o&&Yn.writeSync(Xc,` +`),x(!1)}}(),t.print&&!o&&t.print(r+(t.displayOnly?"":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+` +`),t.encoding),t.displayOnly?"":hH=t.keepWhitespace||t.keyIn?e:e.trim()}function Kgt(t,e){var r=[];function o(a){a!=null&&(Array.isArray(a)?a.forEach(o):(!e||e(a))&&r.push(a))}return o(t),r}function gH(t){return t.replace(/[\x00-\x7f]/g,function(e){return"\\x"+("00"+e.charCodeAt().toString(16)).substr(-2)})}function Rs(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]=="boolean"&&(r=t.shift(),r&&(e=Object.keys(cH),t.unshift(cH))),t.reduce(function(o,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 u;if(!!a.hasOwnProperty(n))switch(u=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":u=u!=null?u+"":"",u&&n!=="limitMessage"&&(u=u.replace(/[\r\n]/g,"")),o[n]=u;break;case"bufferSize":!isNaN(u=parseInt(u,10))&&typeof u=="number"&&(o[n]=u);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":o[n]=!!u;break;case"limit":case"trueValue":case"falseValue":o[n]=Kgt(u,function(A){var p=typeof A;return p==="string"||p==="number"||p==="function"||A instanceof RegExp}).map(function(A){return typeof A=="string"?A.replace(/[\r\n]/g,""):A});break;case"print":case"phContent":case"preCheck":o[n]=typeof u=="function"?u:void 0;break;case"prompt":case"display":o[n]=u??"";break}})),o},{})}function fH(t,e,r){return e.some(function(o){var a=typeof o;return a==="string"?r?t===o:t.toLowerCase()===o.toLowerCase():a==="number"?parseFloat(t)===o:a==="function"?o(t):o instanceof RegExp?o.test(t):!1})}function dH(t,e){var r=c0.normalize($d?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return t=c0.normalize(t),e?t.replace(/^~(?=\/|\\|$)/,r):t.replace(new RegExp("^"+gH(r)+"(?=\\/|\\\\|$)",$d?"i":""),"~")}function vC(t,e){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",o=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(u,A,p,h,E,I){var v;return A||typeof(v=e(E))!="string"?p:v?(h||"")+v+(I||""):""}return t.replace(o,n).replace(a,n)}function Vde(t,e,r){var o,a=[],n=-1,u=0,A="",p;function h(E,I){return I.length>3?(E.push(I[0]+"..."+I[I.length-1]),p=!0):I.length&&(E=E.concat(I)),E}return o=t.reduce(function(E,I){return E.concat((I+"").split(""))},[]).reduce(function(E,I){var v,x;return e||(I=I.toLowerCase()),v=/^\d$/.test(I)?1:/^[A-Z]$/.test(I)?2:/^[a-z]$/.test(I)?3:0,r&&v===0?A+=I:(x=I.charCodeAt(0),v&&v===n&&x===u+1?a.push(I):(E=h(E,a),a=[I],n=v),u=x),E},[]),o=h(o,a),A&&(o.push(A),p=!0),{values:o,suppressed:p}}function Jde(t,e){return t.join(t.length>2?", ":e?" / ":"/")}function zde(t,e){var r,o,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":o=e[e.hasOwnProperty(t+"Src")?t+"Src":t],e.keyIn?(a=Vde(o,e.caseSensitive),o=a.values):o=o.filter(function(u){var A=typeof u;return A==="string"||A==="number"}),r=Jde(o,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=e[e.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||t!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=hH;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),t==="CWD"?r=c0.basename(r):t==="cwdHome"&&(r=dH(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+t.replace(/^./,function(u){return u.toUpperCase()})+"String"]();break;default:typeof(n=(t.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=Zd[Zd.length-n]||"")}return r}function Xde(t){var e=/^(.)-(.)$/.exec(t),r="",o,a,n,u;if(!e)return null;for(o=e[1].charCodeAt(0),a=e[2].charCodeAt(0),u=o +And the length must be: $`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(x){return x==="charlist"?r.text:x==="length"?o+"..."+a:null}}),u,A,p,h,E,I,v;for(e=e||{},u=vC(e.charlist?e.charlist+"":"$",Xde),(isNaN(o=parseInt(e.min,10))||typeof o!="number")&&(o=12),(isNaN(a=parseInt(e.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+gH(u)+"]{"+o+","+a+"}$"),r=Vde([u],n.caseSensitive,!0),r.text=Jde(r.values,r.suppressed),A=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;!v;)n.limit=h,n.limitMessage=E,I=Yr.question(t,n),n.limit=[I,""],n.limitMessage=p,v=Yr.question(A,n);return I};function eme(t,e,r){var o;function a(n){return o=r(n),!isNaN(o)&&typeof o=="number"}return Yr.question(t,Rs({limitMessage:"Input valid number, please."},e,{limit:a,cd:!1})),o}Yr.questionInt=function(t,e){return eme(t,e,function(r){return parseInt(r,10)})};Yr.questionFloat=function(t,e){return eme(t,e,parseFloat)};Yr.questionPath=function(t,e){var r,o="",a=Rs({hideEchoBack:!1,limitMessage:`$Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var u,A,p;n=dH(n,!0),o="";function h(E){E.split(/\/|\\/).reduce(function(I,v){var x=c0.resolve(I+=v+c0.sep);if(!Yn.existsSync(x))Yn.mkdirSync(x);else if(!Yn.statSync(x).isDirectory())throw new Error("Non directory already exists: "+x);return I},"")}try{if(u=Yn.existsSync(n),r=u?Yn.realpathSync(n):c0.resolve(n),!e.hasOwnProperty("exists")&&!u||typeof e.exists=="boolean"&&e.exists!==u)return o=(u?"Already exists":"No such file or directory")+": "+r,!1;if(!u&&e.create&&(e.isDirectory?h(r):(h(c0.dirname(r)),Yn.closeSync(Yn.openSync(r,"w"))),r=Yn.realpathSync(r)),u&&(e.min||e.max||e.isFile||e.isDirectory)){if(A=Yn.statSync(r),e.isFile&&!A.isFile())return o="Not file: "+r,!1;if(e.isDirectory&&!A.isDirectory())return o="Not directory: "+r,!1;if(e.min&&A.size<+e.min||e.max&&A.size>+e.max)return o="Size "+A.size+" is out of range: "+r,!1}if(typeof e.validate=="function"&&(p=e.validate(r))!==!0)return typeof p=="string"&&(o=p),!1}catch(E){return o=E+"",!1}return!0},phContent:function(n){return n==="error"?o:n!=="min"&&n!=="max"?null:e.hasOwnProperty(n)?e[n]+"":""}});return e=e||{},t==null&&(t='Input path (you can "cd" and "pwd"): '),Yr.question(t,a),r};function tme(t,e){var r={},o={};return typeof t=="object"?(Object.keys(t).forEach(function(a){typeof t[a]=="function"&&(o[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=pH(a),n=r.args[0]||"",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&o.hasOwnProperty(n)?o[n].apply(a,r.args.slice(1)):o.hasOwnProperty("_")?o._.apply(a,r.args):null,{res:a,forceNext:!1}},o.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return e.caseSensitive||(a=a.toLowerCase()),o.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=pH(a),r.hRes=typeof t=="function"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}Yr.promptCL=function(t,e){var r=Rs({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),o=tme(t,r);return r.limit=o.limit,r.preCheck=o.preCheck,Yr.prompt(r),o.args};Yr.promptLoop=function(t,e){for(var r=Rs({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(Yr.prompt(r)););};Yr.promptCLLoop=function(t,e){var r=Rs({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),o=tme(t,r);for(r.limit=o.limit,r.preCheck=o.preCheck;Yr.prompt(r),!o.hRes;);};Yr.promptSimShell=function(t){return Yr.prompt(Rs({hideEchoBack:!1,history:!0},t,{prompt:function(){return $d?"$>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$$ "}()}))};function rme(t,e,r){var o;return t==null&&(t="Are you sure? "),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s*:?\s*$/,"")+" [y/n]: "),o=Yr.keyIn(t,Rs(e,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof o=="boolean"?o:""}Yr.keyInYN=function(t,e){return rme(t,e)};Yr.keyInYNStrict=function(t,e){return rme(t,e,"yn")};Yr.keyInPause=function(t,e){t==null&&(t="Continue..."),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s+$/,"")+" (Hit any key)"),Yr.keyIn(t,Rs({limit:null},e,{hideEchoBack:!0,mask:""}))};Yr.keyInSelect=function(t,e,r){var o=Rs({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={},u=49,A=` +`;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(u);a+=E,n[E]=h,A+="["+E+"] "+(p+"").trim()+` +`,u=u===57?97:u+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,A+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` +`),o.limit=a,A+=` +`,e==null&&(e="Choose one from list: "),(e+="")&&((!r||r.guide!==!1)&&(e=e.replace(/\s*:?\s*$/,"")+" [$]: "),A+=e),n[Yr.keyIn(A,o).toLowerCase()]};Yr.getRawInput=function(){return yk};function S2(t,e){var r;return e.length&&(r={},r[t]=e[0]),Yr.setDefaultOptions(r)[t]}Yr.setPrint=function(){return S2("print",arguments)};Yr.setPrompt=function(){return S2("prompt",arguments)};Yr.setEncoding=function(){return S2("encoding",arguments)};Yr.setMask=function(){return S2("mask",arguments)};Yr.setBufferSize=function(){return S2("bufferSize",arguments)}});var mH=_((t7t,hl)=>{(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,X){return X===this.text.length||X>this.text.length?"end_of_file":this.text.substring(X,X+z)},put:function(z,X){return X==="end_of_file"?(this.text+=z,!0):X==="past_end_of_file"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var Z=n(this.text[Math.floor(z/2)],0);return z%2===0?Z&255:Z/256>>>0},put_byte:function(z,X){var Z=X==="end_of_stream"?this.text.length:Math.floor(X/2);if(this.text.length>>0,ie=(ie&255)<<8|z&255):(ie=ie&255,ie=(z&255)<<8|ie&255),this.text.length===Z?this.text+=u(ie):this.text=this.text.substring(0,Z)+u(ie)+this.text.substring(Z+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 L(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,X=[],Z=!1;if(w){var ie=this.tokens[w-1];y=ie.len,P=L(this.thread,this.text.substr(ie.len)),F=ie.line,z=ie.start}else P=this.text;if(/^\s*$/.test(P))return null;for(;P!=="";){var Pe=[],Ne=!1;if(/^\n/.exec(P)!==null){F++,z=0,y++,P=P.replace(/\n/,""),Z=!0;continue}for(var ot in R)if(R.hasOwnProperty(ot)){var dt=R[ot].exec(P);dt&&Pe.push({value:dt[0],name:ot,matches:dt})}if(!Pe.length)return this.set_last_tokens([{value:P,matches:[],name:"lexical",line:F,start:z}]);var ie=r(Pe,function(Qr,mr){return Qr.value.length>=mr.value.length?Qr:mr});switch(ie.start=z,ie.line=F,P=P.replace(ie.value,""),z+=ie.value.length,y+=ie.value.length,ie.name){case"atom":ie.raw=ie.value,ie.value.charAt(0)==="'"&&(ie.value=v(ie.value.substr(1,ie.value.length-2),"'"),ie.value===null&&(ie.name="lexical",ie.value="unknown escape sequence"));break;case"number":ie.float=ie.value.substring(0,2)!=="0x"&&ie.value.match(/[.eE]/)!==null&&ie.value!=="0'.",ie.value=C(ie.value),ie.blank=Ne;break;case"string":var Gt=ie.value.charAt(0);ie.value=v(ie.value.substr(1,ie.value.length-2),Gt),ie.value===null&&(ie.name="lexical",ie.value="unknown escape sequence");break;case"whitespace":var $t=X[X.length-1];$t&&($t.space=!0),Ne=!0;continue;case"r_bracket":X.length>0&&X[X.length-1].name==="l_bracket"&&(ie=X.pop(),ie.name="atom",ie.value="{}",ie.raw="{}",ie.space=!1);break;case"r_brace":X.length>0&&X[X.length-1].name==="l_brace"&&(ie=X.pop(),ie.name="atom",ie.value="[]",ie.raw="[]",ie.space=!1);break}ie.len=y,X.push(ie),Ne=!1}var bt=this.set_last_tokens(X);return bt.length===0?null:bt};function J(w,P,y,F,z){if(!P[y])return{type:A,value:b.error.syntax(P[y-1],"expression expected",!0)};var X;if(F==="0"){var Z=P[y];switch(Z.name){case"number":return{type:p,len:y+1,value:new b.type.Num(Z.value,Z.float)};case"variable":return{type:p,len:y+1,value:new b.type.Var(Z.value)};case"string":var ie;switch(w.get_flag("double_quotes").id){case"atom":ie=new H(Z.value,[]);break;case"codes":ie=new H("[]",[]);for(var Pe=Z.value.length-1;Pe>=0;Pe--)ie=new H(".",[new b.type.Num(n(Z.value,Pe),!1),ie]);break;case"chars":ie=new H("[]",[]);for(var Pe=Z.value.length-1;Pe>=0;Pe--)ie=new H(".",[new b.type.Term(Z.value.charAt(Pe),[]),ie]);break}return{type:p,len:y+1,value:ie};case"l_paren":var bt=J(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:A,derived:!0,value:b.error.syntax(P[bt.len]?P[bt.len]:P[bt.len-1],") or operator expected",!P[bt.len])};case"l_bracket":var bt=J(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 H("{}",[bt.value]),bt):{type:A,derived:!0,value:b.error.syntax(P[bt.len]?P[bt.len]:P[bt.len-1],"} or operator expected",!P[bt.len])}}var Ne=te(w,P,y,z);return Ne.type===p||Ne.derived||(Ne=ae(w,P,y),Ne.type===p||Ne.derived)?Ne:{type:A,derived:!1,value:b.error.syntax(P[y],"unexpected token")}}var ot=w.__get_max_priority(),dt=w.__get_next_priority(F),Gt=y;if(P[y].name==="atom"&&P[y+1]&&(P[y].space||P[y+1].name!=="l_paren")){var Z=P[y++],$t=w.__lookup_operator_classes(F,Z.value);if($t&&$t.indexOf("fy")>-1){var bt=J(w,P,y,F,z);if(bt.type!==A)return Z.value==="-"&&!Z.space&&b.type.is_number(bt.value)?{value:new b.type.Num(-bt.value.value,bt.value.is_float),len:bt.len,type:p}:{value:new b.type.Term(Z.value,[bt.value]),len:bt.len,type:p};X=bt}else if($t&&$t.indexOf("fx")>-1){var bt=J(w,P,y,dt,z);if(bt.type!==A)return{value:new b.type.Term(Z.value,[bt.value]),len:bt.len,type:p};X=bt}}y=Gt;var bt=J(w,P,y,dt,z);if(bt.type===p){y=bt.len;var Z=P[y];if(P[y]&&(P[y].name==="atom"&&w.__lookup_operator_classes(F,Z.value)||P[y].name==="bar"&&w.__lookup_operator_classes(F,"|"))){var an=dt,Qr=F,$t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf("xf")>-1)return{value:new b.type.Term(Z.value,[bt.value]),len:++bt.len,type:p};if($t.indexOf("xfx")>-1){var mr=J(w,P,y+1,an,z);return mr.type===p?{value:new b.type.Term(Z.value,[bt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if($t.indexOf("xfy")>-1){var mr=J(w,P,y+1,Qr,z);return mr.type===p?{value:new b.type.Term(Z.value,[bt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if(bt.type!==A)for(;;){y=bt.len;var Z=P[y];if(Z&&Z.name==="atom"&&w.__lookup_operator_classes(F,Z.value)){var $t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf("yf")>-1)bt={value:new b.type.Term(Z.value,[bt.value]),len:++y,type:p};else if($t.indexOf("yfx")>-1){var mr=J(w,P,++y,an,z);if(mr.type===A)return mr.derived=!0,mr;y=mr.len,bt={value:new b.type.Term(Z.value,[bt.value,mr.value]),len:y,type:p}}else break}else break}}else X={type:A,value:b.error.syntax(P[bt.len-1],"operator expected")};return bt}return bt}function te(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:A,derived:!1,value:b.error.syntax(P[y-1],"unfounded token")};var z=P[y],X=[];if(P[y].name==="atom"&&P[y].raw!==","){if(y++,P[y-1].space)return{type:p,len:y,value:new b.type.Term(z.value,X)};if(P[y]&&P[y].name==="l_paren"){if(P[y+1]&&P[y+1].name==="r_paren")return{type:A,derived:!0,value:b.error.syntax(P[y+1],"argument expected")};var Z=J(w,P,++y,"999",!0);if(Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],"argument expected",!P[y])};for(X.push(Z.value),y=Z.len;P[y]&&P[y].name==="atom"&&P[y].value===",";){if(Z=J(w,P,y+1,"999",!0),Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};X.push(Z.value),y=Z.len}if(P[y]&&P[y].name==="r_paren")y++;else return{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],", or ) expected",!P[y])}}return{type:p,len:y,value:new b.type.Term(z.value,X)}}return{type:A,derived:!1,value:b.error.syntax(P[y],"term expected")}}function ae(w,P,y){if(!P[y])return{type:A,derived:!1,value:b.error.syntax(P[y-1],"[ expected")};if(P[y]&&P[y].name==="l_brace"){var F=J(w,P,++y,"999",!0),z=[F.value],X=void 0;if(F.type===A)return P[y]&&P[y].name==="r_brace"?{type:p,len:y+1,value:new b.type.Term("[]",[])}:{type:A,derived:!0,value:b.error.syntax(P[y],"] expected")};for(y=F.len;P[y]&&P[y].name==="atom"&&P[y].value===",";){if(F=J(w,P,y+1,"999",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};z.push(F.value),y=F.len}var Z=!1;if(P[y]&&P[y].name==="bar"){if(Z=!0,F=J(w,P,y+1,"999",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};X=F.value,y=F.len}return P[y]&&P[y].name==="r_brace"?{type:p,len:y+1,value:g(z,X)}:{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],Z?"] expected":", or | or ] expected",!P[y])}}return{type:A,derived:!1,value:b.error.syntax(P[y],"list expected")}}function fe(w,P,y){var F=P[y].line,z=J(w,P,y,w.__get_max_priority(),!1),X=null,Z;if(z.type!==A)if(y=z.len,P[y]&&P[y].name==="atom"&&P[y].raw===".")if(y++,b.type.is_term(z.value)){if(z.value.indicator===":-/2"?(X=new b.type.Rule(z.value.args[0],we(z.value.args[1])),Z={value:X,len:y,type:p}):z.value.indicator==="-->/2"?(X=he(new b.type.Rule(z.value.args[0],z.value.args[1]),w),X.body=we(X.body),Z={value:X,len:y,type:b.type.is_rule(X)?p:A}):(X=new b.type.Rule(z.value,null),Z={value:X,len:y,type:p}),X){var ie=X.singleton_variables();ie.length>0&&w.throw_warning(b.warning.singleton(ie,X.head.indicator,F))}return Z}else return{type:A,value:b.error.syntax(P[y],"callable expected")};else return{type:A,value:b.error.syntax(P[y]?P[y]:P[y-1],". or operator expected")};return z}function ce(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={},X;F.new_text(P);var Z=0,ie=F.get_tokens(Z);do{if(ie===null||!ie[Z])break;var Pe=fe(w,ie,Z);if(Pe.type===A)return new H("throw",[Pe.value]);if(Pe.value.body===null&&Pe.value.head.indicator==="?-/1"){var Ne=new Je(w.session);Ne.add_goal(Pe.value.head.args[0]),Ne.answer(function(dt){b.type.is_error(dt)?w.throw_warning(dt.args[0]):(dt===!1||dt===null)&&w.throw_warning(b.warning.failed_goal(Pe.value.head.args[0],Pe.len))}),Z=Pe.len;var ot=!0}else if(Pe.value.body===null&&Pe.value.head.indicator===":-/1"){var ot=w.run_directive(Pe.value.head.args[0]);Z=Pe.len,Pe.value.head.args[0].indicator==="char_conversion/2"&&(ie=F.get_tokens(Z),Z=0)}else{X=Pe.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!w.is_multifile_predicate(X)&&(w.session.rules[X]=a(w.session.rules[X]||[],function(Gt){return Gt.dynamic}),z[X]=!0);var ot=w.add_rule(Pe.value,y);Z=Pe.len}if(!ot)return ot}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 X=J(w,z,0,w.__get_max_priority(),!1);if(X.type!==A){var Z=X.len,ie=Z;if(z[Z]&&z[Z].name==="atom"&&z[Z].raw===".")w.add_goal(we(X.value));else{var Pe=z[Z];return new H("throw",[b.error.syntax(Pe||z[Z-1],". or operator expected",!Pe)])}F=X.len+1}else return new H("throw",[X.value])}while(!0);return!0}function he(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 H(w.head.id,w.head.args),w)}function Be(w,P,y){var F;if(b.type.is_term(w)&&w.indicator==="!/0")return{value:w,variable:P,error:!1};if(b.type.is_term(w)&&w.indicator===",/2"){var z=Be(w.args[0],P,y);if(z.error)return z;var X=Be(w.args[1],z.variable,y);return X.error?X:{value:new H(",",[z.value,X.value]),variable:X.variable,error:!1}}else{if(b.type.is_term(w)&&w.indicator==="{}/1")return{value:w.args[0],variable:P,error:!1};if(b.type.is_empty_list(w))return{value:new H("true",[]),variable:P,error:!1};if(b.type.is_list(w)){F=y.next_free_variable();for(var Z=w,ie;Z.indicator==="./2";)ie=Z,Z=Z.args[1];return b.type.is_variable(Z)?{value:b.error.instantiation("DCG"),variable:P,error:!0}:b.type.is_empty_list(Z)?(ie.args[1]=F,{value:new H("=",[P,w]),variable:F,error:!1}):{value:b.error.type("list",w,"DCG"),variable:P,error:!0}}else return b.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([P,F]),w=new H(w.id,w.args),{value:w,variable:F,error:!1}):{value:b.error.type("callable",w,"DCG"),variable:P,error:!0}}}function we(w){return b.type.is_variable(w)?new H("call",[w]):b.type.is_term(w)&&[",/2",";/2","->/2"].indexOf(w.indicator)!==-1?new H(w.id,[we(w.args[0]),we(w.args[1])]):w}function g(w,P){for(var y=P||new b.type.Term("[]",[]),F=w.length-1;F>=0;F--)y=new b.type.Term(".",[w[F],y]);return y}function Ee(w,P){for(var y=w.length-1;y>=0;y--)w[y]===P&&w.splice(y,1)}function Se(w){for(var P={},y=[],F=0;F=0;P--)if(w.charAt(P)==="/")return new H("/",[new H(w.substring(0,P)),new Fe(parseInt(w.substring(P+1)),!1)])}function Ie(w){this.id=w}function Fe(w,P){this.is_float=P!==void 0?P:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var At=0;function H(w,P,y){this.ref=y||++At,this.id=w,this.args=P||[],this.indicator=w+"/"+this.args.length}var at=0;function Re(w,P,y,F,z,X){this.id=at++,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=X!==void 0?X:"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 ke(w){w=w||{},this.links=w}function xe(w,P,y){P=P||new ke,y=y||null,this.goal=w,this.substitution=P,this.parent=y}function He(w,P,y){this.head=w,this.body=P,this.dynamic=y||!1}function Te(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new Je(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Re(typeof hl<"u"&&hl.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Re(typeof hl<"u"&&hl.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof hl<"u"&&hl.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:b.flag.bounded.value,max_integer:b.flag.max_integer.value,min_integer:b.flag.min_integer.value,integer_rounding_function:b.flag.integer_rounding_function.value,char_conversion:b.flag.char_conversion.value,debug:b.flag.debug.value,max_arity:b.flag.max_arity.value,unknown:b.flag.unknown.value,double_quotes:b.flag.double_quotes.value,occurs_check:b.flag.occurs_check.value,dialect:b.flag.dialect.value,version_data:b.flag.version_data.value,nodejs:b.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 Je(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 je(w,P,y){this.id=w,this.rules=P,this.exports=y,b.module[w]=this}je.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},Ie.prototype.unify=function(w,P){if(P&&e(w.variables(),this.id)!==-1&&!b.type.is_variable(w))return null;var y={};return y[this.id]=w,new ke(y)},Fe.prototype.unify=function(w,P){return b.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new ke:null},H.prototype.unify=function(w,P){if(b.type.is_term(w)&&this.indicator===w.indicator){for(var y=new ke,F=0;F=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[X]+(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 Z="["+this.args[0].toString(w),ie=this.args[1];ie.indicator==="./2";)Z+=", "+ie.args[0].toString(w),ie=ie.args[1];return ie.indicator!=="[]/0"&&(Z+="|"+ie.toString(w)),Z+="]",Z;case",/2":return"("+this.args[0].toString(w)+", "+this.args[1].toString(w)+")";default:var Pe=this.id,Ne=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Ne===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(Pe)&&Pe!=="{}"&&Pe!=="[]"&&(Pe="'"+x(Pe)+"'"),Pe+(this.args.length?"("+o(this.args,function($t){return $t.toString(w)}).join(", ")+")":"");var ot=Ne.priority>P.priority||Ne.priority===P.priority&&(Ne.class==="xfy"&&this.indicator!==P.indicator||Ne.class==="yfx"&&this.indicator!==P.indicator||this.indicator===P.indicator&&Ne.class==="yfx"&&y==="right"||this.indicator===P.indicator&&Ne.class==="xfy"&&y==="left");Ne.indicator=this.indicator;var dt=ot?"(":"",Gt=ot?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Ne.class)!==-1?dt+Pe+" "+this.args[0].toString(w,Ne)+Gt:["yf","xf"].indexOf(Ne.class)!==-1?dt+this.args[0].toString(w,Ne)+" "+Pe+Gt:dt+this.args[0].toString(w,Ne,"left")+" "+this.id+" "+this.args[1].toString(w,Ne,"right")+Gt}},Re.prototype.toString=function(w){return"("+this.id+")"},ke.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},xe.prototype.toString=function(w){return this.goal===null?"<"+this.substitution.toString(w)+">":"<"+this.goal.toString(w)+", "+this.substitution.toString(w)+">"},He.prototype.toString=function(w){return this.body?this.head.toString(w)+" :- "+this.body.toString(w)+".":this.head.toString(w)+"."},Te.prototype.toString=function(w){for(var P="",y=0;y=0;z--)F=new H(".",[P[z],F]);return F}return new H(this.id,o(this.args,function(X){return X.apply(w)}),this.ref)},Re.prototype.apply=function(w){return this},He.prototype.apply=function(w){return new He(this.head.apply(w),this.body!==null?this.body.apply(w):null)},ke.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 ke(y)},H.prototype.select=function(){for(var w=this;w.indicator===",/2";)w=w.args[0];return w},H.prototype.replace=function(w){return this.indicator===",/2"?this.args[0].indicator===",/2"?new H(",",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new H(",",[w,this.args[1]]):w},H.prototype.search=function(w){if(b.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,b.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id==="_")return new Ie(b.format_variable(this.session.rename));this.session.renamed_variables[w.id]=b.format_variable(this.session.rename)}return new Ie(this.session.renamed_variables[w.id])},Te.prototype.next_free_variable=function(){return this.thread.next_free_variable()},Je.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,b.format_variable(this.session.rename))!==-1;)this.session.rename++;return new Ie(b.format_variable(this.session.rename))},Te.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},Je.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Te.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},Je.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Te.prototype.prepend=function(w){return this.thread.prepend(w)},Je.prototype.prepend=function(w){for(var P=w.length-1;P>=0;P--)this.points.push(w[P])},Te.prototype.success=function(w,P){return this.thread.success(w,P)},Je.prototype.success=function(w,y){var y=typeof y>"u"?w:y;this.prepend([new xe(w.goal.replace(null),w.substitution,y)])},Te.prototype.throw_error=function(w){return this.thread.throw_error(w)},Je.prototype.throw_error=function(w){this.prepend([new xe(new H("throw",[w]),new ke,null,null)])},Te.prototype.step_rule=function(w,P){return this.thread.step_rule(w,P)},Je.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()},Te.prototype.answers=function(w,P,y){return this.thread.answers(w,P,y)},Je.prototype.answers=function(w,P,y){var F=P||1e3,z=this;if(P<=0){y&&y();return}this.answer(function(X){w(X),X!==!1?setTimeout(function(){z.answers(w,P-1,y)},1):y&&y()})},Te.prototype.again=function(w){return this.thread.again(w)},Je.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&&!b.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):b.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))}},Te.prototype.unfold=function(w){if(w.body===null)return!1;var P=w.head,y=w.body,F=y.select(),z=new Je(this),X=[];z.add_goal(F),z.step();for(var Z=z.points.length-1;Z>=0;Z--){var ie=z.points[Z],Pe=P.apply(ie.substitution),Ne=y.replace(ie.goal);Ne!==null&&(Ne=Ne.apply(ie.substitution)),X.push(new He(Pe,Ne))}var ot=this.rules[P.indicator],dt=e(ot,w);return X.length>0&&dt!==-1?(ot.splice.apply(ot,[dt,1].concat(X)),!0):!1},Je.prototype.unfold=function(w){return this.session.unfold(w)},Ie.prototype.interpret=function(w){return b.error.instantiation(w.level)},Fe.prototype.interpret=function(w){return this},H.prototype.interpret=function(w){return b.type.is_unitary_list(this)?this.args[0].interpret(w):b.operate(w,this)},Ie.prototype.compare=function(w){return this.idw.id?1:0},Fe.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.valuew.value)return 1},H.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===Fe){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 ke},is_state:function(w){return w instanceof xe},is_rule:function(w){return w instanceof He},is_variable:function(w){return w instanceof Ie},is_stream:function(w){return w instanceof Re},is_anonymous_var:function(w){return w instanceof Ie&&w.id==="_"},is_callable:function(w){return w instanceof H},is_number:function(w){return w instanceof Fe},is_integer:function(w){return w instanceof Fe&&!w.is_float},is_float:function(w){return w instanceof Fe&&w.is_float},is_term:function(w){return w instanceof H},is_atom:function(w){return w instanceof H&&w.args.length===0},is_ground:function(w){if(w instanceof Ie)return!1;if(w instanceof H){for(var P=0;P0},is_list:function(w){return w instanceof H&&(w.indicator==="[]/0"||w.indicator==="./2")},is_empty_list:function(w){return w instanceof H&&w.indicator==="[]/0"},is_non_empty_list:function(w){return w instanceof H&&w.indicator==="./2"},is_fully_list:function(w){for(;w instanceof H&&w.indicator==="./2";)w=w.args[1];return w instanceof Ie||w instanceof H&&w.indicator==="[]/0"},is_instantiated_list:function(w){for(;w instanceof H&&w.indicator==="./2";)w=w.args[1];return w instanceof H&&w.indicator==="[]/0"},is_unitary_list:function(w){return w instanceof H&&w.indicator==="./2"&&w.args[1]instanceof H&&w.args[1].indicator==="[]/0"},is_character:function(w){return w instanceof H&&(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 Fe&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Fe&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof H&&b.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof H&&b.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof H&&b.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof H&&w.indicator==="throw/1"},is_predicate_indicator:function(w){return w instanceof H&&w.indicator==="//2"&&w.args[0]instanceof H&&w.args[0].args.length===0&&w.args[1]instanceof Fe&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof H&&w.args.length===0&&b.flag[w.id]!==void 0},is_value_flag:function(w,P){if(!b.type.is_flag(w))return!1;for(var y in b.flag[w.id].allowed)if(!!b.flag[w.id].allowed.hasOwnProperty(y)&&b.flag[w.id].allowed[y].equals(P))return!0;return!1},is_io_mode:function(w){return b.type.is_atom(w)&&["read","write","append"].indexOf(w.id)!==-1},is_stream_option:function(w){return b.type.is_term(w)&&(w.indicator==="alias/1"&&b.type.is_atom(w.args[0])||w.indicator==="reposition/1"&&b.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="type/1"&&b.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary")||w.indicator==="eof_action/1"&&b.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 b.type.is_integer(w)&&w.value>=0||b.type.is_atom(w)&&(w.id==="end_of_stream"||w.id==="past_end_of_stream")},is_stream_property:function(w){return b.type.is_term(w)&&(w.indicator==="input/0"||w.indicator==="output/0"||w.indicator==="alias/1"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0]))||w.indicator==="file_name/1"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0]))||w.indicator==="position/1"&&(b.type.is_variable(w.args[0])||b.type.is_stream_position(w.args[0]))||w.indicator==="reposition/1"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))||w.indicator==="type/1"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary"))||w.indicator==="mode/1"&&(b.type.is_variable(w.args[0])||b.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"&&(b.type.is_variable(w.args[0])||b.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"&&(b.type.is_variable(w.args[0])||b.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 b.type.is_term(w)&&["variables/1","variable_names/1","singletons/1"].indexOf(w.indicator)!==-1},is_write_option:function(w){return b.type.is_term(w)&&(w.indicator==="quoted/1"&&b.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="ignore_ops/1"&&b.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="numbervars/1"&&b.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))},is_close_option:function(w){return b.type.is_term(w)&&w.indicator==="force/1"&&b.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")},is_modifiable_flag:function(w){return b.type.is_flag(w)&&b.flag[w.id].changeable},is_module:function(w){return w instanceof H&&w.indicator==="library/1"&&w.args[0]instanceof H&&w.args[0].args.length===0&&b.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):b.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:b.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?parseInt(w/P):b.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:b.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:b.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(b.type.is_variable(y))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_compound(y)||y.indicator!=="//2")w.throw_error(b.error.type("predicate_indicator",y,P.indicator));else if(b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1]))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_atom(y.args[0]))w.throw_error(b.error.type("atom",y.args[0],P.indicator));else if(!b.type.is_integer(y.args[1]))w.throw_error(b.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];b.type.is_variable(y)?w.throw_error(b.error.instantiation(P.indicator)):!b.type.is_compound(y)||y.indicator!=="//2"?w.throw_error(b.error.type("predicate_indicator",y,P.indicator)):b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1])?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_atom(y.args[0])?b.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(b.error.type("integer",y.args[1],P.indicator)):w.throw_error(b.error.type("atom",y.args[0],P.indicator))},"set_prolog_flag/2":function(w,P){var y=P.args[0],F=P.args[1];b.type.is_variable(y)||b.type.is_variable(F)?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_atom(y)?b.type.is_flag(y)?b.type.is_value_flag(y,F)?b.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(b.error.permission("modify","flag",y)):w.throw_error(b.error.domain("flag_value",new H("+",[y,F]),P.indicator)):w.throw_error(b.error.domain("prolog_flag",y,P.indicator)):w.throw_error(b.error.type("atom",y,P.indicator))},"use_module/1":function(w,P){var y=P.args[0];if(b.type.is_variable(y))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_term(y))w.throw_error(b.error.type("term",y,P.indicator));else if(b.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];b.type.is_variable(y)||b.type.is_variable(F)?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_character(y)?b.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(b.error.type("character",F,P.indicator)):w.throw_error(b.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(b.type.is_variable(y)||b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_integer(y))w.throw_error(b.error.type("integer",y,P.indicator));else if(!b.type.is_atom(F))w.throw_error(b.error.type("atom",F,P.indicator));else if(!b.type.is_atom(z))w.throw_error(b.error.type("atom",z,P.indicator));else if(y.value<0||y.value>1200)w.throw_error(b.error.domain("operator_priority",y,P.indicator));else if(z.id===",")w.throw_error(b.error.permission("modify","operator",z,P.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))w.throw_error(b.error.permission("modify","operator",z,P.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)w.throw_error(b.error.domain("operator_specifier",F,P.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var Z in w.session.__operators)if(!!w.session.__operators.hasOwnProperty(Z)){var ie=w.session.__operators[Z][z.id];ie&&(e(ie,"fx")!==-1&&(X.prefix={priority:Z,type:"fx"}),e(ie,"fy")!==-1&&(X.prefix={priority:Z,type:"fy"}),e(ie,"xf")!==-1&&(X.postfix={priority:Z,type:"xf"}),e(ie,"yf")!==-1&&(X.postfix={priority:Z,type:"yf"}),e(ie,"xfx")!==-1&&(X.infix={priority:Z,type:"xfx"}),e(ie,"xfy")!==-1&&(X.infix={priority:Z,type:"xfy"}),e(ie,"yfx")!==-1&&(X.infix={priority:Z,type:"yfx"}))}var Pe;switch(F.id){case"fy":case"fx":Pe="prefix";break;case"yf":case"xf":Pe="postfix";break;default:Pe="infix";break}if(((X.prefix&&Pe==="prefix"||X.postfix&&Pe==="postfix"||X.infix&&Pe==="infix")&&X[Pe].type!==F.id||X.infix&&Pe==="postfix"||X.postfix&&Pe==="infix")&&y.value!==0)w.throw_error(b.error.permission("create","operator",z,P.indicator));else return X[Pe]&&(Ee(w.session.__operators[X[Pe].priority][z.id],F.id),w.session.__operators[X[Pe].priority][z.id].length===0&&delete w.session.__operators[X[Pe].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){b.directive["op/3"](w,y)&&w.success(P)},"current_op/3":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=[];for(var ie in w.session.__operators)for(var Pe in w.session.__operators[ie])for(var Ne=0;Ne/2"){var F=w.points,z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(Ne){return Ne.substitution},w.session.format_error=function(Ne){return Ne.goal},w.points=[new xe(y.args[0].args[0],P.substitution,P)];var Z=function(Ne){w.points=F,w.session.format_success=z,w.session.format_error=X,Ne===!1?w.prepend([new xe(P.goal.replace(y.args[1]),P.substitution,P)]):b.type.is_error(Ne)?w.throw_error(Ne.args[0]):Ne===null?(w.prepend([P]),w.__calls.shift()(null)):w.prepend([new xe(P.goal.replace(y.args[0].args[1]).apply(Ne),P.substitution.apply(Ne),P)])};w.__calls.unshift(Z)}else{var ie=new xe(P.goal.replace(y.args[0]),P.substitution,P),Pe=new xe(P.goal.replace(y.args[1]),P.substitution,P);w.prepend([ie,Pe])}},"!/0":function(w,P,y){var F,z,X=[];for(F=P,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var Z=F.goal.select();if(Z&&Z.id==="call"&&Z.search(y)){F=z;break}}for(var ie=w.points.length-1;ie>=0;ie--){for(var Pe=w.points[ie],Ne=Pe.parent;Ne!==null&&Ne!==F.parent;)Ne=Ne.parent;Ne===null&&Ne!==F.parent&&X.push(Pe)}w.points=X.reverse(),w.success(P)},"\\+/1":function(w,P,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(w.level)):b.type.is_callable(F)?w.prepend([new xe(P.goal.replace(new H(",",[new H(",",[new H("call",[F]),new H("!",[])]),new H("fail",[])])),P.substitution,P),new xe(P.goal.replace(null),P.substitution,P)]):w.throw_error(b.error.type("callable",F,w.level))},"->/2":function(w,P,y){var F=P.goal.replace(new H(",",[y.args[0],new H(",",[new H("!"),y.args[1]])]));w.prepend([new xe(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":ne(1),"call/2":ne(2),"call/3":ne(3),"call/4":ne(4),"call/5":ne(5),"call/6":ne(6),"call/7":ne(7),"call/8":ne(8),"once/1":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(",",[new H("call",[F]),new H("!",[])])),P.substitution,P)])},"forall/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H("\\+",[new H(",",[new H("call",[F]),new H("\\+",[new H("call",[z])])])])),P.substitution,P)])},"repeat/0":function(w,P,y){w.prepend([new xe(P.goal.replace(null),P.substitution,P),P])},"throw/1":function(w,P,y){b.type.is_variable(y.args[0])?w.throw_error(b.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 xe(y.args[0],P.substitution,P)]);var z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(ie){return ie.substitution},w.session.format_error=function(ie){return ie.goal};var Z=function(ie){var Pe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=X,b.type.is_error(ie)){for(var Ne=[],ot=w.points.length-1;ot>=0;ot--){for(var $t=w.points[ot],dt=$t.parent;dt!==null&&dt!==P.parent;)dt=dt.parent;dt===null&&dt!==P.parent&&Ne.push($t)}w.points=Ne;var Gt=w.get_flag("occurs_check").indicator==="true/0",$t=new xe,bt=b.unify(ie.args[0],y.args[1],Gt);bt!==null?($t.substitution=P.substitution.apply(bt),$t.goal=P.goal.replace(y.args[2]).apply(bt),$t.parent=P,w.prepend([$t])):w.throw_error(ie.args[0])}else if(ie!==!1){for(var an=ie===null?[]:[new xe(P.goal.apply(ie).replace(null),P.substitution.apply(ie),P)],Qr=[],ot=Pe.length-1;ot>=0;ot--){Qr.push(Pe[ot]);var mr=Pe[ot].goal!==null?Pe[ot].goal.select():null;if(b.type.is_term(mr)&&mr.indicator==="!/0")break}var br=o(Qr,function(Wr){return Wr.goal===null&&(Wr.goal=new H("true",[])),Wr=new xe(P.goal.replace(new H("catch",[Wr.goal,y.args[1],y.args[2]])),P.substitution.apply(Wr.substitution),Wr.parent),Wr.exclude=y.args[0].variables(),Wr}).reverse();w.prepend(br),w.prepend(an),ie===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift(Z)},"=/2":function(w,P,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=new xe,X=b.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=P.goal.apply(X).replace(null),z.substitution=P.substitution.apply(X),z.parent=P,w.prepend([z]))},"unify_with_occurs_check/2":function(w,P,y){var F=new xe,z=b.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=b.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=b.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],X=y.args[2];if(b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(z))w.throw_error(b.error.type("callable",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type("list",X,y.indicator));else{var Z=w.next_free_variable(),ie=new H(",",[z,new H("=",[Z,F])]),Pe=w.points,Ne=w.session.limit,ot=w.session.format_success;w.session.format_success=function($t){return $t.substitution},w.add_goal(ie,!0,P);var dt=[],Gt=function($t){if($t!==!1&&$t!==null&&!b.type.is_error($t))w.__calls.unshift(Gt),dt.push($t.links[Z.id]),w.session.limit=w.current_limit;else if(w.points=Pe,w.session.limit=Ne,w.session.format_success=ot,b.type.is_error($t))w.throw_error($t.args[0]);else if(w.current_limit>0){for(var bt=new H("[]"),an=dt.length-1;an>=0;an--)bt=new H(".",[dt[an],bt]);w.prepend([new xe(P.goal.replace(new H("=",[X,bt])),P.substitution,P)])}};w.__calls.unshift(Gt)}},"bagof/3":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(X))w.throw_error(b.error.type("callable",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_list(Z))w.throw_error(b.error.type("list",Z,y.indicator));else{var ie=w.next_free_variable(),Pe;X.indicator==="^/2"?(Pe=X.args[0].variables(),X=X.args[1]):Pe=[],Pe=Pe.concat(z.variables());for(var Ne=X.variables().filter(function(br){return e(Pe,br)===-1}),ot=new H("[]"),dt=Ne.length-1;dt>=0;dt--)ot=new H(".",[new Ie(Ne[dt]),ot]);var Gt=new H(",",[X,new H("=",[ie,new H(",",[ot,z])])]),$t=w.points,bt=w.session.limit,an=w.session.format_success;w.session.format_success=function(br){return br.substitution},w.add_goal(Gt,!0,P);var Qr=[],mr=function(br){if(br!==!1&&br!==null&&!b.type.is_error(br)){w.__calls.unshift(mr);var Wr=!1,Kn=br.links[ie.id].args[0],Ns=br.links[ie.id].args[1];for(var Ti in Qr)if(!!Qr.hasOwnProperty(Ti)){var ps=Qr[Ti];if(ps.variables.equals(Kn)){ps.answers.push(Ns),Wr=!0;break}}Wr||Qr.push({variables:Kn,answers:[Ns]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=bt,w.session.format_success=an,b.type.is_error(br))w.throw_error(br.args[0]);else if(w.current_limit>0){for(var io=[],Pi=0;Pi=0;so--)Ls=new H(".",[br[so],Ls]);io.push(new xe(P.goal.replace(new H(",",[new H("=",[ot,Qr[Pi].variables]),new H("=",[Z,Ls])])),P.substitution,P))}w.prepend(io)}};w.__calls.unshift(mr)}},"setof/3":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(X))w.throw_error(b.error.type("callable",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_list(Z))w.throw_error(b.error.type("list",Z,y.indicator));else{var ie=w.next_free_variable(),Pe;X.indicator==="^/2"?(Pe=X.args[0].variables(),X=X.args[1]):Pe=[],Pe=Pe.concat(z.variables());for(var Ne=X.variables().filter(function(br){return e(Pe,br)===-1}),ot=new H("[]"),dt=Ne.length-1;dt>=0;dt--)ot=new H(".",[new Ie(Ne[dt]),ot]);var Gt=new H(",",[X,new H("=",[ie,new H(",",[ot,z])])]),$t=w.points,bt=w.session.limit,an=w.session.format_success;w.session.format_success=function(br){return br.substitution},w.add_goal(Gt,!0,P);var Qr=[],mr=function(br){if(br!==!1&&br!==null&&!b.type.is_error(br)){w.__calls.unshift(mr);var Wr=!1,Kn=br.links[ie.id].args[0],Ns=br.links[ie.id].args[1];for(var Ti in Qr)if(!!Qr.hasOwnProperty(Ti)){var ps=Qr[Ti];if(ps.variables.equals(Kn)){ps.answers.push(Ns),Wr=!0;break}}Wr||Qr.push({variables:Kn,answers:[Ns]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=bt,w.session.format_success=an,b.type.is_error(br))w.throw_error(br.args[0]);else if(w.current_limit>0){for(var io=[],Pi=0;Pi=0;so--)Ls=new H(".",[br[so],Ls]);io.push(new xe(P.goal.replace(new H(",",[new H("=",[ot,Qr[Pi].variables]),new H("=",[Z,Ls])])),P.substitution,P))}w.prepend(io)}};w.__calls.unshift(mr)}},"functor/3":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(z)&&(b.type.is_variable(X)||b.type.is_variable(Z)))w.throw_error(b.error.instantiation("functor/3"));else if(!b.type.is_variable(Z)&&!b.type.is_integer(Z))w.throw_error(b.error.type("integer",y.args[2],"functor/3"));else if(!b.type.is_variable(X)&&!b.type.is_atomic(X))w.throw_error(b.error.type("atomic",y.args[1],"functor/3"));else if(b.type.is_integer(X)&&b.type.is_integer(Z)&&Z.value!==0)w.throw_error(b.error.type("atom",y.args[1],"functor/3"));else if(b.type.is_variable(z)){if(y.args[2].value>=0){for(var ie=[],Pe=0;Pe0&&F<=y.args[1].args.length){var z=new H("=",[y.args[1].args[F-1],y.args[2]]);w.prepend([new xe(P.goal.replace(z),P.substitution,P)])}}},"=../2":function(w,P,y){var F;if(b.type.is_variable(y.args[0])&&(b.type.is_variable(y.args[1])||b.type.is_non_empty_list(y.args[1])&&b.type.is_variable(y.args[1].args[0])))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_fully_list(y.args[1]))w.throw_error(b.error.type("list",y.args[1],y.indicator));else if(b.type.is_variable(y.args[0])){if(!b.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator==="./2";)X.push(F.args[0]),F=F.args[1];b.type.is_variable(y.args[0])&&b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):X.length===0&&b.type.is_compound(y.args[1].args[0])?w.throw_error(b.error.type("atomic",y.args[1].args[0],y.indicator)):X.length>0&&(b.type.is_compound(y.args[1].args[0])||b.type.is_number(y.args[1].args[0]))?w.throw_error(b.error.type("atom",y.args[1].args[0],y.indicator)):X.length===0?w.prepend([new xe(P.goal.replace(new H("=",[y.args[1].args[0],y.args[0]],P)),P.substitution,P)]):w.prepend([new xe(P.goal.replace(new H("=",[new H(y.args[1].args[0].id,X),y.args[0]])),P.substitution,P)])}}else{if(b.type.is_atomic(y.args[0]))F=new H(".",[y.args[0],new H("[]")]);else{F=new H("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new H(".",[y.args[0].args[z],F]);F=new H(".",[new H(y.args[0].id),F])}w.prepend([new xe(P.goal.replace(new H("=",[F,y.args[1]])),P.substitution,P)])}},"copy_term/2":function(w,P,y){var F=y.args[0].rename(w);w.prepend([new xe(P.goal.replace(new H("=",[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(!b.type.is_fully_list(z))w.throw_error(b.error.type("list",z,y.indicator));else{var X=g(o(Se(F.variables()),function(Z){return new Ie(Z)}));w.prepend([new xe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"clause/2":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type("callable",y.args[0],y.indicator));else if(!b.type.is_variable(y.args[1])&&!b.type.is_callable(y.args[1]))w.throw_error(b.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 X=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},X=X.rename(w),X.body===null&&(X.body=new H("true"));var Z=new H(",",[new H("=",[X.head,y.args[0]]),new H("=",[X.body,y.args[1]])]);F.push(new xe(P.goal.replace(Z),P.substitution,P))}w.prepend(F)}else w.throw_error(b.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(w,P,y){var F=y.args[0];if(!b.type.is_variable(F)&&(!b.type.is_compound(F)||F.indicator!=="//2"))w.throw_error(b.error.type("predicate_indicator",F,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_variable(F.args[0])&&!b.type.is_atom(F.args[0]))w.throw_error(b.error.type("atom",F.args[0],y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_variable(F.args[1])&&!b.type.is_integer(F.args[1]))w.throw_error(b.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var X in w.session.rules)if(!!w.session.rules.hasOwnProperty(X)){var Z=X.lastIndexOf("/"),ie=X.substr(0,Z),Pe=parseInt(X.substr(Z+1,X.length-(Z+1))),Ne=new H("/",[new H(ie),new Fe(Pe,!1)]),ot=new H("=",[Ne,F]);z.push(new xe(P.goal.replace(ot),P.substitution,P))}w.prepend(z)}},"asserta/1":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=we(y.args[0].args[1])):(F=y.args[0],z=null),b.type.is_callable(F)?z!==null&&!b.type.is_callable(z)?w.throw_error(b.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 He(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(P)):w.throw_error(b.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(b.error.type("callable",F,y.indicator))}},"assertz/1":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=we(y.args[0].args[1])):(F=y.args[0],z=null),b.type.is_callable(F)?z!==null&&!b.type.is_callable(z)?w.throw_error(b.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 He(F,z,!0)),w.success(P)):w.throw_error(b.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(b.error.type("callable",F,y.indicator))}},"retract/1":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.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 H("true")),typeof P.retract>"u")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var X=[],Z=0;Zw.get_flag("max_arity").value)w.throw_error(b.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(b.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_atom(y.args[0]))w.throw_error(b.error.type("atom",y.args[0],y.indicator));else if(!b.type.is_variable(y.args[1])&&!b.type.is_integer(y.args[1]))w.throw_error(b.error.type("integer",y.args[1],y.indicator));else if(b.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(b.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new Fe(y.args[0].id.length,!1);w.prepend([new xe(P.goal.replace(new H("=",[F,y.args[1]])),P.substitution,P)])}},"atom_concat/3":function(w,P,y){var F,z,X=y.args[0],Z=y.args[1],ie=y.args[2];if(b.type.is_variable(ie)&&(b.type.is_variable(X)||b.type.is_variable(Z)))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_atom(X))w.throw_error(b.error.type("atom",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_atom(Z))w.throw_error(b.error.type("atom",Z,y.indicator));else if(!b.type.is_variable(ie)&&!b.type.is_atom(ie))w.throw_error(b.error.type("atom",ie,y.indicator));else{var Pe=b.type.is_variable(X),Ne=b.type.is_variable(Z);if(!Pe&&!Ne)z=new H("=",[ie,new H(X.id+Z.id)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]);else if(Pe&&!Ne)F=ie.id.substr(0,ie.id.length-Z.id.length),F+Z.id===ie.id&&(z=new H("=",[X,new H(F)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]));else if(Ne&&!Pe)F=ie.id.substr(X.id.length),X.id+F===ie.id&&(z=new H("=",[Z,new H(F)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]));else{for(var ot=[],dt=0;dt<=ie.id.length;dt++){var Gt=new H(ie.id.substr(0,dt)),$t=new H(ie.id.substr(dt));z=new H(",",[new H("=",[Gt,X]),new H("=",[$t,Z])]),ot.push(new xe(P.goal.replace(z),P.substitution,P))}w.prepend(ot)}}},"sub_atom/5":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2],ie=y.args[3],Pe=y.args[4];if(b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_integer(X))w.throw_error(b.error.type("integer",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_integer(Z))w.throw_error(b.error.type("integer",Z,y.indicator));else if(!b.type.is_variable(ie)&&!b.type.is_integer(ie))w.throw_error(b.error.type("integer",ie,y.indicator));else if(b.type.is_integer(X)&&X.value<0)w.throw_error(b.error.domain("not_less_than_zero",X,y.indicator));else if(b.type.is_integer(Z)&&Z.value<0)w.throw_error(b.error.domain("not_less_than_zero",Z,y.indicator));else if(b.type.is_integer(ie)&&ie.value<0)w.throw_error(b.error.domain("not_less_than_zero",ie,y.indicator));else{var Ne=[],ot=[],dt=[];if(b.type.is_variable(X))for(F=0;F<=z.id.length;F++)Ne.push(F);else Ne.push(X.value);if(b.type.is_variable(Z))for(F=0;F<=z.id.length;F++)ot.push(F);else ot.push(Z.value);if(b.type.is_variable(ie))for(F=0;F<=z.id.length;F++)dt.push(F);else dt.push(ie.value);var Gt=[];for(var $t in Ne)if(!!Ne.hasOwnProperty($t)){F=Ne[$t];for(var bt in ot)if(!!ot.hasOwnProperty(bt)){var an=ot[bt],Qr=z.id.length-F-an;if(e(dt,Qr)!==-1&&F+an+Qr===z.id.length){var mr=z.id.substr(F,an);if(z.id===z.id.substr(0,F)+mr+z.id.substr(F+an,Qr)){var br=new H("=",[new H(mr),Pe]),Wr=new H("=",[X,new Fe(F)]),Kn=new H("=",[Z,new Fe(an)]),Ns=new H("=",[ie,new Fe(Qr)]),Ti=new H(",",[new H(",",[new H(",",[Wr,Kn]),Ns]),br]);Gt.push(new xe(P.goal.replace(Ti),P.substitution,P))}}}}w.prepend(Gt)}},"atom_chars/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type("atom",F,y.indicator));else if(b.type.is_variable(F)){for(var ie=z,Pe=b.type.is_variable(F),Ne="";ie.indicator==="./2";){if(b.type.is_character(ie.args[0]))Ne+=ie.args[0].id;else if(b.type.is_variable(ie.args[0])&&Pe){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type("character",ie.args[0],y.indicator));return}ie=ie.args[1]}b.type.is_variable(ie)&&Pe?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)?w.throw_error(b.error.type("list",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H("=",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H("[]"),Z=F.id.length-1;Z>=0;Z--)X=new H(".",[new H(F.id.charAt(Z)),X]);w.prepend([new xe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"atom_codes/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type("atom",F,y.indicator));else if(b.type.is_variable(F)){for(var ie=z,Pe=b.type.is_variable(F),Ne="";ie.indicator==="./2";){if(b.type.is_character_code(ie.args[0]))Ne+=u(ie.args[0].value);else if(b.type.is_variable(ie.args[0])&&Pe){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.representation("character_code",y.indicator));return}ie=ie.args[1]}b.type.is_variable(ie)&&Pe?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)?w.throw_error(b.error.type("list",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H("=",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H("[]"),Z=F.id.length-1;Z>=0;Z--)X=new H(".",[new Fe(n(F.id,Z),!1),X]);w.prepend([new xe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"char_code/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_character(F))w.throw_error(b.error.type("character",F,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type("integer",z,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character_code(z))w.throw_error(b.error.representation("character_code",y.indicator));else if(b.type.is_variable(z)){var X=new Fe(n(F.id,0),!1);w.prepend([new xe(P.goal.replace(new H("=",[X,z])),P.substitution,P)])}else{var Z=new H(u(z.value));w.prepend([new xe(P.goal.replace(new H("=",[Z,F])),P.substitution,P)])}},"number_chars/2":function(w,P,y){var F,z=y.args[0],X=y.args[1];if(b.type.is_variable(z)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_number(z))w.throw_error(b.error.type("number",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type("list",X,y.indicator));else{var Z=b.type.is_variable(z);if(!b.type.is_variable(X)){var ie=X,Pe=!0;for(F="";ie.indicator==="./2";){if(b.type.is_character(ie.args[0]))F+=ie.args[0].id;else if(b.type.is_variable(ie.args[0]))Pe=!1;else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type("character",ie.args[0],y.indicator));return}ie=ie.args[1]}if(Pe=Pe&&b.type.is_empty_list(ie),!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)){w.throw_error(b.error.type("list",X,y.indicator));return}if(!Pe&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else if(Pe)if(b.type.is_variable(ie)&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ot=Ne.value;!b.type.is_number(ot)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(b.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new xe(P.goal.replace(new H("=",[z,ot])),P.substitution,P)]);return}}if(!Z){F=z.toString();for(var dt=new H("[]"),Gt=F.length-1;Gt>=0;Gt--)dt=new H(".",[new H(F.charAt(Gt)),dt]);w.prepend([new xe(P.goal.replace(new H("=",[X,dt])),P.substitution,P)])}}},"number_codes/2":function(w,P,y){var F,z=y.args[0],X=y.args[1];if(b.type.is_variable(z)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_number(z))w.throw_error(b.error.type("number",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type("list",X,y.indicator));else{var Z=b.type.is_variable(z);if(!b.type.is_variable(X)){var ie=X,Pe=!0;for(F="";ie.indicator==="./2";){if(b.type.is_character_code(ie.args[0]))F+=u(ie.args[0].value);else if(b.type.is_variable(ie.args[0]))Pe=!1;else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type("character_code",ie.args[0],y.indicator));return}ie=ie.args[1]}if(Pe=Pe&&b.type.is_empty_list(ie),!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)){w.throw_error(b.error.type("list",X,y.indicator));return}if(!Pe&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else if(Pe)if(b.type.is_variable(ie)&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ot=Ne.value;!b.type.is_number(ot)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(b.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new xe(P.goal.replace(new H("=",[z,ot])),P.substitution,P)]);return}}if(!Z){F=z.toString();for(var dt=new H("[]"),Gt=F.length-1;Gt>=0;Gt--)dt=new H(".",[new Fe(n(F,Gt),!1),dt]);w.prepend([new xe(P.goal.replace(new H("=",[X,dt])),P.substitution,P)])}}},"upcase_atom/2":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?!b.type.is_variable(z)&&!b.type.is_atom(z)?w.throw_error(b.error.type("atom",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H("=",[z,new H(F.id.toUpperCase(),[])])),P.substitution,P)]):w.throw_error(b.error.type("atom",F,y.indicator))},"downcase_atom/2":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?!b.type.is_variable(z)&&!b.type.is_atom(z)?w.throw_error(b.error.type("atom",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H("=",[z,new H(F.id.toLowerCase(),[])])),P.substitution,P)]):w.throw_error(b.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 xe(P.goal.replace(new H("atomic_list_concat",[F,new H("",[]),z])),P.substitution,P)])},"atomic_list_concat/3":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(z)||b.type.is_variable(F)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_list(F))w.throw_error(b.error.type("list",F,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_atom(X))w.throw_error(b.error.type("atom",X,y.indicator));else if(b.type.is_variable(X)){for(var ie="",Pe=F;b.type.is_term(Pe)&&Pe.indicator==="./2";){if(!b.type.is_atom(Pe.args[0])&&!b.type.is_number(Pe.args[0])){w.throw_error(b.error.type("atomic",Pe.args[0],y.indicator));return}ie!==""&&(ie+=z.id),b.type.is_atom(Pe.args[0])?ie+=Pe.args[0].id:ie+=""+Pe.args[0].value,Pe=Pe.args[1]}ie=new H(ie,[]),b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_term(Pe)||Pe.indicator!=="[]/0"?w.throw_error(b.error.type("list",F,y.indicator)):w.prepend([new xe(P.goal.replace(new H("=",[ie,X])),P.substitution,P)])}else{var Z=g(o(X.id.split(z.id),function(Ne){return new H(Ne,[])}));w.prepend([new xe(P.goal.replace(new H("=",[Z,F])),P.substitution,P)])}},"@=/2":function(w,P,y){b.compare(y.args[0],y.args[1])>0&&w.success(P)},"@>=/2":function(w,P,y){b.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],X=y.args[2];if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type("atom",F,y.indicator));else if(b.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)w.throw_error(b.type.domain("order",F,y.indicator));else{var Z=b.compare(z,X);Z=Z===0?"=":Z===-1?"<":">",w.prepend([new xe(P.goal.replace(new H("=",[F,new H(Z,[])])),P.substitution,P)])}},"is/2":function(w,P,y){var F=y.args[1].interpret(w);b.type.is_number(F)?w.prepend([new xe(P.goal.replace(new H("=",[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],X=y.args[2];if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_integer(F))w.throw_error(b.error.type("integer",F,y.indicator));else if(!b.type.is_integer(z))w.throw_error(b.error.type("integer",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_integer(X))w.throw_error(b.error.type("integer",X,y.indicator));else if(b.type.is_variable(X)){var Z=[new xe(P.goal.replace(new H("=",[X,F])),P.substitution,P)];F.value=X.value&&w.success(P)},"succ/2":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)&&b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_integer(F)?w.throw_error(b.error.type("integer",F,y.indicator)):!b.type.is_variable(z)&&!b.type.is_integer(z)?w.throw_error(b.error.type("integer",z,y.indicator)):!b.type.is_variable(F)&&F.value<0?w.throw_error(b.error.domain("not_less_than_zero",F,y.indicator)):!b.type.is_variable(z)&&z.value<0?w.throw_error(b.error.domain("not_less_than_zero",z,y.indicator)):(b.type.is_variable(z)||z.value>0)&&(b.type.is_variable(F)?w.prepend([new xe(P.goal.replace(new H("=",[F,new Fe(z.value-1,!1)])),P.substitution,P)]):w.prepend([new xe(P.goal.replace(new H("=",[z,new Fe(F.value+1,!1)])),P.substitution,P)]))},"=:=/2":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F===0&&w.success(P)},"=\\=/2":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F!==0&&w.success(P)},"/2":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F>0&&w.success(P)},">=/2":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F>=0&&w.success(P)},"var/1":function(w,P,y){b.type.is_variable(y.args[0])&&w.success(P)},"atom/1":function(w,P,y){b.type.is_atom(y.args[0])&&w.success(P)},"atomic/1":function(w,P,y){b.type.is_atomic(y.args[0])&&w.success(P)},"compound/1":function(w,P,y){b.type.is_compound(y.args[0])&&w.success(P)},"integer/1":function(w,P,y){b.type.is_integer(y.args[0])&&w.success(P)},"float/1":function(w,P,y){b.type.is_float(y.args[0])&&w.success(P)},"number/1":function(w,P,y){b.type.is_number(y.args[0])&&w.success(P)},"nonvar/1":function(w,P,y){b.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(),X=0;X0?bt[bt.length-1]:null,bt!==null&&(Gt=J(w,bt,0,w.__get_max_priority(),!1))}if(Gt.type===p&&Gt.len===bt.length-1&&an.value==="."){Gt=Gt.value.rename(w);var Qr=new H("=",[z,Gt]);if(ie.variables){var mr=g(o(Se(Gt.variables()),function(br){return new Ie(br)}));Qr=new H(",",[Qr,new H("=",[ie.variables,mr])])}if(ie.variable_names){var mr=g(o(Se(Gt.variables()),function(Wr){var Kn;for(Kn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Kn)&&w.session.renamed_variables[Kn]===Wr)break;return new H("=",[new H(Kn,[]),new Ie(Wr)])}));Qr=new H(",",[Qr,new H("=",[ie.variable_names,mr])])}if(ie.singletons){var mr=g(o(new He(Gt,null).singleton_variables(),function(Wr){var Kn;for(Kn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Kn)&&w.session.renamed_variables[Kn]===Wr)break;return new H("=",[new H(Kn,[]),new Ie(Wr)])}));Qr=new H(",",[Qr,new H("=",[ie.singletons,mr])])}w.prepend([new xe(P.goal.replace(Qr),P.substitution,P)])}else Gt.type===p?w.throw_error(b.error.syntax(bt[Gt.len],"unexpected token",!1)):w.throw_error(Gt.value)}}},"write/1":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(",",[new H("current_output",[new Ie("S")]),new H("write",[new Ie("S"),F])])),P.substitution,P)])},"write/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("false",[])]),new H(".",[new H("ignore_ops",[new H("false")]),new H(".",[new H("numbervars",[new H("true")]),new H("[]",[])])])])])),P.substitution,P)])},"writeq/1":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(",",[new H("current_output",[new Ie("S")]),new H("writeq",[new Ie("S"),F])])),P.substitution,P)])},"writeq/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("true",[])]),new H(".",[new H("ignore_ops",[new H("false")]),new H(".",[new H("numbervars",[new H("true")]),new H("[]",[])])])])])),P.substitution,P)])},"write_canonical/1":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(",",[new H("current_output",[new Ie("S")]),new H("write_canonical",[new Ie("S"),F])])),P.substitution,P)])},"write_canonical/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("true",[])]),new H(".",[new H("ignore_ops",[new H("true")]),new H(".",[new H("numbervars",[new H("false")]),new H("[]",[])])])])])),P.substitution,P)])},"write_term/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(",",[new H("current_output",[new Ie("S")]),new H("write_term",[new Ie("S"),F,z])])),P.substitution,P)])},"write_term/3":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(X))w.throw_error(b.error.type("list",X,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain("stream_or_alias",F,y.indicator));else if(!b.type.is_stream(Z)||Z.stream===null)w.throw_error(b.error.existence("stream",F,y.indicator));else if(Z.input)w.throw_error(b.error.permission("output","stream",F,y.indicator));else if(Z.type==="binary")w.throw_error(b.error.permission("output","binary_stream",F,y.indicator));else if(Z.position==="past_end_of_stream"&&Z.eof_action==="error")w.throw_error(b.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var ie={},Pe=X,Ne;b.type.is_term(Pe)&&Pe.indicator==="./2";){if(Ne=Pe.args[0],b.type.is_variable(Ne)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_write_option(Ne)){w.throw_error(b.error.domain("write_option",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id==="true",Pe=Pe.args[1]}if(Pe.indicator!=="[]/0"){b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type("list",X,y.indicator));return}else{ie.session=w.session;var ot=z.toString(ie);Z.stream.put(ot,Z.position),typeof Z.position=="number"&&(Z.position+=ot.length),w.success(P)}}},"halt/0":function(w,P,y){w.points=[]},"halt/1":function(w,P,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_integer(F)?w.points=[]:w.throw_error(b.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type("atom",F,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_flag(F))w.throw_error(b.error.domain("prolog_flag",F,y.indicator));else{var X=[];for(var Z in b.flag)if(!!b.flag.hasOwnProperty(Z)){var ie=new H(",",[new H("=",[new H(Z),F]),new H("=",[w.get_flag(Z),z])]);X.push(new xe(P.goal.replace(ie),P.substitution,P))}w.prepend(X)}},"set_prolog_flag/2":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?b.type.is_flag(F)?b.type.is_value_flag(F,z)?b.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(P)):w.throw_error(b.error.permission("modify","flag",F)):w.throw_error(b.error.domain("flag_value",new H("+",[F,z]),y.indicator)):w.throw_error(b.error.domain("prolog_flag",F,y.indicator)):w.throw_error(b.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new H("true"),new H("false")],value:new H("true"),changeable:!1},max_integer:{allowed:[new Fe(Number.MAX_SAFE_INTEGER)],value:new Fe(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Fe(Number.MIN_SAFE_INTEGER)],value:new Fe(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new H("down"),new H("toward_zero")],value:new H("toward_zero"),changeable:!1},char_conversion:{allowed:[new H("on"),new H("off")],value:new H("on"),changeable:!0},debug:{allowed:[new H("on"),new H("off")],value:new H("off"),changeable:!0},max_arity:{allowed:[new H("unbounded")],value:new H("unbounded"),changeable:!1},unknown:{allowed:[new H("error"),new H("fail"),new H("warning")],value:new H("error"),changeable:!0},double_quotes:{allowed:[new H("chars"),new H("codes"),new H("atom")],value:new H("codes"),changeable:!0},occurs_check:{allowed:[new H("false"),new H("true")],value:new H("false"),changeable:!0},dialect:{allowed:[new H("tau")],value:new H("tau"),changeable:!1},version_data:{allowed:[new H("tau",[new Fe(t.major,!1),new Fe(t.minor,!1),new Fe(t.patch,!1),new H(t.status)])],value:new H("tau",[new Fe(t.major,!1),new Fe(t.minor,!1),new Fe(t.patch,!1),new H(t.status)]),changeable:!1},nodejs:{allowed:[new H("yes"),new H("no")],value:new H(typeof hl<"u"&&hl.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 X=F.pop();if(w=X.left,P=X.right,b.type.is_term(w)&&b.type.is_term(P)){if(w.indicator!==P.indicator)return null;for(var Z=0;Zz.value?1:0:z}else return F},operate:function(w,P){if(b.type.is_operator(P)){for(var y=b.type.is_operator(P),F=[],z,X=!1,Z=0;Zw.get_flag("max_integer").value||z0?w.start+w.matches[0].length:w.start,z=y?new H("token_not_found"):new H("found",[new H(w.value.toString())]),X=new H(".",[new H("line",[new Fe(w.line+1)]),new H(".",[new H("column",[new Fe(F+1)]),new H(".",[z,new H("[]",[])])])]);return new H("error",[new H("syntax_error",[new H(P)]),X])},syntax_by_predicate:function(w,P){return new H("error",[new H("syntax_error",[new H(w)]),ee(P)])}},warning:{singleton:function(w,P,y){for(var F=new H("[]"),z=w.length-1;z>=0;z--)F=new H(".",[new Ie(w[z]),F]);return new H("warning",[new H("singleton_variables",[F,ee(P)]),new H(".",[new H("line",[new Fe(y,!1)]),new H("[]")])])},failed_goal:function(w,P){return new H("warning",[new H("failed_goal",[w]),new H(".",[new H("line",[new Fe(P,!1)]),new H("[]")])])}},format_variable:function(w){return"_"+w},format_answer:function(w,P,F){P instanceof Te&&(P=P.thread);var F=F||{};if(F.session=P?P.session:void 0,b.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,X="";if(b.type.is_substitution(w)){var Z=w.domain(!0);w=w.filter(function(Ne,ot){return!b.type.is_variable(ot)||Z.indexOf(ot.id)!==-1&&Ne!==ot.id})}for(var ie in w.links)!w.links.hasOwnProperty(ie)||(z++,X!==""&&(X+=", "),X+=ie.toString(F)+" = "+w.links[ie].toString(F));var Pe=typeof P>"u"||P.points.length>0?" ;":".";return z===0?"true"+Pe:X+Pe},flatten_error:function(w){if(!b.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 b.type.Session(w)}};typeof hl<"u"?hl.exports=b:window.pl=b})()});function ime(t,e,r){t.prepend(r.map(o=>new Ta.default.type.State(e.goal.replace(o),e.substitution,e)))}function yH(t){let e=ome.get(t.session);if(e==null)throw new Error("Assertion failed: A project should have been registered for the active session");return e}function ame(t,e){ome.set(t,e),t.consult(`:- use_module(library(${zgt.id})).`)}var EH,Ta,sme,u0,Vgt,Jgt,ome,zgt,lme=Et(()=>{Ye();EH=$e(d2()),Ta=$e(mH()),sme=$e(ve("vm")),{is_atom:u0,is_variable:Vgt,is_instantiated_list:Jgt}=Ta.default.type;ome=new WeakMap;zgt=new Ta.default.type.Module("constraints",{["project_workspaces_by_descriptor/3"]:(t,e,r)=>{let[o,a,n]=r.args;if(!u0(o)||!u0(a)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let u=W.parseIdent(o.id),A=W.makeDescriptor(u,a.id),h=yH(t).tryWorkspaceByDescriptor(A);Vgt(n)&&h!==null&&ime(t,e,[new Ta.default.type.Term("=",[n,new Ta.default.type.Term(String(h.relativeCwd))])]),u0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},["workspace_field/3"]:(t,e,r)=>{let[o,a,n]=r.args;if(!u0(o)||!u0(a)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let A=yH(t).tryWorkspaceByCwd(o.id);if(A==null)return;let p=(0,EH.default)(A.manifest.raw,a.id);typeof p>"u"||ime(t,e,[new Ta.default.type.Term("=",[n,new Ta.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},["workspace_field_test/3"]:(t,e,r)=>{let[o,a,n]=r.args;t.prepend([new Ta.default.type.State(e.goal.replace(new Ta.default.type.Term("workspace_field_test",[o,a,n,new Ta.default.type.Term("[]",[])])),e.substitution,e)])},["workspace_field_test/4"]:(t,e,r)=>{let[o,a,n,u]=r.args;if(!u0(o)||!u0(a)||!u0(n)||!Jgt(u)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let p=yH(t).tryWorkspaceByCwd(o.id);if(p==null)return;let h=(0,EH.default)(p.manifest.raw,a.id);if(typeof h>"u")return;let E={$$:h};for(let[v,x]of u.toJavaScript().entries())E[`$${v}`]=x;sme.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 b2={};Vt(b2,{Constraints:()=>P2,DependencyType:()=>fme});function to(t){if(t instanceof DC.default.type.Num)return t.value;if(t instanceof DC.default.type.Term)switch(t.indicator){case"throw/1":return to(t.args[0]);case"error/1":return to(t.args[0]);case"error/2":if(t.args[0]instanceof DC.default.type.Term&&t.args[0].indicator==="syntax_error/1")return Object.assign(to(t.args[0]),...to(t.args[1]));{let e=to(t.args[0]);return e.message+=` (in ${to(t.args[1])})`,e}case"syntax_error/1":return new zt(43,`Syntax error: ${to(t.args[0])}`);case"existence_error/2":return new zt(44,`Existence error: ${to(t.args[0])} ${to(t.args[1])} not found`);case"instantiation_error/0":return new zt(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:to(t.args[0])};case"column/1":return{column:to(t.args[0])};case"found/1":return{found:to(t.args[0])};case"./2":return[to(t.args[0])].concat(to(t.args[1]));case"//2":return`${to(t.args[0])}/${to(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function ume(t){let e;try{e=to(t)}catch(r){throw typeof r=="string"?new zt(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 em(t){return t.id==="null"?null:`${t.toJavaScript()}`}function Xgt(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 A0(t){return typeof t=="string"?`'${t}'`:"[]"}var Ame,DC,fme,cme,CH,P2,x2=Et(()=>{Ye();Ye();St();Ame=$e(jde()),DC=$e(mH());v2();lme();(0,Ame.default)(DC.default);fme=(o=>(o.Dependencies="dependencies",o.DevDependencies="devDependencies",o.PeerDependencies="peerDependencies",o))(fme||{}),cme=["dependencies","devDependencies","peerDependencies"];CH=class{constructor(e,r){let o=1e3*e.workspaces.length;this.session=DC.default.create(o),ame(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 ume(r);for(;;){let o=await this.fetchNextAnswer();if(o===null)throw new zt(79,"Resolution limit exceeded");if(!o)break;if(o.id==="throw")throw ume(o);yield o}}};P2=class{constructor(e){this.source="";this.project=e;let r=e.configuration.get("constraintsPath");oe.existsSync(r)&&(this.source=oe.readFileSync(r,"utf8"))}static async find(e){return new P2(e)}getProjectDatabase(){let e="";for(let r of cme)e+=`dependency_type(${r}). +`;for(let r of this.project.workspacesByCwd.values()){let o=r.relativeCwd;e+=`workspace(${A0(o)}). +`,e+=`workspace_ident(${A0(o)}, ${A0(W.stringifyIdent(r.anchoredLocator))}). +`,e+=`workspace_version(${A0(o)}, ${A0(r.manifest.version)}). +`;for(let a of cme)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${A0(o)}, ${A0(W.stringifyIdent(n))}, ${A0(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 CH(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(),o=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:u,dependencyType:A}of e){let p=B2([A,W.stringifyIdent(n)]),h=_e.getMapWithDefault(o,a.cwd);_e.getMapWithDefault(h,p).set(u??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:u}of r){let A=B2(n),p=_e.getMapWithDefault(o,a.cwd);_e.getMapWithDefault(p,A).set(JSON.parse(u)??void 0,new Set)}return{manifestUpdates:o,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let o of e.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=V.resolve(this.project.cwd,em(o.links.WorkspaceCwd)),n=em(o.links.DependencyIdent),u=em(o.links.DependencyRange),A=em(o.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=W.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:u,dependencyType:A})}return _e.sortMap(r,[({dependencyRange:o})=>o!==null?"0":"1",({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({dependencyIdent:o})=>W.stringifyIdent(o)])}async genEnforcedFields(e){let r=[];for await(let o of e.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=V.resolve(this.project.cwd,em(o.links.WorkspaceCwd)),n=em(o.links.FieldPath),u=Xgt(o.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let A=this.project.getWorkspaceByCwd(a);r.push({workspace:A,fieldPath:n,fieldValue:u})}return _e.sortMap(r,[({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({fieldPath:o})=>o])}async*query(e){let r=this.createSession();for await(let o of r.makeQuery(e)){let a={};for(let[n,u]of Object.entries(o.links))n!=="_"&&(a[n]=em(u));yield a}}}});var wme=_(Ik=>{"use strict";Object.defineProperty(Ik,"__esModule",{value:!0});function q2(t){let e=[...t.caches],r=e.shift();return r===void 0?Cme():{get(o,a,n={miss:()=>Promise.resolve()}){return r.get(o,a,n).catch(()=>q2({caches:e}).get(o,a,n))},set(o,a){return r.set(o,a).catch(()=>q2({caches:e}).set(o,a))},delete(o){return r.delete(o).catch(()=>q2({caches:e}).delete(o))},clear(){return r.clear().catch(()=>q2({caches:e}).clear())}}}function Cme(){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()}}}Ik.createFallbackableCache=q2;Ik.createNullCache=Cme});var Bme=_((QWt,Ime)=>{Ime.exports=wme()});var vme=_(TH=>{"use strict";Object.defineProperty(TH,"__esModule",{value:!0});function ddt(t={serializable:!0}){let e={};return{get(r,o,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 u=o(),A=a&&a.miss||(()=>Promise.resolve());return u.then(p=>A(p)).then(()=>u)},set(r,o){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}TH.createInMemoryCache=ddt});var Sme=_((RWt,Dme)=>{Dme.exports=vme()});var bme=_(Zc=>{"use strict";Object.defineProperty(Zc,"__esModule",{value:!0});function mdt(t,e,r){let o={"x-algolia-api-key":r,"x-algolia-application-id":e};return{headers(){return t===NH.WithinHeaders?o:{}},queryParameters(){return t===NH.WithinQueryParameters?o:{}}}}function ydt(t){let e=0,r=()=>(e++,new Promise(o=>{setTimeout(()=>{o(t(r))},Math.min(100*e,1e3))}));return t(r)}function Pme(t,e=(r,o)=>Promise.resolve()){return Object.assign(t,{wait(r){return Pme(t.then(o=>Promise.all([e(o,r),o])).then(o=>o[1]))}})}function Edt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),o=t[e];t[e]=t[r],t[r]=o}return t}function Cdt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function wdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var Idt="4.14.2",Bdt=t=>()=>t.transporter.requester.destroy(),NH={WithinQueryParameters:0,WithinHeaders:1};Zc.AuthMode=NH;Zc.addMethods=Cdt;Zc.createAuth=mdt;Zc.createRetryablePromise=ydt;Zc.createWaitablePromise=Pme;Zc.destroy=Bdt;Zc.encode=wdt;Zc.shuffle=Edt;Zc.version=Idt});var Y2=_((NWt,xme)=>{xme.exports=bme()});var kme=_(LH=>{"use strict";Object.defineProperty(LH,"__esModule",{value:!0});var vdt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};LH.MethodEnum=vdt});var W2=_((OWt,Qme)=>{Qme.exports=kme()});var Wme=_(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});var Rme=W2();function OH(t,e){let r=t||{},o=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(o[a]=r[a])}),{data:Object.entries(o).length>0?o:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var K2={Read:1,Write:2,Any:3},xC={Up:1,Down:2,Timeouted:3},Tme=2*60*1e3;function UH(t,e=xC.Up){return{...t,status:e,lastUpdate:Date.now()}}function Nme(t){return t.status===xC.Up||Date.now()-t.lastUpdate>Tme}function Lme(t){return t.status===xC.Timeouted&&Date.now()-t.lastUpdate<=Tme}function _H(t){return typeof t=="string"?{protocol:"https",url:t,accept:K2.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||K2.Any}}function Ddt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(UH(r))))).then(r=>{let o=r.filter(A=>Nme(A)),a=r.filter(A=>Lme(A)),n=[...o,...a],u=n.length>0?n.map(A=>_H(A)):e;return{getTimeout(A,p){return(a.length===0&&A===0?1:a.length+3+A)*p},statelessHosts:u}})}var Sdt=({isTimedOut:t,status:e})=>!t&&~~e===0,Pdt=t=>{let e=t.status;return t.isTimedOut||Sdt(t)||~~(e/100)!==2&&~~(e/100)!==4},bdt=({status:t})=>~~(t/100)===2,xdt=(t,e)=>Pdt(t)?e.onRetry(t):bdt(t)?e.onSuccess(t):e.onFail(t);function Fme(t,e,r,o){let a=[],n=Hme(r,o),u=jme(t,o),A=r.method,p=r.method!==Rme.MethodEnum.Get?{}:{...r.data,...o.data},h={"x-algolia-agent":t.userAgent.value,...t.queryParameters,...p,...o.queryParameters},E=0,I=(v,x)=>{let C=v.pop();if(C===void 0)throw Yme(MH(a));let R={data:n,headers:u,method:A,url:Ume(C,r.path,h),connectTimeout:x(E,t.timeouts.connect),responseTimeout:x(E,o.timeout)},L=J=>{let te={request:R,response:J,host:C,triesLeft:v.length};return a.push(te),te},U={onSuccess:J=>Ome(J),onRetry(J){let te=L(J);return J.isTimedOut&&E++,Promise.all([t.logger.info("Retryable failure",HH(te)),t.hostsCache.set(C,UH(C,J.isTimedOut?xC.Timeouted:xC.Down))]).then(()=>I(v,x))},onFail(J){throw L(J),Mme(J,MH(a))}};return t.requester.send(R).then(J=>xdt(J,U))};return Ddt(t.hostsCache,e).then(v=>I([...v.statelessHosts].reverse(),v.getTimeout))}function kdt(t){let{hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,hosts:p,queryParameters:h,headers:E}=t,I={hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,headers:E,queryParameters:h,hosts:p.map(v=>_H(v)),read(v,x){let C=OH(x,I.timeouts.read),R=()=>Fme(I,I.hosts.filter(J=>(J.accept&K2.Read)!==0),v,C);if((C.cacheable!==void 0?C.cacheable:v.cacheable)!==!0)return R();let U={request:v,mappedRequestOptions:C,transporter:{queryParameters:I.queryParameters,headers:I.headers}};return I.responsesCache.get(U,()=>I.requestsCache.get(U,()=>I.requestsCache.set(U,R()).then(J=>Promise.all([I.requestsCache.delete(U),J]),J=>Promise.all([I.requestsCache.delete(U),Promise.reject(J)])).then(([J,te])=>te)),{miss:J=>I.responsesCache.set(U,J)})},write(v,x){return Fme(I,I.hosts.filter(C=>(C.accept&K2.Write)!==0),v,OH(x,I.timeouts.write))}};return I}function Qdt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let o=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return e.value.indexOf(o)===-1&&(e.value=`${e.value}${o}`),e}};return e}function Ome(t){try{return JSON.parse(t.content)}catch(e){throw qme(e.message,t)}}function Mme({content:t,status:e},r){let o=t;try{o=JSON.parse(t).message}catch{}return Gme(o,e,r)}function Fdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function Ume(t,e,r){let o=_me(r),a=`${t.protocol}://${t.url}/${e.charAt(0)==="/"?e.substr(1):e}`;return o.length&&(a+=`?${o}`),a}function _me(t){let e=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(t).map(r=>Fdt("%s=%s",r,e(t[r])?JSON.stringify(t[r]):t[r])).join("&")}function Hme(t,e){if(t.method===Rme.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 jme(t,e){let r={...t.headers,...e.headers},o={};return Object.keys(r).forEach(a=>{let n=r[a];o[a.toLowerCase()]=n}),o}function MH(t){return t.map(e=>HH(e))}function HH(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 Gme(t,e,r){return{name:"ApiError",message:t,status:e,transporterStackTrace:r}}function qme(t,e){return{name:"DeserializationError",message:t,response:e}}function Yme(t){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:t}}Fi.CallEnum=K2;Fi.HostStatusEnum=xC;Fi.createApiError=Gme;Fi.createDeserializationError=qme;Fi.createMappedRequestOptions=OH;Fi.createRetryError=Yme;Fi.createStatefulHost=UH;Fi.createStatelessHost=_H;Fi.createTransporter=kdt;Fi.createUserAgent=Qdt;Fi.deserializeFailure=Mme;Fi.deserializeSuccess=Ome;Fi.isStatefulHostTimeouted=Lme;Fi.isStatefulHostUp=Nme;Fi.serializeData=Hme;Fi.serializeHeaders=jme;Fi.serializeQueryParameters=_me;Fi.serializeUrl=Ume;Fi.stackFrameWithoutCredentials=HH;Fi.stackTraceWithoutCredentials=MH});var V2=_((UWt,Kme)=>{Kme.exports=Wme()});var Vme=_(m0=>{"use strict";Object.defineProperty(m0,"__esModule",{value:!0});var kC=Y2(),Rdt=V2(),J2=W2(),Tdt=t=>{let e=t.region||"us",r=kC.createAuth(kC.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Rdt.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 kC.addMethods({appId:a,transporter:o},t.methods)},Ndt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Post,path:"2/abtests",data:e},r),Ldt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Delete,path:kC.encode("2/abtests/%s",e)},r),Odt=t=>(e,r)=>t.transporter.read({method:J2.MethodEnum.Get,path:kC.encode("2/abtests/%s",e)},r),Mdt=t=>e=>t.transporter.read({method:J2.MethodEnum.Get,path:"2/abtests"},e),Udt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Post,path:kC.encode("2/abtests/%s/stop",e)},r);m0.addABTest=Ndt;m0.createAnalyticsClient=Tdt;m0.deleteABTest=Ldt;m0.getABTest=Odt;m0.getABTests=Mdt;m0.stopABTest=Udt});var zme=_((HWt,Jme)=>{Jme.exports=Vme()});var Zme=_(z2=>{"use strict";Object.defineProperty(z2,"__esModule",{value:!0});var jH=Y2(),_dt=V2(),Xme=W2(),Hdt=t=>{let e=t.region||"us",r=jH.createAuth(jH.AuthMode.WithinHeaders,t.appId,t.apiKey),o=_dt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return jH.addMethods({appId:t.appId,transporter:o},t.methods)},jdt=t=>e=>t.transporter.read({method:Xme.MethodEnum.Get,path:"1/strategies/personalization"},e),Gdt=t=>(e,r)=>t.transporter.write({method:Xme.MethodEnum.Post,path:"1/strategies/personalization",data:e},r);z2.createPersonalizationClient=Hdt;z2.getPersonalizationStrategy=jdt;z2.setPersonalizationStrategy=Gdt});var eye=_((GWt,$me)=>{$me.exports=Zme()});var hye=_(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var qt=Y2(),Na=V2(),Ir=W2(),qdt=ve("crypto");function Bk(t){let e=r=>t.request(r).then(o=>{if(t.batch!==void 0&&t.batch(o.hits),!t.shouldStop(o))return o.cursor?e({cursor:o.cursor}):e({page:(r.page||0)+1})});return e({})}var Ydt=t=>{let e=t.appId,r=qt.createAuth(t.authMode!==void 0?t.authMode:qt.AuthMode.WithinHeaders,e,t.apiKey),o=Na.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:Na.CallEnum.Read},{url:`${e}.algolia.net`,accept:Na.CallEnum.Write}].concat(qt.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:o,appId:e,addAlgoliaAgent(n,u){o.userAgent.add({segment:n,version:u})},clearCache(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})}};return qt.addMethods(a,t.methods)};function tye(){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 rye(){return{name:"ObjectNotFoundError",message:"Object not found."}}function nye(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var Wdt=t=>(e,r)=>{let{queryParameters:o,...a}=r||{},n={acl:e,...o!==void 0?{queryParameters:o}:{}},u=(A,p)=>qt.createRetryablePromise(h=>X2(t)(A.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:"1/keys",data:n},a),u)},Kdt=t=>(e,r,o)=>{let a=Na.createMappedRequestOptions(o);return a.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:Ir.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},Vdt=t=>(e,r,o)=>t.transporter.write({method:Ir.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:e,cluster:r}},o),Jdt=t=>(e,r)=>qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(o,a)=>QC(t)(o.taskID,a)),vk=t=>(e,r,o)=>{let a=(n,u)=>Z2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/operation",e),data:{operation:"copy",destination:r}},o),a)},zdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Rules]}),Xdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Settings]}),Zdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Synonyms]}),$dt=t=>(e,r)=>e.method===Ir.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),emt=t=>(e,r)=>{let o=(a,n)=>qt.createRetryablePromise(u=>X2(t)(e,n).then(u).catch(A=>{if(A.status!==404)throw A}));return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:qt.encode("1/keys/%s",e)},r),o)},tmt=t=>(e,r,o)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},rmt=()=>(t,e)=>{let r=Na.serializeQueryParameters(e),o=qdt.createHmac("sha256",t).update(r).digest("hex");return Buffer.from(o+r).toString("base64")},X2=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:qt.encode("1/keys/%s",e)},r),iye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:qt.encode("1/task/%s",e.toString())},r),nmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:"/1/dictionaries/*/settings"},e),imt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:"1/logs"},e),smt=()=>t=>{let e=Buffer.from(t,"base64").toString("ascii"),r=/validUntil=(\d+)/,o=e.match(r);if(o===null)throw nye();return parseInt(o[1],10)-Math.round(new Date().getTime()/1e3)},omt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:"1/clusters/mapping/top"},e),amt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:qt.encode("1/clusters/mapping/%s",e)},r),lmt=t=>e=>{let{retrieveMappings:r,...o}=e||{};return r===!0&&(o.getClusters=!0),t.transporter.read({method:Ir.MethodEnum.Get,path:"1/clusters/mapping/pending"},o)},Z2=t=>(e,r={})=>{let o={transporter:t.transporter,appId:t.appId,indexName:e};return qt.addMethods(o,r.methods)},cmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:"1/keys"},e),umt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:"1/clusters"},e),Amt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:"1/indexes"},e),fmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:"1/clusters/mapping"},e),pmt=t=>(e,r,o)=>{let a=(n,u)=>Z2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/operation",e),data:{operation:"move",destination:r}},o),a)},hmt=t=>(e,r)=>{let o=(a,n)=>Promise.all(Object.keys(a.taskID).map(u=>Z2(t)(u,{methods:{waitTask:Zi}}).waitTask(a.taskID[u],n)));return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:e}},r),o)},gmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:e}},r),dmt=t=>(e,r)=>{let o=e.map(a=>({...a,params:Na.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:Ir.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:o},cacheable:!0},r)},mmt=t=>(e,r)=>Promise.all(e.map(o=>{let{facetName:a,facetQuery:n,...u}=o.params;return Z2(t)(o.indexName,{methods:{searchForFacetValues:Aye}}).searchForFacetValues(a,n,{...r,...u})})),ymt=t=>(e,r)=>{let o=Na.createMappedRequestOptions(r);return o.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:Ir.MethodEnum.Delete,path:"1/clusters/mapping"},o)},Emt=t=>(e,r,o)=>{let a=r.map(n=>({action:"addEntry",body:n}));return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},Cmt=t=>(e,r)=>{let o=(a,n)=>qt.createRetryablePromise(u=>X2(t)(e,n).catch(A=>{if(A.status!==404)throw A;return u()}));return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/keys/%s/restore",e)},r),o)},wmt=t=>(e,r,o)=>{let a=r.map(n=>({action:"addEntry",body:n}));return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},Imt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:qt.encode("/1/dictionaries/%s/search",e),data:{query:r},cacheable:!0},o),Bmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:e}},r),vmt=t=>(e,r)=>qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:e},r),(o,a)=>QC(t)(o.taskID,a)),Dmt=t=>(e,r)=>{let o=Object.assign({},r),{queryParameters:a,...n}=r||{},u=a?{queryParameters:a}:{},A=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=E=>Object.keys(o).filter(I=>A.indexOf(I)!==-1).every(I=>E[I]===o[I]),h=(E,I)=>qt.createRetryablePromise(v=>X2(t)(e,I).then(x=>p(x)?Promise.resolve():v()));return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:qt.encode("1/keys/%s",e),data:u},n),h)},QC=t=>(e,r)=>qt.createRetryablePromise(o=>iye(t)(e,r).then(a=>a.status!=="published"?o():void 0)),sye=t=>(e,r)=>{let o=(a,n)=>Zi(t)(a.taskID,n);return qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/batch",t.indexName),data:{requests:e}},r),o)},Smt=t=>e=>Bk({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/browse",t.indexName),data:r},e)}),Pmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Bk({shouldStop:o=>o.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},bmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Bk({shouldStop:o=>o.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Dk=t=>(e,r,o)=>{let{batchSize:a,...n}=o||{},u={taskIDs:[],objectIDs:[]},A=(p=0)=>{let h=[],E;for(E=p;E({action:r,body:I})),n).then(I=>(u.objectIDs=u.objectIDs.concat(I.objectIDs),u.taskIDs.push(I.taskID),E++,A(E)))};return qt.createWaitablePromise(A(),(p,h)=>Promise.all(p.taskIDs.map(E=>Zi(t)(E,h))))},xmt=t=>e=>qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/clear",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),kmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Na.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/rules/clear",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Qmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Na.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/synonyms/clear",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Fmt=t=>(e,r)=>qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/deleteByQuery",t.indexName),data:e},r),(o,a)=>Zi(t)(o.taskID,a)),Rmt=t=>e=>qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:qt.encode("1/indexes/%s",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),Tmt=t=>(e,r)=>qt.createWaitablePromise(oye(t)([e],r).then(o=>({taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),oye=t=>(e,r)=>{let o=e.map(a=>({objectID:a}));return Dk(t)(o,nm.DeleteObject,r)},Nmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:qt.encode("1/indexes/%s/rules/%s",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Lmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:qt.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Omt=t=>e=>aye(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),Mmt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:qt.encode("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},o),Umt=t=>(e,r)=>{let{query:o,paginate:a,...n}=r||{},u=0,A=()=>uye(t)(o||"",{...n,page:u}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:u};if(u++,a===!1||u>=p.nbPages)throw rye();return A()});return A()},_mt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:qt.encode("1/indexes/%s/%s",t.indexName,e)},r),Hmt=()=>(t,e)=>{for(let[r,o]of Object.entries(t.hits))if(o.objectID===e)return parseInt(r,10);return-1},jmt=t=>(e,r)=>{let{attributesToRetrieve:o,...a}=r||{},n=e.map(u=>({indexName:t.indexName,objectID:u,...o?{attributesToRetrieve:o}:{}}));return t.transporter.read({method:Ir.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},Gmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:qt.encode("1/indexes/%s/rules/%s",t.indexName,e)},r),aye=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:qt.encode("1/indexes/%s/settings",t.indexName),data:{getVersion:2}},e),qmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:qt.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},r),lye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:qt.encode("1/indexes/%s/task/%s",t.indexName,e.toString())},r),Ymt=t=>(e,r)=>qt.createWaitablePromise(cye(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),cye=t=>(e,r)=>{let{createIfNotExists:o,...a}=r||{},n=o?nm.PartialUpdateObject:nm.PartialUpdateObjectNoCreate;return Dk(t)(e,n,a)},Wmt=t=>(e,r)=>{let{safe:o,autoGenerateObjectIDIfNotExist:a,batchSize:n,...u}=r||{},A=(C,R,L,U)=>qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/operation",C),data:{operation:L,destination:R}},U),(J,te)=>Zi(t)(J.taskID,te)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=GH({appId:t.appId,transporter:t.transporter,indexName:h}),I=[],v=A(t.indexName,h,"copy",{...u,scope:["settings","synonyms","rules"]});I.push(v);let x=(o?v.wait(u):v).then(()=>{let C=E(e,{...u,autoGenerateObjectIDIfNotExist:a,batchSize:n});return I.push(C),o?C.wait(u):C}).then(()=>{let C=A(h,t.indexName,"move",u);return I.push(C),o?C.wait(u):C}).then(()=>Promise.all(I)).then(([C,R,L])=>({objectIDs:R.objectIDs,taskIDs:[C.taskID,...R.taskIDs,L.taskID]}));return qt.createWaitablePromise(x,(C,R)=>Promise.all(I.map(L=>L.wait(R))))},Kmt=t=>(e,r)=>qH(t)(e,{...r,clearExistingRules:!0}),Vmt=t=>(e,r)=>YH(t)(e,{...r,clearExistingSynonyms:!0}),Jmt=t=>(e,r)=>qt.createWaitablePromise(GH(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),GH=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:o,...a}=r||{},n=o?nm.AddObject:nm.UpdateObject;if(n===nm.UpdateObject){for(let u of e)if(u.objectID===void 0)return qt.createWaitablePromise(Promise.reject(tye()))}return Dk(t)(e,n,a)},zmt=t=>(e,r)=>qH(t)([e],r),qH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingRules:a,...n}=r||{},u=Na.createMappedRequestOptions(n);return o&&(u.queryParameters.forwardToReplicas=1),a&&(u.queryParameters.clearExistingRules=1),qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/rules/batch",t.indexName),data:e},u),(A,p)=>Zi(t)(A.taskID,p))},Xmt=t=>(e,r)=>YH(t)([e],r),YH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingSynonyms:a,replaceExistingSynonyms:n,...u}=r||{},A=Na.createMappedRequestOptions(u);return o&&(A.queryParameters.forwardToReplicas=1),(n||a)&&(A.queryParameters.replaceExistingSynonyms=1),qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/synonyms/batch",t.indexName),data:e},A),(p,h)=>Zi(t)(p.taskID,h))},uye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r),Aye=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},o),fye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/rules/search",t.indexName),data:{query:e}},r),pye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:qt.encode("1/indexes/%s/synonyms/search",t.indexName),data:{query:e}},r),Zmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),qt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:qt.encode("1/indexes/%s/settings",t.indexName),data:e},n),(u,A)=>Zi(t)(u.taskID,A))},Zi=t=>(e,r)=>qt.createRetryablePromise(o=>lye(t)(e,r).then(a=>a.status!=="published"?o():void 0)),$mt={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},nm={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},Sk={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},eyt={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},tyt={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Ft.ApiKeyACLEnum=$mt;Ft.BatchActionEnum=nm;Ft.ScopeEnum=Sk;Ft.StrategyEnum=eyt;Ft.SynonymEnum=tyt;Ft.addApiKey=Wdt;Ft.assignUserID=Kdt;Ft.assignUserIDs=Vdt;Ft.batch=sye;Ft.browseObjects=Smt;Ft.browseRules=Pmt;Ft.browseSynonyms=bmt;Ft.chunkedBatch=Dk;Ft.clearDictionaryEntries=Jdt;Ft.clearObjects=xmt;Ft.clearRules=kmt;Ft.clearSynonyms=Qmt;Ft.copyIndex=vk;Ft.copyRules=zdt;Ft.copySettings=Xdt;Ft.copySynonyms=Zdt;Ft.createBrowsablePromise=Bk;Ft.createMissingObjectIDError=tye;Ft.createObjectNotFoundError=rye;Ft.createSearchClient=Ydt;Ft.createValidUntilNotFoundError=nye;Ft.customRequest=$dt;Ft.deleteApiKey=emt;Ft.deleteBy=Fmt;Ft.deleteDictionaryEntries=tmt;Ft.deleteIndex=Rmt;Ft.deleteObject=Tmt;Ft.deleteObjects=oye;Ft.deleteRule=Nmt;Ft.deleteSynonym=Lmt;Ft.exists=Omt;Ft.findAnswers=Mmt;Ft.findObject=Umt;Ft.generateSecuredApiKey=rmt;Ft.getApiKey=X2;Ft.getAppTask=iye;Ft.getDictionarySettings=nmt;Ft.getLogs=imt;Ft.getObject=_mt;Ft.getObjectPosition=Hmt;Ft.getObjects=jmt;Ft.getRule=Gmt;Ft.getSecuredApiKeyRemainingValidity=smt;Ft.getSettings=aye;Ft.getSynonym=qmt;Ft.getTask=lye;Ft.getTopUserIDs=omt;Ft.getUserID=amt;Ft.hasPendingMappings=lmt;Ft.initIndex=Z2;Ft.listApiKeys=cmt;Ft.listClusters=umt;Ft.listIndices=Amt;Ft.listUserIDs=fmt;Ft.moveIndex=pmt;Ft.multipleBatch=hmt;Ft.multipleGetObjects=gmt;Ft.multipleQueries=dmt;Ft.multipleSearchForFacetValues=mmt;Ft.partialUpdateObject=Ymt;Ft.partialUpdateObjects=cye;Ft.removeUserID=ymt;Ft.replaceAllObjects=Wmt;Ft.replaceAllRules=Kmt;Ft.replaceAllSynonyms=Vmt;Ft.replaceDictionaryEntries=Emt;Ft.restoreApiKey=Cmt;Ft.saveDictionaryEntries=wmt;Ft.saveObject=Jmt;Ft.saveObjects=GH;Ft.saveRule=zmt;Ft.saveRules=qH;Ft.saveSynonym=Xmt;Ft.saveSynonyms=YH;Ft.search=uye;Ft.searchDictionaryEntries=Imt;Ft.searchForFacetValues=Aye;Ft.searchRules=fye;Ft.searchSynonyms=pye;Ft.searchUserIDs=Bmt;Ft.setDictionarySettings=vmt;Ft.setSettings=Zmt;Ft.updateApiKey=Dmt;Ft.waitAppTask=QC;Ft.waitTask=Zi});var dye=_((YWt,gye)=>{gye.exports=hye()});var mye=_(Pk=>{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});function ryt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var nyt={Debug:1,Info:2,Error:3};Pk.LogLevelEnum=nyt;Pk.createNullLogger=ryt});var Eye=_((KWt,yye)=>{yye.exports=mye()});var Bye=_(WH=>{"use strict";Object.defineProperty(WH,"__esModule",{value:!0});var Cye=ve("http"),wye=ve("https"),iyt=ve("url"),Iye={keepAlive:!0},syt=new Cye.Agent(Iye),oyt=new wye.Agent(Iye);function ayt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:o={}}={}){let a=e||t||syt,n=r||t||oyt;return{send(u){return new Promise(A=>{let p=iyt.parse(u.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...o,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:u.method,headers:{...o&&o.headers?o.headers:{},...u.headers},...p.port!==void 0?{port:p.port||""}:{}},I=(p.protocol==="https:"?wye:Cye).request(E,R=>{let L=[];R.on("data",U=>{L=L.concat(U)}),R.on("end",()=>{clearTimeout(x),clearTimeout(C),A({status:R.statusCode||0,content:Buffer.concat(L).toString(),isTimedOut:!1})})}),v=(R,L)=>setTimeout(()=>{I.abort(),A({status:0,content:L,isTimedOut:!0})},R*1e3),x=v(u.connectTimeout,"Connection timeout"),C;I.on("error",R=>{clearTimeout(x),clearTimeout(C),A({status:0,content:R.message,isTimedOut:!1})}),I.once("response",()=>{clearTimeout(x),C=v(u.responseTimeout,"Socket timeout")}),u.data!==void 0&&I.write(u.data),I.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}WH.createNodeHttpRequester=ayt});var Dye=_((JWt,vye)=>{vye.exports=Bye()});var xye=_((zWt,bye)=>{"use strict";var Sye=Bme(),lyt=Sme(),FC=zme(),VH=Y2(),KH=eye(),Ut=dye(),cyt=Eye(),uyt=Dye(),Ayt=V2();function Pye(t,e,r){let o={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:uyt.createNodeHttpRequester(),logger:cyt.createNullLogger(),responsesCache:Sye.createNullCache(),requestsCache:Sye.createNullCache(),hostsCache:lyt.createInMemoryCache(),userAgent:Ayt.createUserAgent(VH.version).add({segment:"Node.js",version:process.versions.node})},a={...o,...r},n=()=>u=>KH.createPersonalizationClient({...o,...u,methods:{getPersonalizationStrategy:KH.getPersonalizationStrategy,setPersonalizationStrategy:KH.setPersonalizationStrategy}});return Ut.createSearchClient({...a,methods:{search:Ut.multipleQueries,searchForFacetValues:Ut.multipleSearchForFacetValues,multipleBatch:Ut.multipleBatch,multipleGetObjects:Ut.multipleGetObjects,multipleQueries:Ut.multipleQueries,copyIndex:Ut.copyIndex,copySettings:Ut.copySettings,copyRules:Ut.copyRules,copySynonyms:Ut.copySynonyms,moveIndex:Ut.moveIndex,listIndices:Ut.listIndices,getLogs:Ut.getLogs,listClusters:Ut.listClusters,multipleSearchForFacetValues:Ut.multipleSearchForFacetValues,getApiKey:Ut.getApiKey,addApiKey:Ut.addApiKey,listApiKeys:Ut.listApiKeys,updateApiKey:Ut.updateApiKey,deleteApiKey:Ut.deleteApiKey,restoreApiKey:Ut.restoreApiKey,assignUserID:Ut.assignUserID,assignUserIDs:Ut.assignUserIDs,getUserID:Ut.getUserID,searchUserIDs:Ut.searchUserIDs,listUserIDs:Ut.listUserIDs,getTopUserIDs:Ut.getTopUserIDs,removeUserID:Ut.removeUserID,hasPendingMappings:Ut.hasPendingMappings,generateSecuredApiKey:Ut.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Ut.getSecuredApiKeyRemainingValidity,destroy:VH.destroy,clearDictionaryEntries:Ut.clearDictionaryEntries,deleteDictionaryEntries:Ut.deleteDictionaryEntries,getDictionarySettings:Ut.getDictionarySettings,getAppTask:Ut.getAppTask,replaceDictionaryEntries:Ut.replaceDictionaryEntries,saveDictionaryEntries:Ut.saveDictionaryEntries,searchDictionaryEntries:Ut.searchDictionaryEntries,setDictionarySettings:Ut.setDictionarySettings,waitAppTask:Ut.waitAppTask,customRequest:Ut.customRequest,initIndex:u=>A=>Ut.initIndex(u)(A,{methods:{batch:Ut.batch,delete:Ut.deleteIndex,findAnswers:Ut.findAnswers,getObject:Ut.getObject,getObjects:Ut.getObjects,saveObject:Ut.saveObject,saveObjects:Ut.saveObjects,search:Ut.search,searchForFacetValues:Ut.searchForFacetValues,waitTask:Ut.waitTask,setSettings:Ut.setSettings,getSettings:Ut.getSettings,partialUpdateObject:Ut.partialUpdateObject,partialUpdateObjects:Ut.partialUpdateObjects,deleteObject:Ut.deleteObject,deleteObjects:Ut.deleteObjects,deleteBy:Ut.deleteBy,clearObjects:Ut.clearObjects,browseObjects:Ut.browseObjects,getObjectPosition:Ut.getObjectPosition,findObject:Ut.findObject,exists:Ut.exists,saveSynonym:Ut.saveSynonym,saveSynonyms:Ut.saveSynonyms,getSynonym:Ut.getSynonym,searchSynonyms:Ut.searchSynonyms,browseSynonyms:Ut.browseSynonyms,deleteSynonym:Ut.deleteSynonym,clearSynonyms:Ut.clearSynonyms,replaceAllObjects:Ut.replaceAllObjects,replaceAllSynonyms:Ut.replaceAllSynonyms,searchRules:Ut.searchRules,getRule:Ut.getRule,deleteRule:Ut.deleteRule,saveRule:Ut.saveRule,saveRules:Ut.saveRules,replaceAllRules:Ut.replaceAllRules,browseRules:Ut.browseRules,clearRules:Ut.clearRules}}),initAnalytics:()=>u=>FC.createAnalyticsClient({...o,...u,methods:{addABTest:FC.addABTest,getABTest:FC.getABTest,getABTests:FC.getABTests,stopABTest:FC.stopABTest,deleteABTest:FC.deleteABTest}}),initPersonalization:n,initRecommendation:()=>u=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(u))}})}Pye.version=VH.version;bye.exports=Pye});var zH=_((XWt,JH)=>{var kye=xye();JH.exports=kye;JH.exports.default=kye});var $H=_(($Wt,Rye)=>{"use strict";var Fye=Object.getOwnPropertySymbols,pyt=Object.prototype.hasOwnProperty,hyt=Object.prototype.propertyIsEnumerable;function gyt(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function dyt(){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 o=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(o.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}}Rye.exports=dyt()?Object.assign:function(t,e){for(var r,o=gyt(t),a,n=1;n{"use strict";var i6=$H(),$c=typeof Symbol=="function"&&Symbol.for,$2=$c?Symbol.for("react.element"):60103,myt=$c?Symbol.for("react.portal"):60106,yyt=$c?Symbol.for("react.fragment"):60107,Eyt=$c?Symbol.for("react.strict_mode"):60108,Cyt=$c?Symbol.for("react.profiler"):60114,wyt=$c?Symbol.for("react.provider"):60109,Iyt=$c?Symbol.for("react.context"):60110,Byt=$c?Symbol.for("react.forward_ref"):60112,vyt=$c?Symbol.for("react.suspense"):60113,Dyt=$c?Symbol.for("react.memo"):60115,Syt=$c?Symbol.for("react.lazy"):60116,Tye=typeof Symbol=="function"&&Symbol.iterator;function eB(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;rbk.length&&bk.push(t)}function t6(t,e,r,o){var a=typeof t;(a==="undefined"||a==="boolean")&&(t=null);var n=!1;if(t===null)n=!0;else switch(a){case"string":case"number":n=!0;break;case"object":switch(t.$$typeof){case $2:case myt:n=!0}}if(n)return r(o,t,e===""?"."+e6(t,0):e),1;if(n=0,e=e===""?".":e+":",Array.isArray(t))for(var u=0;u{"use strict";Wye.exports=Yye()});var u6=_((rKt,c6)=>{"use strict";var An=c6.exports;c6.exports.default=An;var Ln="\x1B[",tB="\x1B]",TC="\x07",xk=";",Kye=process.env.TERM_PROGRAM==="Apple_Terminal";An.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?Ln+(t+1)+"G":Ln+(e+1)+";"+(t+1)+"H"};An.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=Ln+-t+"D":t>0&&(r+=Ln+t+"C"),e<0?r+=Ln+-e+"A":e>0&&(r+=Ln+e+"B"),r};An.cursorUp=(t=1)=>Ln+t+"A";An.cursorDown=(t=1)=>Ln+t+"B";An.cursorForward=(t=1)=>Ln+t+"C";An.cursorBackward=(t=1)=>Ln+t+"D";An.cursorLeft=Ln+"G";An.cursorSavePosition=Kye?"\x1B7":Ln+"s";An.cursorRestorePosition=Kye?"\x1B8":Ln+"u";An.cursorGetPosition=Ln+"6n";An.cursorNextLine=Ln+"E";An.cursorPrevLine=Ln+"F";An.cursorHide=Ln+"?25l";An.cursorShow=Ln+"?25h";An.eraseLines=t=>{let e="";for(let r=0;r[tB,"8",xk,xk,e,TC,t,tB,"8",xk,xk,TC].join("");An.image=(t,e={})=>{let r=`${tB}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")+TC};An.iTerm={setCwd:(t=process.cwd())=>`${tB}50;CurrentDir=${t}${TC}`,annotation:(t,e={})=>{let r=`${tB}1337;`,o=typeof e.x<"u",a=typeof e.y<"u";if((o||a)&&!(o&&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+=(o?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+TC}}});var Jye=_((nKt,A6)=>{"use strict";var Vye=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};A6.exports=Vye;A6.exports.default=Vye});var Xye=_((iKt,Qk)=>{"use strict";var Fyt=Jye(),kk=new WeakMap,zye=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,o=0,a=t.displayName||t.name||"",n=function(...u){if(kk.set(n,++o),o===1)r=t.apply(this,u),t=null;else if(e.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return Fyt(n,t),kk.set(n,o),n};Qk.exports=zye;Qk.exports.default=zye;Qk.exports.callCount=t=>{if(!kk.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return kk.get(t)}});var Zye=_((sKt,Fk)=>{Fk.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&Fk.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Fk.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var h6=_((oKt,OC)=>{var Ei=global.process,im=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"};im(Ei)?($ye=ve("assert"),NC=Zye(),eEe=/^win/i.test(Ei.platform),rB=ve("events"),typeof rB!="function"&&(rB=rB.EventEmitter),Ei.__signal_exit_emitter__?Ts=Ei.__signal_exit_emitter__:(Ts=Ei.__signal_exit_emitter__=new rB,Ts.count=0,Ts.emitted={}),Ts.infinite||(Ts.setMaxListeners(1/0),Ts.infinite=!0),OC.exports=function(t,e){if(!im(global.process))return function(){};$ye.equal(typeof t,"function","a callback must be provided for exit handler"),LC===!1&&f6();var r="exit";e&&e.alwaysLast&&(r="afterexit");var o=function(){Ts.removeListener(r,t),Ts.listeners("exit").length===0&&Ts.listeners("afterexit").length===0&&Rk()};return Ts.on(r,t),o},Rk=function(){!LC||!im(global.process)||(LC=!1,NC.forEach(function(e){try{Ei.removeListener(e,Tk[e])}catch{}}),Ei.emit=Nk,Ei.reallyExit=p6,Ts.count-=1)},OC.exports.unload=Rk,sm=function(e,r,o){Ts.emitted[e]||(Ts.emitted[e]=!0,Ts.emit(e,r,o))},Tk={},NC.forEach(function(t){Tk[t]=function(){if(!!im(global.process)){var r=Ei.listeners(t);r.length===Ts.count&&(Rk(),sm("exit",null,t),sm("afterexit",null,t),eEe&&t==="SIGHUP"&&(t="SIGINT"),Ei.kill(Ei.pid,t))}}}),OC.exports.signals=function(){return NC},LC=!1,f6=function(){LC||!im(global.process)||(LC=!0,Ts.count+=1,NC=NC.filter(function(e){try{return Ei.on(e,Tk[e]),!0}catch{return!1}}),Ei.emit=rEe,Ei.reallyExit=tEe)},OC.exports.load=f6,p6=Ei.reallyExit,tEe=function(e){!im(global.process)||(Ei.exitCode=e||0,sm("exit",Ei.exitCode,null),sm("afterexit",Ei.exitCode,null),p6.call(Ei,Ei.exitCode))},Nk=Ei.emit,rEe=function(e,r){if(e==="exit"&&im(global.process)){r!==void 0&&(Ei.exitCode=r);var o=Nk.apply(this,arguments);return sm("exit",Ei.exitCode,null),sm("afterexit",Ei.exitCode,null),o}else return Nk.apply(this,arguments)}):OC.exports=function(){return function(){}};var $ye,NC,eEe,rB,Ts,Rk,sm,Tk,LC,f6,p6,tEe,Nk,rEe});var iEe=_((aKt,nEe)=>{"use strict";var Ryt=Xye(),Tyt=h6();nEe.exports=Ryt(()=>{Tyt(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var g6=_(MC=>{"use strict";var Nyt=iEe(),Lk=!1;MC.show=(t=process.stderr)=>{!t.isTTY||(Lk=!1,t.write("\x1B[?25h"))};MC.hide=(t=process.stderr)=>{!t.isTTY||(Nyt(),Lk=!0,t.write("\x1B[?25l"))};MC.toggle=(t,e)=>{t!==void 0&&(Lk=t),Lk?MC.show(e):MC.hide(e)}});var lEe=_(nB=>{"use strict";var aEe=nB&&nB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nB,"__esModule",{value:!0});var sEe=aEe(u6()),oEe=aEe(g6()),Lyt=(t,{showCursor:e=!1}={})=>{let r=0,o="",a=!1,n=u=>{!e&&!a&&(oEe.default.hide(),a=!0);let A=u+` +`;A!==o&&(o=A,t.write(sEe.default.eraseLines(r)+A),r=A.split(` +`).length)};return n.clear=()=>{t.write(sEe.default.eraseLines(r)),o="",r=0},n.done=()=>{o="",r=0,e||(oEe.default.show(),a=!1)},n};nB.default={create:Lyt}});var cEe=_((uKt,Oyt)=>{Oyt.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 fEe=_(gl=>{"use strict";var AEe=cEe(),pA=process.env;Object.defineProperty(gl,"_vendors",{value:AEe.map(function(t){return t.constant})});gl.name=null;gl.isPR=null;AEe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(o){return uEe(o)});if(gl[t.constant]=r,r)switch(gl.name=t.name,typeof t.pr){case"string":gl.isPR=!!pA[t.pr];break;case"object":"env"in t.pr?gl.isPR=t.pr.env in pA&&pA[t.pr.env]!==t.pr.ne:"any"in t.pr?gl.isPR=t.pr.any.some(function(o){return!!pA[o]}):gl.isPR=uEe(t.pr);break;default:gl.isPR=null}});gl.isCI=!!(pA.CI||pA.CONTINUOUS_INTEGRATION||pA.BUILD_NUMBER||pA.RUN_ID||gl.name);function uEe(t){return typeof t=="string"?!!pA[t]:Object.keys(t).every(function(e){return pA[e]===t[e]})}});var hEe=_((fKt,pEe)=>{"use strict";pEe.exports=fEe().isCI});var dEe=_((pKt,gEe)=>{"use strict";var Myt=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};gEe.exports=(t,{include:e,exclude:r}={})=>{let o=a=>{let n=u=>typeof u=="string"?a===u:u.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of Myt(t.constructor.prototype)){if(n==="constructor"||!o(n))continue;let u=Reflect.getOwnPropertyDescriptor(a,n);u&&typeof u.value=="function"&&(t[n]=t[n].bind(t))}return t}});var BEe=_(kn=>{"use strict";Object.defineProperty(kn,"__esModule",{value:!0});var _C,oB,Hk,jk,I6;typeof window>"u"||typeof MessageChannel!="function"?(UC=null,d6=null,m6=function(){if(UC!==null)try{var t=kn.unstable_now();UC(!0,t),UC=null}catch(e){throw setTimeout(m6,0),e}},mEe=Date.now(),kn.unstable_now=function(){return Date.now()-mEe},_C=function(t){UC!==null?setTimeout(_C,0,t):(UC=t,setTimeout(m6,0))},oB=function(t,e){d6=setTimeout(t,e)},Hk=function(){clearTimeout(d6)},jk=function(){return!1},I6=kn.unstable_forceFrameRate=function(){}):(Ok=window.performance,y6=window.Date,yEe=window.setTimeout,EEe=window.clearTimeout,typeof console<"u"&&(CEe=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://fb.me/react-polyfills"),typeof CEe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")),typeof Ok=="object"&&typeof Ok.now=="function"?kn.unstable_now=function(){return Ok.now()}:(wEe=y6.now(),kn.unstable_now=function(){return y6.now()-wEe}),iB=!1,sB=null,Mk=-1,E6=5,C6=0,jk=function(){return kn.unstable_now()>=C6},I6=function(){},kn.unstable_forceFrameRate=function(t){0>t||125_k(u,r))p!==void 0&&0>_k(p,u)?(t[o]=p,t[A]=r,o=A):(t[o]=u,t[n]=r,o=n);else if(p!==void 0&&0>_k(p,r))t[o]=p,t[A]=r,o=A;else break e}}return e}return null}function _k(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var eu=[],y0=[],Uyt=1,na=null,Lo=3,qk=!1,om=!1,aB=!1;function Yk(t){for(var e=nc(y0);e!==null;){if(e.callback===null)Gk(y0);else if(e.startTime<=t)Gk(y0),e.sortIndex=e.expirationTime,B6(eu,e);else break;e=nc(y0)}}function v6(t){if(aB=!1,Yk(t),!om)if(nc(eu)!==null)om=!0,_C(D6);else{var e=nc(y0);e!==null&&oB(v6,e.startTime-t)}}function D6(t,e){om=!1,aB&&(aB=!1,Hk()),qk=!0;var r=Lo;try{for(Yk(e),na=nc(eu);na!==null&&(!(na.expirationTime>e)||t&&!jk());){var o=na.callback;if(o!==null){na.callback=null,Lo=na.priorityLevel;var a=o(na.expirationTime<=e);e=kn.unstable_now(),typeof a=="function"?na.callback=a:na===nc(eu)&&Gk(eu),Yk(e)}else Gk(eu);na=nc(eu)}if(na!==null)var n=!0;else{var u=nc(y0);u!==null&&oB(v6,u.startTime-e),n=!1}return n}finally{na=null,Lo=r,qk=!1}}function IEe(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var _yt=I6;kn.unstable_ImmediatePriority=1;kn.unstable_UserBlockingPriority=2;kn.unstable_NormalPriority=3;kn.unstable_IdlePriority=5;kn.unstable_LowPriority=4;kn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=Lo;Lo=t;try{return e()}finally{Lo=r}};kn.unstable_next=function(t){switch(Lo){case 1:case 2:case 3:var e=3;break;default:e=Lo}var r=Lo;Lo=e;try{return t()}finally{Lo=r}};kn.unstable_scheduleCallback=function(t,e,r){var o=kn.unstable_now();if(typeof r=="object"&&r!==null){var a=r.delay;a=typeof a=="number"&&0o?(t.sortIndex=a,B6(y0,t),nc(eu)===null&&t===nc(y0)&&(aB?Hk():aB=!0,oB(v6,a-o))):(t.sortIndex=r,B6(eu,t),om||qk||(om=!0,_C(D6))),t};kn.unstable_cancelCallback=function(t){t.callback=null};kn.unstable_wrapCallback=function(t){var e=Lo;return function(){var r=Lo;Lo=e;try{return t.apply(this,arguments)}finally{Lo=r}}};kn.unstable_getCurrentPriorityLevel=function(){return Lo};kn.unstable_shouldYield=function(){var t=kn.unstable_now();Yk(t);var e=nc(eu);return e!==na&&na!==null&&e!==null&&e.callback!==null&&e.startTime<=t&&e.expirationTime{"use strict";vEe.exports=BEe()});var DEe=_((dKt,lB)=>{lB.exports=function t(e){"use strict";var r=$H(),o=on(),a=S6();function n(S){for(var D="https://reactjs.org/docs/error-decoder.html?invariant="+S,T=1;Tao||(S.current=yl[ao],yl[ao]=null,ao--)}function On(S,D){ao++,yl[ao]=S.current,S.current=D}var Ni={},Mn={current:Ni},_i={current:!1},tr=Ni;function Oe(S,D){var T=S.type.contextTypes;if(!T)return Ni;var j=S.stateNode;if(j&&j.__reactInternalMemoizedUnmaskedChildContext===D)return j.__reactInternalMemoizedMaskedChildContext;var Y={},Ae;for(Ae in T)Y[Ae]=D[Ae];return j&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=D,S.__reactInternalMemoizedMaskedChildContext=Y),Y}function ii(S){return S=S.childContextTypes,S!=null}function Ma(S){Vn(_i,S),Vn(Mn,S)}function hr(S){Vn(_i,S),Vn(Mn,S)}function uc(S,D,T){if(Mn.current!==Ni)throw Error(n(168));On(Mn,D,S),On(_i,T,S)}function uu(S,D,T){var j=S.stateNode;if(S=D.childContextTypes,typeof j.getChildContext!="function")return T;j=j.getChildContext();for(var Y in j)if(!(Y in S))throw Error(n(108,he(D)||"Unknown",Y));return r({},T,{},j)}function Ac(S){var D=S.stateNode;return D=D&&D.__reactInternalMemoizedMergedChildContext||Ni,tr=Mn.current,On(Mn,D,S),On(_i,_i.current,S),!0}function El(S,D,T){var j=S.stateNode;if(!j)throw Error(n(169));T?(D=uu(S,D,tr),j.__reactInternalMemoizedMergedChildContext=D,Vn(_i,S),Vn(Mn,S),On(Mn,D,S)):Vn(_i,S),On(_i,T,S)}var DA=a.unstable_runWithPriority,Au=a.unstable_scheduleCallback,Ce=a.unstable_cancelCallback,Rt=a.unstable_shouldYield,fc=a.unstable_requestPaint,Hi=a.unstable_now,fu=a.unstable_getCurrentPriorityLevel,Yt=a.unstable_ImmediatePriority,Cl=a.unstable_UserBlockingPriority,SA=a.unstable_NormalPriority,up=a.unstable_LowPriority,pc=a.unstable_IdlePriority,PA={},Qn=fc!==void 0?fc:function(){},hi=null,hc=null,bA=!1,sa=Hi(),Li=1e4>sa?Hi:function(){return Hi()-sa};function _o(){switch(fu()){case Yt:return 99;case Cl:return 98;case SA:return 97;case up:return 96;case pc:return 95;default:throw Error(n(332))}}function Ze(S){switch(S){case 99:return Yt;case 98:return Cl;case 97:return SA;case 96:return up;case 95:return pc;default:throw Error(n(332))}}function lo(S,D){return S=Ze(S),DA(S,D)}function gc(S,D,T){return S=Ze(S),Au(S,D,T)}function pu(S){return hi===null?(hi=[S],hc=Au(Yt,hu)):hi.push(S),PA}function ji(){if(hc!==null){var S=hc;hc=null,Ce(S)}hu()}function hu(){if(!bA&&hi!==null){bA=!0;var S=0;try{var D=hi;lo(99,function(){for(;S=D&&(Go=!0),S.firstContext=null)}function ms(S,D){if(aa!==S&&D!==!1&&D!==0)if((typeof D!="number"||D===1073741823)&&(aa=S,D=1073741823),D={context:S,observedBits:D,next:null},Us===null){if(co===null)throw Error(n(308));Us=D,co.dependencies={expirationTime:0,firstContext:D,responders:null}}else Us=Us.next=D;return b?S._currentValue:S._currentValue2}var _s=!1;function Un(S){return{baseState:S,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Sn(S){return{baseState:S.baseState,firstUpdate:S.firstUpdate,lastUpdate:S.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function ys(S,D){return{expirationTime:S,suspenseConfig:D,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function We(S,D){S.lastUpdate===null?S.firstUpdate=S.lastUpdate=D:(S.lastUpdate.next=D,S.lastUpdate=D)}function tt(S,D){var T=S.alternate;if(T===null){var j=S.updateQueue,Y=null;j===null&&(j=S.updateQueue=Un(S.memoizedState))}else j=S.updateQueue,Y=T.updateQueue,j===null?Y===null?(j=S.updateQueue=Un(S.memoizedState),Y=T.updateQueue=Un(T.memoizedState)):j=S.updateQueue=Sn(Y):Y===null&&(Y=T.updateQueue=Sn(j));Y===null||j===Y?We(j,D):j.lastUpdate===null||Y.lastUpdate===null?(We(j,D),We(Y,D)):(We(j,D),Y.lastUpdate=D)}function It(S,D){var T=S.updateQueue;T=T===null?S.updateQueue=Un(S.memoizedState):nr(S,T),T.lastCapturedUpdate===null?T.firstCapturedUpdate=T.lastCapturedUpdate=D:(T.lastCapturedUpdate.next=D,T.lastCapturedUpdate=D)}function nr(S,D){var T=S.alternate;return T!==null&&D===T.updateQueue&&(D=S.updateQueue=Sn(D)),D}function $(S,D,T,j,Y,Ae){switch(T.tag){case 1:return S=T.payload,typeof S=="function"?S.call(Ae,j,Y):S;case 3:S.effectTag=S.effectTag&-4097|64;case 0:if(S=T.payload,Y=typeof S=="function"?S.call(Ae,j,Y):S,Y==null)break;return r({},j,Y);case 2:_s=!0}return j}function ye(S,D,T,j,Y){_s=!1,D=nr(S,D);for(var Ae=D.baseState,De=null,vt=0,wt=D.firstUpdate,xt=Ae;wt!==null;){var _r=wt.expirationTime;_rbn?(ai=Fr,Fr=null):ai=Fr.sibling;var tn=di(rt,Fr,ft[bn],Wt);if(tn===null){Fr===null&&(Fr=ai);break}S&&Fr&&tn.alternate===null&&D(rt,Fr),Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn,Fr=ai}if(bn===ft.length)return T(rt,Fr),vr;if(Fr===null){for(;bnbn?(ai=Fr,Fr=null):ai=Fr.sibling;var ho=di(rt,Fr,tn.value,Wt);if(ho===null){Fr===null&&(Fr=ai);break}S&&Fr&&ho.alternate===null&&D(rt,Fr),Ve=Ae(ho,Ve,bn),Pn===null?vr=ho:Pn.sibling=ho,Pn=ho,Fr=ai}if(tn.done)return T(rt,Fr),vr;if(Fr===null){for(;!tn.done;bn++,tn=ft.next())tn=is(rt,tn.value,Wt),tn!==null&&(Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn);return vr}for(Fr=j(rt,Fr);!tn.done;bn++,tn=ft.next())tn=po(Fr,rt,bn,tn.value,Wt),tn!==null&&(S&&tn.alternate!==null&&Fr.delete(tn.key===null?bn:tn.key),Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn);return S&&Fr.forEach(function(vF){return D(rt,vF)}),vr}return function(rt,Ve,ft,Wt){var vr=typeof ft=="object"&&ft!==null&&ft.type===E&&ft.key===null;vr&&(ft=ft.props.children);var Pn=typeof ft=="object"&&ft!==null;if(Pn)switch(ft.$$typeof){case p:e:{for(Pn=ft.key,vr=Ve;vr!==null;){if(vr.key===Pn)if(vr.tag===7?ft.type===E:vr.elementType===ft.type){T(rt,vr.sibling),Ve=Y(vr,ft.type===E?ft.props.children:ft.props,Wt),Ve.ref=QA(rt,vr,ft),Ve.return=rt,rt=Ve;break e}else{T(rt,vr);break}else D(rt,vr);vr=vr.sibling}ft.type===E?(Ve=bu(ft.props.children,rt.mode,Wt,ft.key),Ve.return=rt,rt=Ve):(Wt=jm(ft.type,ft.key,ft.props,null,rt.mode,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,rt=Wt)}return De(rt);case h:e:{for(vr=ft.key;Ve!==null;){if(Ve.key===vr)if(Ve.tag===4&&Ve.stateNode.containerInfo===ft.containerInfo&&Ve.stateNode.implementation===ft.implementation){T(rt,Ve.sibling),Ve=Y(Ve,ft.children||[],Wt),Ve.return=rt,rt=Ve;break e}else{T(rt,Ve);break}else D(rt,Ve);Ve=Ve.sibling}Ve=Rw(ft,rt.mode,Wt),Ve.return=rt,rt=Ve}return De(rt)}if(typeof ft=="string"||typeof ft=="number")return ft=""+ft,Ve!==null&&Ve.tag===6?(T(rt,Ve.sibling),Ve=Y(Ve,ft,Wt),Ve.return=rt,rt=Ve):(T(rt,Ve),Ve=Fw(ft,rt.mode,Wt),Ve.return=rt,rt=Ve),De(rt);if(kA(ft))return VA(rt,Ve,ft,Wt);if(ce(ft))return Yo(rt,Ve,ft,Wt);if(Pn&&Ap(rt,ft),typeof ft>"u"&&!vr)switch(rt.tag){case 1:case 0:throw rt=rt.type,Error(n(152,rt.displayName||rt.name||"Component"))}return T(rt,Ve)}}var gu=ig(!0),sg=ig(!1),du={},uo={current:du},FA={current:du},mc={current:du};function ca(S){if(S===du)throw Error(n(174));return S}function og(S,D){On(mc,D,S),On(FA,S,S),On(uo,du,S),D=ne(D),Vn(uo,S),On(uo,D,S)}function yc(S){Vn(uo,S),Vn(FA,S),Vn(mc,S)}function Pm(S){var D=ca(mc.current),T=ca(uo.current);D=ee(T,S.type,D),T!==D&&(On(FA,S,S),On(uo,D,S))}function ag(S){FA.current===S&&(Vn(uo,S),Vn(FA,S))}var $n={current:0};function fp(S){for(var D=S;D!==null;){if(D.tag===13){var T=D.memoizedState;if(T!==null&&(T=T.dehydrated,T===null||Ls(T)||so(T)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if((D.effectTag&64)!==0)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break;for(;D.sibling===null;){if(D.return===null||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}function lg(S,D){return{responder:S,props:D}}var RA=u.ReactCurrentDispatcher,Hs=u.ReactCurrentBatchConfig,mu=0,Ha=null,qi=null,ua=null,yu=null,Es=null,Ec=null,Cc=0,q=null,Dt=0,wl=!1,xi=null,wc=0;function ct(){throw Error(n(321))}function Eu(S,D){if(D===null)return!1;for(var T=0;TCc&&(Cc=_r,Hm(Cc))):(Pw(_r,wt.suspenseConfig),Ae=wt.eagerReducer===S?wt.eagerState:S(Ae,wt.action)),De=wt,wt=wt.next}while(wt!==null&&wt!==j);xt||(vt=De,Y=Ae),hs(Ae,D.memoizedState)||(Go=!0),D.memoizedState=Ae,D.baseUpdate=vt,D.baseState=Y,T.lastRenderedState=Ae}return[D.memoizedState,T.dispatch]}function ug(S){var D=TA();return typeof S=="function"&&(S=S()),D.memoizedState=D.baseState=S,S=D.queue={last:null,dispatch:null,lastRenderedReducer:Br,lastRenderedState:S},S=S.dispatch=gg.bind(null,Ha,S),[D.memoizedState,S]}function Ag(S){return Cs(Br,S)}function fg(S,D,T,j){return S={tag:S,create:D,destroy:T,deps:j,next:null},q===null?(q={lastEffect:null},q.lastEffect=S.next=S):(D=q.lastEffect,D===null?q.lastEffect=S.next=S:(T=D.next,D.next=S,S.next=T,q.lastEffect=S)),S}function hp(S,D,T,j){var Y=TA();Dt|=S,Y.memoizedState=fg(D,T,void 0,j===void 0?null:j)}function Ic(S,D,T,j){var Y=pp();j=j===void 0?null:j;var Ae=void 0;if(qi!==null){var De=qi.memoizedState;if(Ae=De.destroy,j!==null&&Eu(j,De.deps)){fg(0,T,Ae,j);return}}Dt|=S,Y.memoizedState=fg(D,T,Ae,j)}function Ct(S,D){return hp(516,192,S,D)}function bm(S,D){return Ic(516,192,S,D)}function pg(S,D){if(typeof D=="function")return S=S(),D(S),function(){D(null)};if(D!=null)return S=S(),D.current=S,function(){D.current=null}}function hg(){}function Cu(S,D){return TA().memoizedState=[S,D===void 0?null:D],S}function xm(S,D){var T=pp();D=D===void 0?null:D;var j=T.memoizedState;return j!==null&&D!==null&&Eu(D,j[1])?j[0]:(T.memoizedState=[S,D],S)}function gg(S,D,T){if(!(25>wc))throw Error(n(301));var j=S.alternate;if(S===Ha||j!==null&&j===Ha)if(wl=!0,S={expirationTime:mu,suspenseConfig:null,action:T,eagerReducer:null,eagerState:null,next:null},xi===null&&(xi=new Map),T=xi.get(D),T===void 0)xi.set(D,S);else{for(D=T;D.next!==null;)D=D.next;D.next=S}else{var Y=ga(),Ae=ht.suspense;Y=jA(Y,S,Ae),Ae={expirationTime:Y,suspenseConfig:Ae,action:T,eagerReducer:null,eagerState:null,next:null};var De=D.last;if(De===null)Ae.next=Ae;else{var vt=De.next;vt!==null&&(Ae.next=vt),De.next=Ae}if(D.last=Ae,S.expirationTime===0&&(j===null||j.expirationTime===0)&&(j=D.lastRenderedReducer,j!==null))try{var wt=D.lastRenderedState,xt=j(wt,T);if(Ae.eagerReducer=j,Ae.eagerState=xt,hs(xt,wt))return}catch{}finally{}Pc(S,Y)}}var wu={readContext:ms,useCallback:ct,useContext:ct,useEffect:ct,useImperativeHandle:ct,useLayoutEffect:ct,useMemo:ct,useReducer:ct,useRef:ct,useState:ct,useDebugValue:ct,useResponder:ct,useDeferredValue:ct,useTransition:ct},Ew={readContext:ms,useCallback:Cu,useContext:ms,useEffect:Ct,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,hp(4,36,pg.bind(null,D,S),T)},useLayoutEffect:function(S,D){return hp(4,36,S,D)},useMemo:function(S,D){var T=TA();return D=D===void 0?null:D,S=S(),T.memoizedState=[S,D],S},useReducer:function(S,D,T){var j=TA();return D=T!==void 0?T(D):D,j.memoizedState=j.baseState=D,S=j.queue={last:null,dispatch:null,lastRenderedReducer:S,lastRenderedState:D},S=S.dispatch=gg.bind(null,Ha,S),[j.memoizedState,S]},useRef:function(S){var D=TA();return S={current:S},D.memoizedState=S},useState:ug,useDebugValue:hg,useResponder:lg,useDeferredValue:function(S,D){var T=ug(S),j=T[0],Y=T[1];return Ct(function(){a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(S)}finally{Hs.suspense=Ae}})},[S,D]),j},useTransition:function(S){var D=ug(!1),T=D[0],j=D[1];return[Cu(function(Y){j(!0),a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=S===void 0?null:S;try{j(!1),Y()}finally{Hs.suspense=Ae}})},[S,T]),T]}},km={readContext:ms,useCallback:xm,useContext:ms,useEffect:bm,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,Ic(4,36,pg.bind(null,D,S),T)},useLayoutEffect:function(S,D){return Ic(4,36,S,D)},useMemo:function(S,D){var T=pp();D=D===void 0?null:D;var j=T.memoizedState;return j!==null&&D!==null&&Eu(D,j[1])?j[0]:(S=S(),T.memoizedState=[S,D],S)},useReducer:Cs,useRef:function(){return pp().memoizedState},useState:Ag,useDebugValue:hg,useResponder:lg,useDeferredValue:function(S,D){var T=Ag(S),j=T[0],Y=T[1];return bm(function(){a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(S)}finally{Hs.suspense=Ae}})},[S,D]),j},useTransition:function(S){var D=Ag(!1),T=D[0],j=D[1];return[xm(function(Y){j(!0),a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=S===void 0?null:S;try{j(!1),Y()}finally{Hs.suspense=Ae}})},[S,T]),T]}},Aa=null,Bc=null,Il=!1;function Iu(S,D){var T=Dl(5,null,null,0);T.elementType="DELETED",T.type="DELETED",T.stateNode=D,T.return=S,T.effectTag=8,S.lastEffect!==null?(S.lastEffect.nextEffect=T,S.lastEffect=T):S.firstEffect=S.lastEffect=T}function dg(S,D){switch(S.tag){case 5:return D=io(D,S.type,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 6:return D=Pi(D,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function NA(S){if(Il){var D=Bc;if(D){var T=D;if(!dg(S,D)){if(D=cc(T),!D||!dg(S,D)){S.effectTag=S.effectTag&-1025|2,Il=!1,Aa=S;return}Iu(Aa,T)}Aa=S,Bc=cu(D)}else S.effectTag=S.effectTag&-1025|2,Il=!1,Aa=S}}function gp(S){for(S=S.return;S!==null&&S.tag!==5&&S.tag!==3&&S.tag!==13;)S=S.return;Aa=S}function ja(S){if(!y||S!==Aa)return!1;if(!Il)return gp(S),Il=!0,!1;var D=S.type;if(S.tag!==5||D!=="head"&&D!=="body"&&!ke(D,S.memoizedProps))for(D=Bc;D;)Iu(S,D),D=cc(D);if(gp(S),S.tag===13){if(!y)throw Error(n(316));if(S=S.memoizedState,S=S!==null?S.dehydrated:null,!S)throw Error(n(317));Bc=Os(S)}else Bc=Aa?cc(S.stateNode):null;return!0}function mg(){y&&(Bc=Aa=null,Il=!1)}var dp=u.ReactCurrentOwner,Go=!1;function ws(S,D,T,j){D.child=S===null?sg(D,null,T,j):gu(D,S.child,T,j)}function Ii(S,D,T,j,Y){T=T.render;var Ae=D.ref;return ds(D,Y),j=cg(S,D,T,j,Ae,Y),S!==null&&!Go?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=Y&&(S.expirationTime=0),si(S,D,Y)):(D.effectTag|=1,ws(S,D,j,Y),D.child)}function Qm(S,D,T,j,Y,Ae){if(S===null){var De=T.type;return typeof De=="function"&&!Qw(De)&&De.defaultProps===void 0&&T.compare===null&&T.defaultProps===void 0?(D.tag=15,D.type=De,Fm(S,D,De,j,Y,Ae)):(S=jm(T.type,null,j,null,D.mode,Ae),S.ref=D.ref,S.return=D,D.child=S)}return De=S.child,YD)&&HA.set(S,D)))}}function Dg(S,D){S.expirationTimeS?D:S)}function fo(S){if(S.lastExpiredTime!==0)S.callbackExpirationTime=1073741823,S.callbackPriority=99,S.callbackNode=pu(Sw.bind(null,S));else{var D=_m(S),T=S.callbackNode;if(D===0)T!==null&&(S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90);else{var j=ga();if(D===1073741823?j=99:D===1||D===2?j=95:(j=10*(1073741821-D)-10*(1073741821-j),j=0>=j?99:250>=j?98:5250>=j?97:95),T!==null){var Y=S.callbackPriority;if(S.callbackExpirationTime===D&&Y>=j)return;T!==PA&&Ce(T)}S.callbackExpirationTime=D,S.callbackPriority=j,D=D===1073741823?pu(Sw.bind(null,S)):gc(j,Wv.bind(null,S),{timeout:10*(1073741821-D)-Li()}),S.callbackNode=D}}}function Wv(S,D){if(Um=0,D)return D=ga(),Gm(S,D),fo(S),null;var T=_m(S);if(T!==0){if(D=S.callbackNode,(yr&(rs|js))!==En)throw Error(n(327));if(Bp(),S===gi&&T===ns||Su(S,T),Or!==null){var j=yr;yr|=rs;var Y=qA(S);do try{pF();break}catch(vt){GA(S,vt)}while(1);if(la(),yr=j,Cp.current=Y,Yi===Nm)throw D=Lm,Su(S,T),KA(S,T),fo(S),D;if(Or===null)switch(Y=S.finishedWork=S.current.alternate,S.finishedExpirationTime=T,j=Yi,gi=null,j){case Bu:case Nm:throw Error(n(345));case Bi:Gm(S,2=T){S.lastPingedTime=T,Su(S,T);break}}if(Ae=_m(S),Ae!==0&&Ae!==T)break;if(j!==0&&j!==T){S.lastPingedTime=j;break}S.timeoutHandle=Te(Pu.bind(null,S),Y);break}Pu(S);break;case vl:if(KA(S,T),j=S.lastSuspendedTime,T===j&&(S.nextKnownPendingLevel=bw(Y)),UA&&(Y=S.lastPingedTime,Y===0||Y>=T)){S.lastPingedTime=T,Su(S,T);break}if(Y=_m(S),Y!==0&&Y!==T)break;if(j!==0&&j!==T){S.lastPingedTime=j;break}if(MA!==1073741823?j=10*(1073741821-MA)-Li():Ya===1073741823?j=0:(j=10*(1073741821-Ya)-5e3,Y=Li(),T=10*(1073741821-T)-Y,j=Y-j,0>j&&(j=0),j=(120>j?120:480>j?480:1080>j?1080:1920>j?1920:3e3>j?3e3:4320>j?4320:1960*ww(j/1960))-j,T=j?j=0:(Y=De.busyDelayMs|0,Ae=Li()-(10*(1073741821-Ae)-(De.timeoutMs|0||5e3)),j=Ae<=Y?0:Y+j-Ae),10 component higher in the tree to provide a loading indicator or placeholder to display.`+ml(Y))}Yi!==Sc&&(Yi=Bi),Ae=Eg(Ae,Y),wt=j;do{switch(wt.tag){case 3:De=Ae,wt.effectTag|=4096,wt.expirationTime=D;var Ve=qv(wt,De,D);It(wt,Ve);break e;case 1:De=Ae;var ft=wt.type,Wt=wt.stateNode;if((wt.effectTag&64)===0&&(typeof ft.getDerivedStateFromError=="function"||Wt!==null&&typeof Wt.componentDidCatch=="function"&&(Du===null||!Du.has(Wt)))){wt.effectTag|=4096,wt.expirationTime=D;var vr=Yv(wt,De,D);It(wt,vr);break e}}wt=wt.return}while(wt!==null)}Or=zv(Or)}catch(Pn){D=Pn;continue}break}while(1)}function qA(){var S=Cp.current;return Cp.current=wu,S===null?wu:S}function Pw(S,D){Swp&&(wp=S)}function fF(){for(;Or!==null;)Or=Jv(Or)}function pF(){for(;Or!==null&&!Rt();)Or=Jv(Or)}function Jv(S){var D=Zv(S.alternate,S,ns);return S.memoizedProps=S.pendingProps,D===null&&(D=zv(S)),Iw.current=null,D}function zv(S){Or=S;do{var D=Or.alternate;if(S=Or.return,(Or.effectTag&2048)===0){e:{var T=D;D=Or;var j=ns,Y=D.pendingProps;switch(D.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:ii(D.type)&&Ma(D);break;case 3:yc(D),hr(D),Y=D.stateNode,Y.pendingContext&&(Y.context=Y.pendingContext,Y.pendingContext=null),(T===null||T.child===null)&&ja(D)&&pa(D),Bl(D);break;case 5:ag(D);var Ae=ca(mc.current);if(j=D.type,T!==null&&D.stateNode!=null)ts(T,D,j,Y,Ae),T.ref!==D.ref&&(D.effectTag|=128);else if(Y){if(T=ca(uo.current),ja(D)){if(Y=D,!y)throw Error(n(175));T=lp(Y.stateNode,Y.type,Y.memoizedProps,Ae,T,Y),Y.updateQueue=T,T=T!==null,T&&pa(D)}else{var De=At(j,Y,Ae,T,D);vc(De,D,!1,!1),D.stateNode=De,at(De,j,Y,Ae,T)&&pa(D)}D.ref!==null&&(D.effectTag|=128)}else if(D.stateNode===null)throw Error(n(166));break;case 6:if(T&&D.stateNode!=null)qr(T,D,T.memoizedProps,Y);else{if(typeof Y!="string"&&D.stateNode===null)throw Error(n(166));if(T=ca(mc.current),Ae=ca(uo.current),ja(D)){if(T=D,!y)throw Error(n(176));(T=cp(T.stateNode,T.memoizedProps,T))&&pa(D)}else D.stateNode=He(Y,T,Ae,D)}break;case 11:break;case 13:if(Vn($n,D),Y=D.memoizedState,(D.effectTag&64)!==0){D.expirationTime=j;break e}Y=Y!==null,Ae=!1,T===null?D.memoizedProps.fallback!==void 0&&ja(D):(j=T.memoizedState,Ae=j!==null,Y||j===null||(j=T.child.sibling,j!==null&&(De=D.firstEffect,De!==null?(D.firstEffect=j,j.nextEffect=De):(D.firstEffect=D.lastEffect=j,j.nextEffect=null),j.effectTag=8))),Y&&!Ae&&(D.mode&2)!==0&&(T===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||($n.current&1)!==0?Yi===Bu&&(Yi=ha):((Yi===Bu||Yi===ha)&&(Yi=vl),wp!==0&&gi!==null&&(KA(gi,ns),eD(gi,wp)))),P&&Y&&(D.effectTag|=4),w&&(Y||Ae)&&(D.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:yc(D),Bl(D);break;case 10:wi(D);break;case 9:break;case 14:break;case 17:ii(D.type)&&Ma(D);break;case 19:if(Vn($n,D),Y=D.memoizedState,Y===null)break;if(Ae=(D.effectTag&64)!==0,De=Y.rendering,De===null){if(Ae)Dc(Y,!1);else if(Yi!==Bu||T!==null&&(T.effectTag&64)!==0)for(T=D.child;T!==null;){if(De=fp(T),De!==null){for(D.effectTag|=64,Dc(Y,!1),T=De.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Y.lastEffect===null&&(D.firstEffect=null),D.lastEffect=Y.lastEffect,T=j,Y=D.child;Y!==null;)Ae=Y,j=T,Ae.effectTag&=2,Ae.nextEffect=null,Ae.firstEffect=null,Ae.lastEffect=null,De=Ae.alternate,De===null?(Ae.childExpirationTime=0,Ae.expirationTime=j,Ae.child=null,Ae.memoizedProps=null,Ae.memoizedState=null,Ae.updateQueue=null,Ae.dependencies=null):(Ae.childExpirationTime=De.childExpirationTime,Ae.expirationTime=De.expirationTime,Ae.child=De.child,Ae.memoizedProps=De.memoizedProps,Ae.memoizedState=De.memoizedState,Ae.updateQueue=De.updateQueue,j=De.dependencies,Ae.dependencies=j===null?null:{expirationTime:j.expirationTime,firstContext:j.firstContext,responders:j.responders}),Y=Y.sibling;On($n,$n.current&1|2,D),D=D.child;break e}T=T.sibling}}else{if(!Ae)if(T=fp(De),T!==null){if(D.effectTag|=64,Ae=!0,T=T.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Dc(Y,!0),Y.tail===null&&Y.tailMode==="hidden"&&!De.alternate){D=D.lastEffect=Y.lastEffect,D!==null&&(D.nextEffect=null);break}}else Li()>Y.tailExpiration&&1Y&&(Y=j),De>Y&&(Y=De),Ae=Ae.sibling;T.childExpirationTime=Y}if(D!==null)return D;S!==null&&(S.effectTag&2048)===0&&(S.firstEffect===null&&(S.firstEffect=Or.firstEffect),Or.lastEffect!==null&&(S.lastEffect!==null&&(S.lastEffect.nextEffect=Or.firstEffect),S.lastEffect=Or.lastEffect),1S?D:S}function Pu(S){var D=_o();return lo(99,hF.bind(null,S,D)),null}function hF(S,D){do Bp();while(Bg!==null);if((yr&(rs|js))!==En)throw Error(n(327));var T=S.finishedWork,j=S.finishedExpirationTime;if(T===null)return null;if(S.finishedWork=null,S.finishedExpirationTime=0,T===S.current)throw Error(n(177));S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90,S.nextKnownPendingLevel=0;var Y=bw(T);if(S.firstPendingTime=Y,j<=S.lastSuspendedTime?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:j<=S.firstSuspendedTime&&(S.firstSuspendedTime=j-1),j<=S.lastPingedTime&&(S.lastPingedTime=0),j<=S.lastExpiredTime&&(S.lastExpiredTime=0),S===gi&&(Or=gi=null,ns=0),1=T?ln(S,D,T):(On($n,$n.current&1,D),D=si(S,D,T),D!==null?D.sibling:null);On($n,$n.current&1,D);break;case 19:if(j=D.childExpirationTime>=T,(S.effectTag&64)!==0){if(j)return Ga(S,D,T);D.effectTag|=64}if(Y=D.memoizedState,Y!==null&&(Y.rendering=null,Y.tail=null),On($n,$n.current,D),!j)return null}return si(S,D,T)}Go=!1}}else Go=!1;switch(D.expirationTime=0,D.tag){case 2:if(j=D.type,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,Y=Oe(D,Mn.current),ds(D,T),Y=cg(null,D,j,S,Y,T),D.effectTag|=1,typeof Y=="object"&&Y!==null&&typeof Y.render=="function"&&Y.$$typeof===void 0){if(D.tag=1,yw(),ii(j)){var Ae=!0;Ac(D)}else Ae=!1;D.memoizedState=Y.state!==null&&Y.state!==void 0?Y.state:null;var De=j.getDerivedStateFromProps;typeof De=="function"&&er(D,j,De,S),Y.updater=$r,D.stateNode=Y,Y._reactInternalFiber=D,jo(D,j,S,T),D=yp(null,D,j,!0,Ae,T)}else D.tag=0,ws(null,D,Y,T),D=D.child;return D;case 16:if(Y=D.elementType,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,me(Y),Y._status!==1)throw Y._result;switch(Y=Y._result,D.type=Y,Ae=D.tag=wF(Y),S=Ci(Y,S),Ae){case 0:D=LA(null,D,Y,S,T);break;case 1:D=mp(null,D,Y,S,T);break;case 11:D=Ii(null,D,Y,S,T);break;case 14:D=Qm(null,D,Y,Ci(Y.type,S),j,T);break;default:throw Error(n(306,Y,""))}return D;case 0:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),LA(S,D,j,Y,T);case 1:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),mp(S,D,j,Y,T);case 3:if(yg(D),j=D.updateQueue,j===null)throw Error(n(282));if(Y=D.memoizedState,Y=Y!==null?Y.element:null,ye(D,j,D.pendingProps,null,T),j=D.memoizedState.element,j===Y)mg(),D=si(S,D,T);else{if((Y=D.stateNode.hydrate)&&(y?(Bc=cu(D.stateNode.containerInfo),Aa=D,Y=Il=!0):Y=!1),Y)for(T=sg(D,null,j,T),D.child=T;T;)T.effectTag=T.effectTag&-3|1024,T=T.sibling;else ws(S,D,j,T),mg();D=D.child}return D;case 5:return Pm(D),S===null&&NA(D),j=D.type,Y=D.pendingProps,Ae=S!==null?S.memoizedProps:null,De=Y.children,ke(j,Y)?De=null:Ae!==null&&ke(j,Ae)&&(D.effectTag|=16),qo(S,D),D.mode&4&&T!==1&&xe(j,Y)?(D.expirationTime=D.childExpirationTime=1,D=null):(ws(S,D,De,T),D=D.child),D;case 6:return S===null&&NA(D),null;case 13:return ln(S,D,T);case 4:return og(D,D.stateNode.containerInfo),j=D.pendingProps,S===null?D.child=gu(D,null,j,T):ws(S,D,j,T),D.child;case 11:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),Ii(S,D,j,Y,T);case 7:return ws(S,D,D.pendingProps,T),D.child;case 8:return ws(S,D,D.pendingProps.children,T),D.child;case 12:return ws(S,D,D.pendingProps.children,T),D.child;case 10:e:{if(j=D.type._context,Y=D.pendingProps,De=D.memoizedProps,Ae=Y.value,Ho(D,Ae),De!==null){var vt=De.value;if(Ae=hs(vt,Ae)?0:(typeof j._calculateChangedBits=="function"?j._calculateChangedBits(vt,Ae):1073741823)|0,Ae===0){if(De.children===Y.children&&!_i.current){D=si(S,D,T);break e}}else for(vt=D.child,vt!==null&&(vt.return=D);vt!==null;){var wt=vt.dependencies;if(wt!==null){De=vt.child;for(var xt=wt.firstContext;xt!==null;){if(xt.context===j&&(xt.observedBits&Ae)!==0){vt.tag===1&&(xt=ys(T,null),xt.tag=2,tt(vt,xt)),vt.expirationTime"u")return!1;var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(D.isDisabled||!D.supportsFiber)return!0;try{var T=D.inject(S);xw=function(j){try{D.onCommitFiberRoot(T,j,void 0,(j.current.effectTag&64)===64)}catch{}},kw=function(j){try{D.onCommitFiberUnmount(T,j)}catch{}}}catch{}return!0}function CF(S,D,T,j){this.tag=S,this.key=T,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=j,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Dl(S,D,T,j){return new CF(S,D,T,j)}function Qw(S){return S=S.prototype,!(!S||!S.isReactComponent)}function wF(S){if(typeof S=="function")return Qw(S)?1:0;if(S!=null){if(S=S.$$typeof,S===L)return 11;if(S===te)return 14}return 2}function WA(S,D){var T=S.alternate;return T===null?(T=Dl(S.tag,D,S.key,S.mode),T.elementType=S.elementType,T.type=S.type,T.stateNode=S.stateNode,T.alternate=S,S.alternate=T):(T.pendingProps=D,T.effectTag=0,T.nextEffect=null,T.firstEffect=null,T.lastEffect=null),T.childExpirationTime=S.childExpirationTime,T.expirationTime=S.expirationTime,T.child=S.child,T.memoizedProps=S.memoizedProps,T.memoizedState=S.memoizedState,T.updateQueue=S.updateQueue,D=S.dependencies,T.dependencies=D===null?null:{expirationTime:D.expirationTime,firstContext:D.firstContext,responders:D.responders},T.sibling=S.sibling,T.index=S.index,T.ref=S.ref,T}function jm(S,D,T,j,Y,Ae){var De=2;if(j=S,typeof S=="function")Qw(S)&&(De=1);else if(typeof S=="string")De=5;else e:switch(S){case E:return bu(T.children,Y,Ae,D);case R:De=8,Y|=7;break;case I:De=8,Y|=1;break;case v:return S=Dl(12,T,D,Y|8),S.elementType=v,S.type=v,S.expirationTime=Ae,S;case U:return S=Dl(13,T,D,Y),S.type=U,S.elementType=U,S.expirationTime=Ae,S;case J:return S=Dl(19,T,D,Y),S.elementType=J,S.expirationTime=Ae,S;default:if(typeof S=="object"&&S!==null)switch(S.$$typeof){case x:De=10;break e;case C:De=9;break e;case L:De=11;break e;case te:De=14;break e;case ae:De=16,j=null;break e}throw Error(n(130,S==null?S:typeof S,""))}return D=Dl(De,T,D,Y),D.elementType=S,D.type=j,D.expirationTime=Ae,D}function bu(S,D,T,j){return S=Dl(7,S,j,D),S.expirationTime=T,S}function Fw(S,D,T){return S=Dl(6,S,null,D),S.expirationTime=T,S}function Rw(S,D,T){return D=Dl(4,S.children!==null?S.children:[],S.key,D),D.expirationTime=T,D.stateNode={containerInfo:S.containerInfo,pendingChildren:null,implementation:S.implementation},D}function IF(S,D,T){this.tag=D,this.current=null,this.containerInfo=S,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=je,this.pendingContext=this.context=null,this.hydrate=T,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function $v(S,D){var T=S.firstSuspendedTime;return S=S.lastSuspendedTime,T!==0&&T>=D&&S<=D}function KA(S,D){var T=S.firstSuspendedTime,j=S.lastSuspendedTime;TD||T===0)&&(S.lastSuspendedTime=D),D<=S.lastPingedTime&&(S.lastPingedTime=0),D<=S.lastExpiredTime&&(S.lastExpiredTime=0)}function eD(S,D){D>S.firstPendingTime&&(S.firstPendingTime=D);var T=S.firstSuspendedTime;T!==0&&(D>=T?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:D>=S.lastSuspendedTime&&(S.lastSuspendedTime=D+1),D>S.nextKnownPendingLevel&&(S.nextKnownPendingLevel=D))}function Gm(S,D){var T=S.lastExpiredTime;(T===0||T>D)&&(S.lastExpiredTime=D)}function tD(S){var D=S._reactInternalFiber;if(D===void 0)throw typeof S.render=="function"?Error(n(188)):Error(n(268,Object.keys(S)));return S=Ee(D),S===null?null:S.stateNode}function rD(S,D){S=S.memoizedState,S!==null&&S.dehydrated!==null&&S.retryTime{"use strict";SEe.exports=DEe()});var xEe=_((yKt,bEe)=>{"use strict";var Hyt={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};bEe.exports=Hyt});var REe=_((EKt,FEe)=>{"use strict";var jyt=Object.assign||function(t){for(var e=1;e"}}]),t}(),kEe=function(){Wk(t,null,[{key:"fromJS",value:function(r){var o=r.width,a=r.height;return new t(o,a)}}]);function t(e,r){b6(this,t),this.width=e,this.height=r}return Wk(t,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return""}}]),t}(),QEe=function(){function t(e,r){b6(this,t),this.unit=e,this.value=r}return Wk(t,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case tu.UNIT_POINT:return String(this.value);case tu.UNIT_PERCENT:return this.value+"%";case tu.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),t}();FEe.exports=function(t,e){function r(u,A,p){var h=u[A];u[A]=function(){for(var E=arguments.length,I=Array(E),v=0;v1?I-1:0),x=1;x1&&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]:tu.DIRECTION_LTR;return u.call(this,A,p,h)}),jyt({Config:e.Config,Node:e.Node,Layout:t("Layout",Gyt),Size:t("Size",kEe),Value:t("Value",QEe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},tu)}});var TEe=_((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 ve=="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 o=nodeFS.readFileSync(e);return r?o:o.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,o){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):o()},a.onerror=o,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 o=enlargeMemory();if(!o)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 o=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return o},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,o,a,n){var u=getCFunc(e),A=[],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,o){var a,n;typeof t=="number"?(a=!0,n=t):(a=!1,n=t.length);var u=typeof e=="string"?e:null,A;if(r==ALLOC_NONE?A=o:A=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,u?1:e.length)),a){var o=A,p;for(assert((A&3)==0),p=A+(n&-4);o>2]=0;for(p=A+n;o>0]=0;return A}if(u==="i8")return t.subarray||t.slice?HEAPU8.set(t,A):HEAPU8.set(new Uint8Array(t),A),A;for(var h=0,E,I,v;h>0],r|=o,!(o==0&&!e||(a++,e&&a==e)););e||(e=a);var n="";if(r<128){for(var u=1024,A;e>0;)A=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,u))),n=n?n+A:A,t+=u,e-=u;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 o,a,n,u,A,p,h="";;){if(o=t[e++],!o)return h;if(!(o&128)){h+=String.fromCharCode(o);continue}if(a=t[e++]&63,(o&224)==192){h+=String.fromCharCode((o&31)<<6|a);continue}if(n=t[e++]&63,(o&240)==224?o=(o&15)<<12|a<<6|n:(u=t[e++]&63,(o&248)==240?o=(o&7)<<18|a<<12|n<<6|u:(A=t[e++]&63,(o&252)==248?o=(o&3)<<24|a<<18|n<<12|u<<6|A:(p=t[e++]&63,o=(o&1)<<30|a<<24|n<<18|u<<12|A<<6|p))),o<65536)h+=String.fromCharCode(o);else{var E=o-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,o){if(!(o>0))return 0;for(var a=r,n=r+o-1,u=0;u=55296&&A<=57343&&(A=65536+((A&1023)<<10)|t.charCodeAt(++u)&1023),A<=127){if(r>=n)break;e[r++]=A}else if(A<=2047){if(r+1>=n)break;e[r++]=192|A>>6,e[r++]=128|A&63}else if(A<=65535){if(r+2>=n)break;e[r++]=224|A>>12,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=2097151){if(r+3>=n)break;e[r++]=240|A>>18,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=67108863){if(r+4>=n)break;e[r++]=248|A>>24,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else{if(r+5>=n)break;e[r++]=252|A>>30,e[r++]=128|A>>24&63,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&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&&o<=57343&&(o=65536+((o&1023)<<10)|t.charCodeAt(++r)&1023),o<=127?++e:o<=2047?e+=2:o<=65535?e+=3:o<=2097151?e+=4:o<=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),o=lengthBytesUTF8(r)+1,a=_malloc(o);stringToUTF8(r,a,o);var n=_malloc(4),u=e(a,0,0,n);if(getValue(n,"i32")===0&&u)return Pointer_stringify(u)}catch{}finally{a&&_free(a),n&&_free(n),u&&_free(u)}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 o=demangle(r);return r===o?r:r+" ["+o+"]"})}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 o=r>0?r:lengthBytesUTF8(t)+1,a=new Array(o),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&&(o&=255),e.push(String.fromCharCode(o))}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 o,a;r&&(a=e+lengthBytesUTF8(t),o=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=o)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var o=0;o>0]=t.charCodeAt(o);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var o=e>>>16,a=e&65535,n=r>>>16,u=r&65535;return a*u+(o*u+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,o,a,n,u,A){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,o,a,n,u,A){return ASM_CONSTS[t](e,r,o,a,n,u,A)}function _emscripten_asm_const_iiiii(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiidddddd(t,e,r,o,a,n,u,A,p){return ASM_CONSTS[t](e,r,o,a,n,u,A,p)}function _emscripten_asm_const_iiididi(t,e,r,o,a,n,u){return ASM_CONSTS[t](e,r,o,a,n,u)}function _emscripten_asm_const_iiii(t,e,r,o){return ASM_CONSTS[t](e,r,o)}function _emscripten_asm_const_iiiid(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiiiii(t,e,r,o,a,n){return ASM_CONSTS[t](e,r,o,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,o){var a=arguments.length,n=a<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,r):o,u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(t,e,r,o);else for(var A=t.length-1;A>=0;A--)(u=t[A])&&(n=(a<3?u(n):a>3?u(e,r,n):u(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,o){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=o/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 u=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,u)},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(u){u.source===window&&u.data===o&&(u.stopPropagation(),r.shift()())};var a=n,r=[],o="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(A){r.push(A),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(A),window.postMessage({target:o})):window.postMessage(o,"*")}}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,o,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=o;var n;typeof o<"u"?n=function(){Module.dynCall_vi(t,o)}:n=function(){Module.dynCall_v(t)};var u=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,I=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=I:(I=I+.5,Browser.mainLoop.remainingBlockers=(8*E+I)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),u1&&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),!(u0?_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,u,A,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(u)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(u)}))}catch(x){Runtime.warnOnce("Blob constructor present but fails: "+x+"; falling back to blob builder")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var I=Browser.URLObject.createObjectURL(h),v=new Image;v.onload=function(){assert(v.complete,"Image "+u+" could not be decoded");var C=document.createElement("canvas");C.width=v.width,C.height=v.height;var R=C.getContext("2d");R.drawImage(v,0,0),Module.preloadedImages[u]=C,Browser.URLObject.revokeObjectURL(I),A&&A(n)},v.onerror=function(C){console.log("Image "+I+" could not be decoded"),p&&p()},v.src=I},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,u,A,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[u]=R,A&&A(n))}function I(){h||(h=!0,Module.preloadedAudios[u]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var v=new Blob([n],{type:Browser.getMimetype(u)})}catch{return I()}var x=Browser.URLObject.createObjectURL(v),C=new Audio;C.addEventListener("canplaythrough",function(){E(C)},!1),C.onerror=function(L){if(h)return;console.log("warning: browser could not fully decode audio "+u+", trying slower base64 approach");function U(J){for(var te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ae="=",fe="",ce=0,me=0,he=0;he=6;){var Be=ce>>me-6&63;me-=6,fe+=te[Be]}return me==2?(fe+=te[(ce&3)<<4],fe+=ae+ae):me==4&&(fe+=te[(ce&15)<<2],fe+=ae),fe}C.src="data:audio/x-"+u.substr(-3)+";base64,"+U(n),E(C)},C.src=x,Browser.safeSetTimeout(function(){E(C)},1e4)}else return I()},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 o=Module.canvas;o&&(o.requestPointerLock=o.requestPointerLock||o.mozRequestPointerLock||o.webkitRequestPointerLock||o.msRequestPointerLock||function(){},o.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},o.exitPointerLock=o.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&&o.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,o){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var u={antialias:!1,alpha:!1};if(o)for(var A in o)u[A]=o[A];n=GL.createContext(t,u),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 o=Module.canvas;function a(){Browser.isFullscreen=!1;var u=o.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===u?(o.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},o.exitFullscreen=o.exitFullscreen.bind(document),Browser.lockPointer&&o.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(u.parentNode.insertBefore(o,u),u.parentNode.removeChild(u),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(o)}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");o.parentNode.insertBefore(n,o),n.appendChild(o),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(o,a,n){return Browser.requestFullscreen(o,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,o=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 u=t.touch;if(u===void 0)return;var A=u.pageX-(a+e.left),p=u.pageY-(n+e.top);A=A*(r/e.width),p=p*(o/e.height);var h={x:A,y:p};if(t.type==="touchstart")Browser.lastTouches[u.identifier]=h,Browser.touches[u.identifier]=h;else if(t.type==="touchend"||t.type==="touchmove"){var E=Browser.touches[u.identifier];E||(E=h),Browser.lastTouches[u.identifier]=E,Browser.touches[u.identifier]=h}return}var I=t.pageX-(a+e.left),v=t.pageY-(n+e.top);I=I*(r/e.width),v=v*(o/e.height),Browser.mouseMovementX=I-Browser.mouseX,Browser.mouseMovementY=v-Browser.mouseY,Browser.mouseX=I,Browser.mouseY=v}},asyncLoad:function(t,e,r,o){var a=o?"":"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 o=Module.canvas;Browser.updateCanvasDimensions(o,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 o=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(o/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(o){return(typeof FS>"u"||!(o instanceof FS.ErrnoError))&&abort(o),-o.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,I,v,x){if(h==1){var C=I&896;(C==128||C==256||C==384)&&(p="X const")}var R;return x?R=E.replace("X",p).replace("Y",v):R=p.replace("X",E).replace("Y",v),R.replace(/([*&]) (?=[*&])/g,"$1")}function o(p,h,E,I,v){throw new Error(p+" type "+E.replace("X",h+"?")+(I?" with flag "+I:"")+" in "+v)}function a(p,h,E,I,v,x,C,R){x===void 0&&(x="X"),R===void 0&&(R=1);var L=E(p);if(L)return L;var U=I(p),J=U.placeholderFlag,te=e[J];C&&te&&(x=r(C[2],C[0],x,te[0],"?",!0));var ae;J==0&&(ae="Unbound"),J>=10&&(ae="Corrupt"),R>20&&(ae="Deeply nested"),ae&&o(ae,p,x,J,v||"?");var fe=U.paramList[0],ce=a(fe,h,E,I,v,x,te,R+1),me,he={flags:te[0],id:p,name:"",paramList:[ce]},Be=[],we="?";switch(U.placeholderFlag){case 1:me=ce.spec;break;case 2:if((ce.flags&15360)==1024&&ce.spec.ptrSize==1){he.flags=7168;break}case 3:case 6:case 5:me=ce.spec,ce.flags&15360;break;case 8:we=""+U.paramList[1],he.paramList.push(U.paramList[1]);break;case 9:for(var g=0,Ee=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(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),u=SYSCALLS.get(),A=a;return FS.llseek(r,A,u),HEAP32[n>>2]=r.position,r.getdents&&A===0&&u===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(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,I){var v=___syscall146.buffers[E];assert(v),I===0||I===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(v,0)),v.length=0):v.push(I)});for(var u=0;u>2],p=HEAP32[o+(u*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 o=_nbind.typeNameTbl.NBind.proto;return o.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var o=HEAPU32[t.pagePtr];if(o){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],o=new r(e);return typeIdTbl[e.id]=o,_nbind.typeNameTbl[e.name]=o,o}_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 o=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(o=[o[0],o.slice(1)]),{paramList:o,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"},o=t.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+o];if(!a)throw new Error("dynCall_"+o+" not found for "+e+"("+t.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,o){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,o)):(r.arity=o,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 o=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 o.heap=a[r.ptrSize*8],o.ptrSize=r.ptrSize,o}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,o){return o&&o.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,o=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,o,r),o}_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,o){return function(a){return pushCString(a,o)}},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(o){return!!o},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return"!!("+r+")"},e.prototype.makeWireWrite=function(r,o){return o&&o.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(o){__extends(a,o);function a(n,u,A,p){var h=o.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=u,I=A,v=p;if(n!==_nbind.ptrMarker){var x=h.__nbindConstructor.apply(h,arguments);E=4608,v=HEAPU32[x/4],I=HEAPU32[x/4+1]}var C={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:I};v&&(R.__nbindShared=v,_nbind.mark(h));for(var L=0,U=Object.keys(R);L>=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?u=Buffer.from(n):u=new Buffer(n),u.copy(o)}else getBuffer(o).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,o,a,n){try{Module.dynCall_viiiii(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,o){try{return Module.dynCall_fiff(t,e,r,o)}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(o){if(typeof o!="number"&&o!=="longjmp")throw o;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,o,a){try{Module.dynCall_viddi(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,o){try{Module.dynCall_vidd(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,o){try{return Module.dynCall_iiii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,o){try{return Module.dynCall_diii(t,e,r,o)}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(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,o,a,n){try{Module.dynCall_viiddi(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,o,a,n,u){try{Module.dynCall_viiiiii(t,e,r,o,a,n,u)}catch(A){if(typeof A!="number"&&A!=="longjmp")throw A;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;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,o,a,n){try{return Module.dynCall_iiiiii(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,o,a){try{Module.dynCall_viiid(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,o,a,n,u){try{Module.dynCall_viififi(t,e,r,o,a,n,u)}catch(A){if(typeof A!="number"&&A!=="longjmp")throw A;Module.setThrew(1,0)}}function invoke_viii(t,e,r,o){try{Module.dynCall_viii(t,e,r,o)}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,o){try{Module.dynCall_viid(t,e,r,o)}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(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,o,a){try{Module.dynCall_viiii(t,e,r,o,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 o=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),u=new t.Uint8Array(r),A=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),I=e.DYNAMICTOP_PTR|0,v=e.tempDoublePtr|0,x=e.ABORT|0,C=e.STACKTOP|0,R=e.STACK_MAX|0,L=e.cttz_i8|0,U=e.___dso_handle|0,J=0,te=0,ae=0,fe=0,ce=t.NaN,me=t.Infinity,he=0,Be=0,we=0,g=0,Ee=0,Se=0,le=t.Math.floor,ne=t.Math.abs,ee=t.Math.sqrt,Ie=t.Math.pow,Fe=t.Math.cos,At=t.Math.sin,H=t.Math.tan,at=t.Math.acos,Re=t.Math.asin,ke=t.Math.atan,xe=t.Math.atan2,He=t.Math.exp,Te=t.Math.log,Je=t.Math.ceil,je=t.Math.imul,b=t.Math.min,w=t.Math.max,P=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,Z=e.getTotalMemory,ie=e.abortOnCannotGrowMemory,Pe=e.invoke_viiiii,Ne=e.invoke_vif,ot=e.invoke_vid,dt=e.invoke_fiff,Gt=e.invoke_vi,$t=e.invoke_vii,bt=e.invoke_ii,an=e.invoke_viddi,Qr=e.invoke_vidd,mr=e.invoke_iiii,br=e.invoke_diii,Wr=e.invoke_di,Kn=e.invoke_iid,Ns=e.invoke_iii,Ti=e.invoke_viiddi,ps=e.invoke_viiiiii,io=e.invoke_dii,Pi=e.invoke_i,Ls=e.invoke_iiiiii,so=e.invoke_viiid,cc=e.invoke_viififi,cu=e.invoke_viii,lp=e.invoke_v,cp=e.invoke_viid,Os=e.invoke_idd,Dn=e.invoke_viiii,oo=e._emscripten_asm_const_iiiii,Ms=e._emscripten_asm_const_iiidddddd,ml=e._emscripten_asm_const_iiiid,yl=e.__nbind_reference_external,ao=e._emscripten_asm_const_iiiiiiii,Vn=e._removeAccessorPrefix,On=e._typeModule,Ni=e.__nbind_register_pool,Mn=e.__decorate,_i=e._llvm_stackrestore,tr=e.___cxa_atexit,Oe=e.__extends,ii=e.__nbind_get_value_object,Ma=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,hr=e._emscripten_set_main_loop_timing,uc=e.__nbind_register_primitive,uu=e.__nbind_register_type,Ac=e._emscripten_memcpy_big,El=e.__nbind_register_function,DA=e.___setErrNo,Au=e.__nbind_register_class,Ce=e.__nbind_finish,Rt=e._abort,fc=e._nbind_value,Hi=e._llvm_stacksave,fu=e.___syscall54,Yt=e._defineHidden,Cl=e._emscripten_set_main_loop,SA=e._emscripten_get_now,up=e.__nbind_register_callback_signature,pc=e._emscripten_asm_const_iiiiii,PA=e.__nbind_free_external,Qn=e._emscripten_asm_const_iiii,hi=e._emscripten_asm_const_iiididi,hc=e.___syscall6,bA=e._atexit,sa=e.___syscall140,Li=e.___syscall146,_o=y(0);let Ze=y(0);function lo(s){s=s|0;var l=0;return l=C,C=C+s|0,C=C+15&-16,l|0}function gc(){return C|0}function pu(s){s=s|0,C=s}function ji(s,l){s=s|0,l=l|0,C=s,R=l}function hu(s,l){s=s|0,l=l|0,J||(J=s,te=l)}function xA(s){s=s|0,Se=s}function Ua(){return Se|0}function dc(){var s=0,l=0;Dr(8104,8,400)|0,Dr(8504,408,540)|0,s=9044,l=s+44|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o[9088]=0,o[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,tr(17,8104,U|0)|0}function hs(s){s=s|0,pt(s+948|0)}function _t(s){return s=y(s),((Du(s)|0)&2147483647)>>>0>2139095040|0}function Fn(s,l,c){s=s|0,l=l|0,c=c|0;e:do if(n[s+(l<<3)+4>>2]|0)s=s+(l<<3)|0;else{if((l|2|0)==3&&n[s+60>>2]|0){s=s+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[s+52>>2]|0){s=s+48|0;break e}break}default:}if(n[s+68>>2]|0){s=s+64|0;break}else{s=(l|1|0)==5?948:c;break}}while(0);return s|0}function Ci(s){s=s|0;var l=0;return l=pD(1e3)|0,oa(s,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Dr(l|0,8104,1e3)|0,o[s+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=s,l|0}function oa(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Eg(s,5,3197,f)),C=d}function co(){return Ci(956)|0}function Us(s){s=s|0;var l=0;return l=Kt(1e3)|0,aa(l,s),oa(n[s+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function aa(s,l){s=s|0,l=l|0;var c=0;Dr(s|0,l|0,948)|0,Rm(s+948|0,l+948|0),c=s+960|0,s=l+960|0,l=c+40|0;do n[c>>2]=n[s>>2],c=c+4|0,s=s+4|0;while((c|0)<(l|0))}function la(s){s=s|0;var l=0,c=0,f=0,d=0;if(l=s+944|0,c=n[l>>2]|0,c|0&&(Ho(c+948|0,s)|0,n[l>>2]=0),c=wi(s)|0,c|0){l=0;do n[(gs(s,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(c|0))}c=s+948|0,f=n[c>>2]|0,d=s+952|0,l=n[d>>2]|0,(l|0)!=(f|0)&&(n[d>>2]=l+(~((l+-4-f|0)>>>2)<<2)),ds(c),hD(s),n[2276]=(n[2276]|0)+-1}function Ho(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0;f=n[s>>2]|0,k=s+4|0,c=n[k>>2]|0,m=c;e:do if((f|0)==(c|0))d=f,B=4;else for(s=f;;){if((n[s>>2]|0)==(l|0)){d=s,B=4;break e}if(s=s+4|0,(s|0)==(c|0)){s=0;break}}while(0);return(B|0)==4&&((d|0)!=(c|0)?(f=d+4|0,s=m-f|0,l=s>>2,l&&(Mw(d|0,f|0,s|0)|0,c=n[k>>2]|0),s=d+(l<<2)|0,(c|0)==(s|0)||(n[k>>2]=c+(~((c+-4-s|0)>>>2)<<2)),s=1):s=0),s|0}function wi(s){return s=s|0,(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2|0}function gs(s,l){s=s|0,l=l|0;var c=0;return c=n[s+948>>2]|0,(n[s+952>>2]|0)-c>>2>>>0>l>>>0?s=n[c+(l<<2)>>2]|0:s=0,s|0}function ds(s){s=s|0;var l=0,c=0,f=0,d=0;f=C,C=C+32|0,l=f,d=n[s>>2]|0,c=(n[s+4>>2]|0)-d|0,((n[s+8>>2]|0)-d|0)>>>0>c>>>0&&(d=c>>2,Ip(l,d,d,s+8|0),Bg(s,l),_A(l)),C=f}function ms(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;M=wi(s)|0;do if(M|0){if((n[(gs(s,0)|0)+944>>2]|0)==(s|0)){if(!(Ho(s+948|0,l)|0))break;Dr(l+400|0,8504,540)|0,n[l+944>>2]=0,Le(s);break}B=n[(n[s+976>>2]|0)+12>>2]|0,k=s+948|0,Q=(B|0)==0,c=0,m=0;do f=n[(n[k>>2]|0)+(m<<2)>>2]|0,(f|0)==(l|0)?Le(s):(d=Us(f)|0,n[(n[k>>2]|0)+(c<<2)>>2]=d,n[d+944>>2]=s,Q||TR[B&15](f,d,s,c),c=c+1|0),m=m+1|0;while((m|0)!=(M|0));if(c>>>0>>0){Q=s+948|0,k=s+952|0,B=c,c=n[k>>2]|0;do m=(n[Q>>2]|0)+(B<<2)|0,f=m+4|0,d=c-f|0,l=d>>2,l&&(Mw(m|0,f|0,d|0)|0,c=n[k>>2]|0),d=c,f=m+(l<<2)|0,(d|0)!=(f|0)&&(c=d+(~((d+-4-f|0)>>>2)<<2)|0,n[k>>2]=c),B=B+1|0;while((B|0)!=(M|0))}}while(0)}function _s(s){s=s|0;var l=0,c=0,f=0,d=0;Un(s,(wi(s)|0)==0,2491),Un(s,(n[s+944>>2]|0)==0,2545),l=s+948|0,c=n[l>>2]|0,f=s+952|0,d=n[f>>2]|0,(d|0)!=(c|0)&&(n[f>>2]=d+(~((d+-4-c|0)>>>2)<<2)),ds(l),l=s+976|0,c=n[l>>2]|0,Dr(s|0,8104,1e3)|0,o[c+2>>0]|0&&(n[s+4>>2]=2,n[s+12>>2]=4),n[l>>2]=c}function Un(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Ao(s,5,3197,f)),C=d}function Sn(){return n[2276]|0}function ys(){var s=0;return s=pD(20)|0,We((s|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[s>>2]=n[239],n[s+4>>2]=n[240],n[s+8>>2]=n[241],n[s+12>>2]=n[242],n[s+16>>2]=n[243],s|0}function We(s,l){s=s|0,l=l|0;var c=0,f=0;f=C,C=C+16|0,c=f,s||(n[c>>2]=l,Ao(0,5,3197,c)),C=f}function tt(s){s=s|0,hD(s),n[2277]=(n[2277]|0)+-1}function It(s,l){s=s|0,l=l|0;var c=0;l?(Un(s,(wi(s)|0)==0,2629),c=1):(c=0,l=0),n[s+964>>2]=l,n[s+988>>2]=c}function nr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+8|0,d=f+4|0,B=f,n[d>>2]=l,Un(s,(n[l+944>>2]|0)==0,2709),Un(s,(n[s+964>>2]|0)==0,2763),$(s),l=s+948|0,n[B>>2]=(n[l>>2]|0)+(c<<2),n[m>>2]=n[B>>2],ye(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=s,Le(s),C=f}function $(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;if(c=wi(s)|0,c|0&&(n[(gs(s,0)|0)+944>>2]|0)!=(s|0)){f=n[(n[s+976>>2]|0)+12>>2]|0,d=s+948|0,m=(f|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=Us(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=s,m||TR[f&15](B,k,s,l),l=l+1|0;while((l|0)!=(c|0))}}function ye(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0,et=0,Xe=0;et=C,C=C+64|0,G=et+52|0,k=et+48|0,se=et+28|0,qe=et+24|0,Me=et+20|0,Qe=et,f=n[s>>2]|0,m=f,l=f+((n[l>>2]|0)-m>>2<<2)|0,f=s+4|0,d=n[f>>2]|0,B=s+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[c>>2],n[f>>2]=(n[f>>2]|0)+4;break}HA(s,l,d,l+4|0),l>>>0<=c>>>0&&(c=(n[f>>2]|0)>>>0>c>>>0?c+4|0:c),n[l>>2]=n[c>>2]}else{f=(d-m>>2)+1|0,d=N(s)|0,d>>>0>>0&&zr(s),O=n[s>>2]|0,M=(n[B>>2]|0)-O|0,m=M>>1,Ip(Qe,M>>2>>>0>>1>>>0?m>>>0>>0?f:m:d,l-O>>2,s+8|0),O=Qe+8|0,f=n[O>>2]|0,m=Qe+12|0,M=n[m>>2]|0,B=M,Q=f;do if((f|0)==(M|0)){if(M=Qe+4|0,f=n[M>>2]|0,Xe=n[Qe>>2]|0,d=Xe,f>>>0<=Xe>>>0){f=B-d>>1,f=(f|0)==0?1:f,Ip(se,f,f>>>2,n[Qe+16>>2]|0),n[qe>>2]=n[M>>2],n[Me>>2]=n[O>>2],n[k>>2]=n[qe>>2],n[G>>2]=n[Me>>2],Dw(se,k,G),f=n[Qe>>2]|0,n[Qe>>2]=n[se>>2],n[se>>2]=f,f=se+4|0,Xe=n[M>>2]|0,n[M>>2]=n[f>>2],n[f>>2]=Xe,f=se+8|0,Xe=n[O>>2]|0,n[O>>2]=n[f>>2],n[f>>2]=Xe,f=se+12|0,Xe=n[m>>2]|0,n[m>>2]=n[f>>2],n[f>>2]=Xe,_A(se),f=n[O>>2]|0;break}m=f,B=((m-d>>2)+1|0)/-2|0,k=f+(B<<2)|0,d=Q-m|0,m=d>>2,m&&(Mw(k|0,f|0,d|0)|0,f=n[M>>2]|0),Xe=k+(m<<2)|0,n[O>>2]=Xe,n[M>>2]=f+(B<<2),f=Xe}while(0);n[f>>2]=n[c>>2],n[O>>2]=(n[O>>2]|0)+4,l=vg(s,Qe,l)|0,_A(Qe)}while(0);return C=et,l|0}function Le(s){s=s|0;var l=0;do{if(l=s+984|0,o[l>>0]|0)break;o[l>>0]=1,h[s+504>>2]=y(ce),s=n[s+944>>2]|0}while((s|0)!=0)}function pt(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ht(s){return s=s|0,n[s+944>>2]|0}function Tt(s){s=s|0,Un(s,(n[s+964>>2]|0)!=0,2832),Le(s)}function er(s){return s=s|0,(o[s+984>>0]|0)!=0|0}function $r(s,l){s=s|0,l=l|0,QUe(s,l,400)|0&&(Dr(s|0,l|0,400)|0,Le(s))}function Gi(s){s=s|0;var l=Ze;return l=y(h[s+44>>2]),s=_t(l)|0,y(s?y(0):l)}function es(s){s=s|0;var l=Ze;return l=y(h[s+48>>2]),_t(l)|0&&(l=o[(n[s+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function bi(s,l){s=s|0,l=l|0,n[s+980>>2]=l}function jo(s){return s=s|0,n[s+980>>2]|0}function kA(s,l){s=s|0,l=l|0;var c=0;c=s+4|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function QA(s){return s=s|0,n[s+4>>2]|0}function Ap(s,l){s=s|0,l=l|0;var c=0;c=s+8|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function ig(s){return s=s|0,n[s+8>>2]|0}function gu(s,l){s=s|0,l=l|0;var c=0;c=s+12|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function sg(s){return s=s|0,n[s+12>>2]|0}function du(s,l){s=s|0,l=l|0;var c=0;c=s+16|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function uo(s){return s=s|0,n[s+16>>2]|0}function FA(s,l){s=s|0,l=l|0;var c=0;c=s+20|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function mc(s){return s=s|0,n[s+20>>2]|0}function ca(s,l){s=s|0,l=l|0;var c=0;c=s+24|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function og(s){return s=s|0,n[s+24>>2]|0}function yc(s,l){s=s|0,l=l|0;var c=0;c=s+28|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function Pm(s){return s=s|0,n[s+28>>2]|0}function ag(s,l){s=s|0,l=l|0;var c=0;c=s+32|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function $n(s){return s=s|0,n[s+32>>2]|0}function fp(s,l){s=s|0,l=l|0;var c=0;c=s+36|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function lg(s){return s=s|0,n[s+36>>2]|0}function RA(s,l){s=s|0,l=y(l);var c=0;c=s+40|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Hs(s,l){s=s|0,l=y(l);var c=0;c=s+44|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function mu(s,l){s=s|0,l=y(l);var c=0;c=s+48|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Ha(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+52|0,d=s+56|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function qi(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+52|0,c=s+56|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function ua(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+52|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function yu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Es(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Ec(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+132+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Cc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function q(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Dt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+60+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function wl(s,l){s=s|0,l=l|0;var c=0;c=s+60+(l<<3)+4|0,(n[c>>2]|0)!=3&&(h[s+60+(l<<3)>>2]=y(ce),n[c>>2]=3,Le(s))}function xi(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function wc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function ct(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+204+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Eu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+276+(l<<3)|0,l=s+276+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function cg(s,l){return s=s|0,l=l|0,y(h[s+276+(l<<3)>>2])}function yw(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+348|0,d=s+352|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function TA(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+348|0,c=s+352|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function pp(s){s=s|0;var l=0;l=s+352|0,(n[l>>2]|0)!=3&&(h[s+348>>2]=y(ce),n[l>>2]=3,Le(s))}function Br(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+348|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cs(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+356|0,d=s+360|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function ug(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+356|0,c=s+360|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function Ag(s){s=s|0;var l=0;l=s+360|0,(n[l>>2]|0)!=3&&(h[s+356>>2]=y(ce),n[l>>2]=3,Le(s))}function fg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+356|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function hp(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ic(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ct(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+364|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function bm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function pg(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function hg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+372|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function xm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function gg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+380|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function wu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ew(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function km(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+388|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Aa(s,l){s=s|0,l=y(l);var c=0;c=s+396|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Bc(s){return s=s|0,y(h[s+396>>2])}function Il(s){return s=s|0,y(h[s+400>>2])}function Iu(s){return s=s|0,y(h[s+404>>2])}function dg(s){return s=s|0,y(h[s+408>>2])}function NA(s){return s=s|0,y(h[s+412>>2])}function gp(s){return s=s|0,y(h[s+416>>2])}function ja(s){return s=s|0,y(h[s+420>>2])}function mg(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+424+(l<<2)>>2])}function dp(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+448+(l<<2)>>2])}function Go(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+472+(l<<2)>>2])}function ws(s,l){s=s|0,l=l|0;var c=0,f=Ze;return c=n[s+4>>2]|0,(c|0)==(n[l+4>>2]|0)?c?(f=y(h[s>>2]),s=y(ne(y(f-y(h[l>>2]))))>2]=0,n[f+4>>2]=0,n[f+8>>2]=0,Ma(f|0,s|0,l|0,0),Ao(s,3,(o[f+11>>0]|0)<0?n[f>>2]|0:f,c),e3e(f),C=c}function qo(s,l,c,f){s=y(s),l=y(l),c=c|0,f=f|0;var d=Ze;s=y(s*l),d=y(bR(s,y(1)));do if(Ii(d,y(0))|0)s=y(s-d);else{if(s=y(s-d),Ii(d,y(1))|0){s=y(s+y(1));break}if(c){s=y(s+y(1));break}f||(d>y(.5)?d=y(1):(f=Ii(d,y(.5))|0,d=y(f?1:0)),s=y(s+d))}while(0);return y(s/l)}function LA(s,l,c,f,d,m,B,k,Q,M,O,G,se){s=s|0,l=y(l),c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,k=y(k),Q=y(Q),M=y(M),O=y(O),G=y(G),se=se|0;var qe=0,Me=Ze,Qe=Ze,et=Ze,Xe=Ze,lt=Ze,Ue=Ze;return Q>2]),Me!=y(0))?(et=y(qo(l,Me,0,0)),Xe=y(qo(f,Me,0,0)),Qe=y(qo(m,Me,0,0)),Me=y(qo(k,Me,0,0))):(Qe=m,et=l,Me=k,Xe=f),(d|0)==(s|0)?qe=Ii(Qe,et)|0:qe=0,(B|0)==(c|0)?se=Ii(Me,Xe)|0:se=0,!qe&&(lt=y(l-O),!(mp(s,lt,Q)|0))&&!(yp(s,lt,d,Q)|0)?qe=yg(s,lt,d,m,Q)|0:qe=1,!se&&(Ue=y(f-G),!(mp(c,Ue,M)|0))&&!(yp(c,Ue,B,M)|0)?se=yg(c,Ue,B,k,M)|0:se=1,se=qe&se),se|0}function mp(s,l,c){return s=s|0,l=y(l),c=y(c),(s|0)==1?s=Ii(l,c)|0:s=0,s|0}function yp(s,l,c,f){return s=s|0,l=y(l),c=c|0,f=y(f),(s|0)==2&(c|0)==0?l>=f?s=1:s=Ii(l,f)|0:s=0,s|0}function yg(s,l,c,f,d){return s=s|0,l=y(l),c=c|0,f=y(f),d=y(d),(s|0)==2&(c|0)==2&f>l?d<=l?s=1:s=Ii(l,d)|0:s=0,s|0}function fa(s,l,c,f,d,m,B,k,Q,M,O){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,M=M|0,O=O|0;var G=0,se=0,qe=0,Me=0,Qe=Ze,et=Ze,Xe=0,lt=0,Ue=0,Ge=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=Ze,go=Ze,mo=Ze,yo=0,ya=0;ir=C,C=C+160|0,Xt=ir+152|0,or=ir+120|0,Mr=ir+104|0,Ue=ir+72|0,Me=ir+56|0,Lt=ir+8|0,lt=ir,Ge=(n[2279]|0)+1|0,n[2279]=Ge,Sr=s+984|0,(o[Sr>>0]|0)!=0&&(n[s+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[s+516>>2]|0)==(f|0)?Nr=0:Xe=4,(Xe|0)==4&&(n[s+520>>2]=0,n[s+924>>2]=-1,n[s+928>>2]=-1,h[s+932>>2]=y(-1),h[s+936>>2]=y(-1),Nr=1);e:do if(n[s+964>>2]|0)if(Qe=y(ln(s,2,B)),et=y(ln(s,0,B)),G=s+916|0,mo=y(h[G>>2]),go=y(h[s+920>>2]),xn=y(h[s+932>>2]),LA(d,l,m,c,n[s+924>>2]|0,mo,n[s+928>>2]|0,go,xn,y(h[s+936>>2]),Qe,et,O)|0)Xe=22;else if(qe=n[s+520>>2]|0,!qe)Xe=21;else for(se=0;;){if(G=s+524+(se*24|0)|0,xn=y(h[G>>2]),go=y(h[s+524+(se*24|0)+4>>2]),mo=y(h[s+524+(se*24|0)+16>>2]),LA(d,l,m,c,n[s+524+(se*24|0)+8>>2]|0,xn,n[s+524+(se*24|0)+12>>2]|0,go,mo,y(h[s+524+(se*24|0)+20>>2]),Qe,et,O)|0){Xe=22;break e}if(se=se+1|0,se>>>0>=qe>>>0){Xe=21;break}}else{if(Q){if(G=s+916|0,!(Ii(y(h[G>>2]),l)|0)){Xe=21;break}if(!(Ii(y(h[s+920>>2]),c)|0)){Xe=21;break}if((n[s+924>>2]|0)!=(d|0)){Xe=21;break}G=(n[s+928>>2]|0)==(m|0)?G:0,Xe=22;break}if(qe=n[s+520>>2]|0,!qe)Xe=21;else for(se=0;;){if(G=s+524+(se*24|0)|0,Ii(y(h[G>>2]),l)|0&&Ii(y(h[s+524+(se*24|0)+4>>2]),c)|0&&(n[s+524+(se*24|0)+8>>2]|0)==(d|0)&&(n[s+524+(se*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(se=se+1|0,se>>>0>=qe>>>0){Xe=21;break}}}while(0);do if((Xe|0)==21)o[11697]|0?(G=0,Xe=28):(G=0,Xe=31);else if((Xe|0)==22){if(se=(o[11697]|0)!=0,!((G|0)!=0&(Nr^1)))if(se){Xe=28;break}else{Xe=31;break}Me=G+16|0,n[s+908>>2]=n[Me>>2],qe=G+20|0,n[s+912>>2]=n[qe>>2],(o[11698]|0)==0|se^1||(n[lt>>2]=OA(Ge)|0,n[lt+4>>2]=Ge,Ao(s,4,2972,lt),se=n[s+972>>2]|0,se|0&&tf[se&127](s),d=Ga(d,Q)|0,m=Ga(m,Q)|0,ya=+y(h[Me>>2]),yo=+y(h[qe>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+c,E[Lt+24>>3]=ya,E[Lt+32>>3]=yo,n[Lt+40>>2]=M,Ao(s,4,2989,Lt))}while(0);return(Xe|0)==28&&(se=OA(Ge)|0,n[Me>>2]=se,n[Me+4>>2]=Ge,n[Me+8>>2]=Nr?3047:11699,Ao(s,4,3038,Me),se=n[s+972>>2]|0,se|0&&tf[se&127](s),Lt=Ga(d,Q)|0,Xe=Ga(m,Q)|0,n[Ue>>2]=Lt,n[Ue+4>>2]=Xe,E[Ue+8>>3]=+l,E[Ue+16>>3]=+c,n[Ue+24>>2]=M,Ao(s,4,3049,Ue),Xe=31),(Xe|0)==31&&(si(s,l,c,f,d,m,B,k,Q,O),o[11697]|0&&(se=n[2279]|0,Lt=OA(se)|0,n[Mr>>2]=Lt,n[Mr+4>>2]=se,n[Mr+8>>2]=Nr?3047:11699,Ao(s,4,3083,Mr),se=n[s+972>>2]|0,se|0&&tf[se&127](s),Lt=Ga(d,Q)|0,Mr=Ga(m,Q)|0,yo=+y(h[s+908>>2]),ya=+y(h[s+912>>2]),n[or>>2]=Lt,n[or+4>>2]=Mr,E[or+8>>3]=yo,E[or+16>>3]=ya,n[or+24>>2]=M,Ao(s,4,3092,or)),n[s+516>>2]=f,G||(se=s+520|0,G=n[se>>2]|0,(G|0)==16&&(o[11697]|0&&Ao(s,4,3124,Xt),n[se>>2]=0,G=0),Q?G=s+916|0:(n[se>>2]=G+1,G=s+524+(G*24|0)|0),h[G>>2]=l,h[G+4>>2]=c,n[G+8>>2]=d,n[G+12>>2]=m,n[G+16>>2]=n[s+908>>2],n[G+20>>2]=n[s+912>>2],G=0)),Q&&(n[s+416>>2]=n[s+908>>2],n[s+420>>2]=n[s+912>>2],o[s+985>>0]=1,o[Sr>>0]=0),n[2279]=(n[2279]|0)+-1,n[s+512>>2]=n[2278],C=ir,Nr|(G|0)==0|0}function ln(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(K(s,l,c)),y(f+y(re(s,l,c)))}function Ao(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=C,C=C+16|0,d=m,n[d>>2]=f,s?f=n[s+976>>2]|0:f=0,Cg(f,s,l,c,d),C=m}function OA(s){return s=s|0,(s>>>0>60?3201:3201+(60-s)|0)|0}function Ga(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+32|0,c=d+12|0,f=d,n[c>>2]=n[254],n[c+4>>2]=n[255],n[c+8>>2]=n[256],n[f>>2]=n[257],n[f+4>>2]=n[258],n[f+8>>2]=n[259],(s|0)>2?s=11699:s=n[(l?f:c)+(s<<2)>>2]|0,C=d,s|0}function si(s,l,c,f,d,m,B,k,Q,M){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,M=M|0;var O=0,G=0,se=0,qe=0,Me=Ze,Qe=Ze,et=Ze,Xe=Ze,lt=Ze,Ue=Ze,Ge=Ze,Lt=0,Mr=0,or=0,Xt=Ze,Sr=Ze,Nr=0,ir=Ze,xn=0,go=0,mo=0,yo=0,ya=0,Fp=0,Rp=0,bl=0,Tp=0,Fu=0,Ru=0,Np=0,Lp=0,Op=0,Xr=0,xl=0,Mp=0,xc=0,Up=Ze,_p=Ze,Tu=Ze,Nu=Ze,kc=Ze,Gs=0,za=0,Wo=0,kl=0,nf=0,sf=Ze,Lu=Ze,of=Ze,af=Ze,qs=Ze,vs=Ze,Ql=0,Rn=Ze,lf=Ze,Eo=Ze,Qc=Ze,Co=Ze,Fc=Ze,cf=0,uf=0,Rc=Ze,Ys=Ze,Fl=0,Af=0,ff=0,pf=0,xr=Ze,Jn=0,Ds=0,wo=0,Ws=0,Rr=0,ur=0,Rl=0,Jt=Ze,hf=0,li=0;Rl=C,C=C+16|0,Gs=Rl+12|0,za=Rl+8|0,Wo=Rl+4|0,kl=Rl,Un(s,(d|0)==0|(_t(l)|0)^1,3326),Un(s,(m|0)==0|(_t(c)|0)^1,3406),Ds=mt(s,f)|0,n[s+496>>2]=Ds,Rr=fr(2,Ds)|0,ur=fr(0,Ds)|0,h[s+440>>2]=y(K(s,Rr,B)),h[s+444>>2]=y(re(s,Rr,B)),h[s+428>>2]=y(K(s,ur,B)),h[s+436>>2]=y(re(s,ur,B)),h[s+464>>2]=y(Cr(s,Rr)),h[s+468>>2]=y(yn(s,Rr)),h[s+452>>2]=y(Cr(s,ur)),h[s+460>>2]=y(yn(s,ur)),h[s+488>>2]=y(oi(s,Rr,B)),h[s+492>>2]=y(Oi(s,Rr,B)),h[s+476>>2]=y(oi(s,ur,B)),h[s+484>>2]=y(Oi(s,ur,B));do if(n[s+964>>2]|0)Ig(s,l,c,d,m,B,k);else{if(wo=s+948|0,Ws=(n[s+952>>2]|0)-(n[wo>>2]|0)>>2,!Ws){qv(s,l,c,d,m,B,k);break}if(!Q&&Yv(s,l,c,d,m,B,k)|0)break;$(s),xl=s+508|0,o[xl>>0]=0,Rr=fr(n[s+4>>2]|0,Ds)|0,ur=ww(Rr,Ds)|0,Jn=pe(Rr)|0,Mp=n[s+8>>2]|0,Af=s+28|0,xc=(n[Af>>2]|0)!=0,Co=Jn?B:k,Rc=Jn?k:B,Up=y(Cp(s,Rr,B)),_p=y(Iw(s,Rr,B)),Me=y(Cp(s,ur,B)),Fc=y(En(s,Rr,B)),Ys=y(En(s,ur,B)),or=Jn?d:m,Fl=Jn?m:d,xr=Jn?Fc:Ys,lt=Jn?Ys:Fc,Qc=y(ln(s,2,B)),Xe=y(ln(s,0,B)),Qe=y(y(qr(s+364|0,B))-xr),et=y(y(qr(s+380|0,B))-xr),Ue=y(y(qr(s+372|0,k))-lt),Ge=y(y(qr(s+388|0,k))-lt),Tu=Jn?Qe:Ue,Nu=Jn?et:Ge,Qc=y(l-Qc),l=y(Qc-xr),_t(l)|0?xr=l:xr=y(_n(y(Tg(l,et)),Qe)),lf=y(c-Xe),l=y(lf-lt),_t(l)|0?Eo=l:Eo=y(_n(y(Tg(l,Ge)),Ue)),Qe=Jn?xr:Eo,Rn=Jn?Eo:xr;e:do if((or|0)==1)for(f=0,G=0;;){if(O=gs(s,G)|0,!f)y(rs(O))>y(0)&&y(js(O))>y(0)?f=O:f=0;else if(Tm(O)|0){qe=0;break e}if(G=G+1|0,G>>>0>=Ws>>>0){qe=f;break}}else qe=0;while(0);Lt=qe+500|0,Mr=qe+504|0,f=0,O=0,l=y(0),se=0;do{if(G=n[(n[wo>>2]|0)+(se<<2)>>2]|0,(n[G+36>>2]|0)==1)Bu(G),o[G+985>>0]=1,o[G+984>>0]=0;else{Bl(G),Q&&Ep(G,mt(G,Ds)|0,Qe,Rn,xr);do if((n[G+24>>2]|0)!=1)if((G|0)==(qe|0)){n[Lt>>2]=n[2278],h[Mr>>2]=y(0);break}else{Nm(s,G,xr,d,Eo,xr,Eo,m,Ds,M);break}else O|0&&(n[O+960>>2]=G),n[G+960>>2]=0,O=G,f=(f|0)==0?G:f;while(0);vs=y(h[G+504>>2]),l=y(l+y(vs+y(ln(G,Rr,xr))))}se=se+1|0}while((se|0)!=(Ws|0));for(mo=l>Qe,Ql=xc&((or|0)==2&mo)?1:or,xn=(Fl|0)==1,ya=xn&(Q^1),Fp=(Ql|0)==1,Rp=(Ql|0)==2,bl=976+(Rr<<2)|0,Tp=(Fl|2|0)==2,Op=xn&(xc^1),Fu=1040+(ur<<2)|0,Ru=1040+(Rr<<2)|0,Np=976+(ur<<2)|0,Lp=(Fl|0)!=1,mo=xc&((or|0)!=0&mo),go=s+976|0,xn=xn^1,l=Qe,Nr=0,yo=0,vs=y(0),kc=y(0);;){e:do if(Nr>>>0>>0)for(Mr=n[wo>>2]|0,se=0,Ge=y(0),Ue=y(0),et=y(0),Qe=y(0),G=0,O=0,qe=Nr;;){if(Lt=n[Mr+(qe<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=yo,(n[Lt+24>>2]|0)!=1)){if(Xe=y(ln(Lt,Rr,xr)),Xr=n[bl>>2]|0,c=y(qr(Lt+380+(Xr<<3)|0,Co)),lt=y(h[Lt+504>>2]),c=y(Tg(c,lt)),c=y(_n(y(qr(Lt+364+(Xr<<3)|0,Co)),c)),xc&(se|0)!=0&y(Xe+y(Ue+c))>l){m=se,Xe=Ge,or=qe;break e}Xe=y(Xe+c),c=y(Ue+Xe),Xe=y(Ge+Xe),Tm(Lt)|0&&(et=y(et+y(rs(Lt))),Qe=y(Qe-y(lt*y(js(Lt))))),O|0&&(n[O+960>>2]=Lt),n[Lt+960>>2]=0,se=se+1|0,O=Lt,G=(G|0)==0?Lt:G}else Xe=Ge,c=Ue;if(qe=qe+1|0,qe>>>0>>0)Ge=Xe,Ue=c;else{m=se,or=qe;break}}else m=0,Xe=y(0),et=y(0),Qe=y(0),G=0,or=Nr;while(0);Xr=et>y(0)&ety(0)&QeNu&((_t(Nu)|0)^1))l=Nu,Xr=51;else if(o[(n[go>>2]|0)+3>>0]|0)Xr=51;else{if(Xt!=y(0)&&y(rs(s))!=y(0)){Xr=53;break}l=Xe,Xr=53}while(0);if((Xr|0)==51&&(Xr=0,_t(l)|0?Xr=53:(Sr=y(l-Xe),ir=l)),(Xr|0)==53&&(Xr=0,Xe>2]|0,qe=Sry(0),Ue=y(Sr/Xt),et=y(0),Xe=y(0),l=y(0),O=G;do c=y(qr(O+380+(se<<3)|0,Co)),Qe=y(qr(O+364+(se<<3)|0,Co)),Qe=y(Tg(c,y(_n(Qe,y(h[O+504>>2]))))),qe?(c=y(Qe*y(js(O))),c!=y(-0)&&(Jt=y(Qe-y(lt*c)),sf=y(Bi(O,Rr,Jt,ir,xr)),Jt!=sf)&&(et=y(et-y(sf-Qe)),l=y(l+c))):Lt&&(Lu=y(rs(O)),Lu!=y(0))&&(Jt=y(Qe+y(Ue*Lu)),of=y(Bi(O,Rr,Jt,ir,xr)),Jt!=of)&&(et=y(et-y(of-Qe)),Xe=y(Xe-Lu)),O=n[O+960>>2]|0;while((O|0)!=0);if(l=y(Ge+l),Qe=y(Sr+et),nf)l=y(0);else{lt=y(Xt+Xe),qe=n[bl>>2]|0,Lt=Qey(0),lt=y(Qe/lt),l=y(0);do{Jt=y(qr(G+380+(qe<<3)|0,Co)),et=y(qr(G+364+(qe<<3)|0,Co)),et=y(Tg(Jt,y(_n(et,y(h[G+504>>2]))))),Lt?(Jt=y(et*y(js(G))),Qe=y(-Jt),Jt!=y(-0)?(Jt=y(Ue*Qe),Qe=y(Bi(G,Rr,y(et+(Mr?Qe:Jt)),ir,xr))):Qe=et):se&&(af=y(rs(G)),af!=y(0))?Qe=y(Bi(G,Rr,y(et+y(lt*af)),ir,xr)):Qe=et,l=y(l-y(Qe-et)),Xe=y(ln(G,Rr,xr)),c=y(ln(G,ur,xr)),Qe=y(Qe+Xe),h[za>>2]=Qe,n[kl>>2]=1,et=y(h[G+396>>2]);e:do if(_t(et)|0){O=_t(Rn)|0;do if(!O){if(mo|(ts(G,ur,Rn)|0|xn)||(ha(s,G)|0)!=4||(n[(vl(G,ur)|0)+4>>2]|0)==3||(n[(Sc(G,ur)|0)+4>>2]|0)==3)break;h[Gs>>2]=Rn,n[Wo>>2]=1;break e}while(0);if(ts(G,ur,Rn)|0){O=n[G+992+(n[Np>>2]<<2)>>2]|0,Jt=y(c+y(qr(O,Rn))),h[Gs>>2]=Jt,O=Lp&(n[O+4>>2]|0)==2,n[Wo>>2]=((_t(Jt)|0|O)^1)&1;break}else{h[Gs>>2]=Rn,n[Wo>>2]=O?0:2;break}}else Jt=y(Qe-Xe),Xt=y(Jt/et),Jt=y(et*Jt),n[Wo>>2]=1,h[Gs>>2]=y(c+(Jn?Xt:Jt));while(0);yr(G,Rr,ir,xr,kl,za),yr(G,ur,Rn,xr,Wo,Gs);do if(!(ts(G,ur,Rn)|0)&&(ha(s,G)|0)==4){if((n[(vl(G,ur)|0)+4>>2]|0)==3){O=0;break}O=(n[(Sc(G,ur)|0)+4>>2]|0)!=3}else O=0;while(0);Jt=y(h[za>>2]),Xt=y(h[Gs>>2]),hf=n[kl>>2]|0,li=n[Wo>>2]|0,fa(G,Jn?Jt:Xt,Jn?Xt:Jt,Ds,Jn?hf:li,Jn?li:hf,xr,Eo,Q&(O^1),3488,M)|0,o[xl>>0]=o[xl>>0]|o[G+508>>0],G=n[G+960>>2]|0}while((G|0)!=0)}}else l=y(0);if(l=y(Sr+l),li=l>0]=li|u[xl>>0],Rp&l>y(0)?(O=n[bl>>2]|0,(n[s+364+(O<<3)+4>>2]|0)!=0&&(qs=y(qr(s+364+(O<<3)|0,Co)),qs>=y(0))?Qe=y(_n(y(0),y(qs-y(ir-l)))):Qe=y(0)):Qe=l,Lt=Nr>>>0>>0,Lt){qe=n[wo>>2]|0,se=Nr,O=0;do G=n[qe+(se<<2)>>2]|0,n[G+24>>2]|0||(O=((n[(vl(G,Rr)|0)+4>>2]|0)==3&1)+O|0,O=O+((n[(Sc(G,Rr)|0)+4>>2]|0)==3&1)|0),se=se+1|0;while((se|0)!=(or|0));O?(Xe=y(0),c=y(0)):Xr=101}else Xr=101;e:do if((Xr|0)==101)switch(Xr=0,Mp|0){case 1:{O=0,Xe=y(Qe*y(.5)),c=y(0);break e}case 2:{O=0,Xe=Qe,c=y(0);break e}case 3:{if(m>>>0<=1){O=0,Xe=y(0),c=y(0);break e}c=y((m+-1|0)>>>0),O=0,Xe=y(0),c=y(y(_n(Qe,y(0)))/c);break e}case 5:{c=y(Qe/y((m+1|0)>>>0)),O=0,Xe=c;break e}case 4:{c=y(Qe/y(m>>>0)),O=0,Xe=y(c*y(.5));break e}default:{O=0,Xe=y(0),c=y(0);break e}}while(0);if(l=y(Up+Xe),Lt){et=y(Qe/y(O|0)),se=n[wo>>2]|0,G=Nr,Qe=y(0);do{O=n[se+(G<<2)>>2]|0;e:do if((n[O+36>>2]|0)!=1){switch(n[O+24>>2]|0){case 1:{if(gi(O,Rr)|0){if(!Q)break e;Jt=y(Or(O,Rr,ir)),Jt=y(Jt+y(Cr(s,Rr))),Jt=y(Jt+y(K(O,Rr,xr))),h[O+400+(n[Ru>>2]<<2)>>2]=Jt;break e}break}case 0:if(li=(n[(vl(O,Rr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,Q&&(li=O+400+(n[Ru>>2]<<2)|0,h[li>>2]=y(l+y(h[li>>2]))),li=(n[(Sc(O,Rr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,ya){Jt=y(c+y(ln(O,Rr,xr))),Qe=Rn,l=y(l+y(Jt+y(h[O+504>>2])));break e}else{l=y(l+y(c+y(ns(O,Rr,xr)))),Qe=y(_n(Qe,y(ns(O,ur,xr))));break e}default:}Q&&(Jt=y(Xe+y(Cr(s,Rr))),li=O+400+(n[Ru>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2])))}while(0);G=G+1|0}while((G|0)!=(or|0))}else Qe=y(0);if(c=y(_p+l),Tp?Xe=y(y(Bi(s,ur,y(Ys+Qe),Rc,B))-Ys):Xe=Rn,et=y(y(Bi(s,ur,y(Ys+(Op?Rn:Qe)),Rc,B))-Ys),Lt&Q){G=Nr;do{se=n[(n[wo>>2]|0)+(G<<2)>>2]|0;do if((n[se+36>>2]|0)!=1){if((n[se+24>>2]|0)==1){if(gi(se,ur)|0){if(Jt=y(Or(se,ur,Rn)),Jt=y(Jt+y(Cr(s,ur))),Jt=y(Jt+y(K(se,ur,xr))),O=n[Fu>>2]|0,h[se+400+(O<<2)>>2]=Jt,!(_t(Jt)|0))break}else O=n[Fu>>2]|0;Jt=y(Cr(s,ur)),h[se+400+(O<<2)>>2]=y(Jt+y(K(se,ur,xr)));break}O=ha(s,se)|0;do if((O|0)==4){if((n[(vl(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if((n[(Sc(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if(ts(se,ur,Rn)|0){l=Me;break}hf=n[se+908+(n[bl>>2]<<2)>>2]|0,n[Gs>>2]=hf,l=y(h[se+396>>2]),li=_t(l)|0,Qe=(n[v>>2]=hf,y(h[v>>2])),li?l=et:(Sr=y(ln(se,ur,xr)),Jt=y(Qe/l),l=y(l*Qe),l=y(Sr+(Jn?Jt:l))),h[za>>2]=l,h[Gs>>2]=y(y(ln(se,Rr,xr))+Qe),n[Wo>>2]=1,n[kl>>2]=1,yr(se,Rr,ir,xr,Wo,Gs),yr(se,ur,Rn,xr,kl,za),l=y(h[Gs>>2]),Sr=y(h[za>>2]),Jt=Jn?l:Sr,l=Jn?Sr:l,li=((_t(Jt)|0)^1)&1,fa(se,Jt,l,Ds,li,((_t(l)|0)^1)&1,xr,Eo,1,3493,M)|0,l=Me}else Xr=139;while(0);e:do if((Xr|0)==139){Xr=0,l=y(Xe-y(ns(se,ur,xr)));do if((n[(vl(se,ur)|0)+4>>2]|0)==3){if((n[(Sc(se,ur)|0)+4>>2]|0)!=3)break;l=y(Me+y(_n(y(0),y(l*y(.5)))));break e}while(0);if((n[(Sc(se,ur)|0)+4>>2]|0)==3){l=Me;break}if((n[(vl(se,ur)|0)+4>>2]|0)==3){l=y(Me+y(_n(y(0),l)));break}switch(O|0){case 1:{l=Me;break e}case 2:{l=y(Me+y(l*y(.5)));break e}default:{l=y(Me+l);break e}}}while(0);Jt=y(vs+l),li=se+400+(n[Fu>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2]))}while(0);G=G+1|0}while((G|0)!=(or|0))}if(vs=y(vs+et),kc=y(_n(kc,c)),m=yo+1|0,or>>>0>=Ws>>>0)break;l=ir,Nr=or,yo=m}do if(Q){if(O=m>>>0>1,!O&&!(Yi(s)|0))break;if(!(_t(Rn)|0)){l=y(Rn-vs);e:do switch(n[s+12>>2]|0){case 3:{Me=y(Me+l),Ue=y(0);break}case 2:{Me=y(Me+y(l*y(.5))),Ue=y(0);break}case 4:{Rn>vs?Ue=y(l/y(m>>>0)):Ue=y(0);break}case 7:if(Rn>vs){Me=y(Me+y(l/y(m<<1>>>0))),Ue=y(l/y(m>>>0)),Ue=O?Ue:y(0);break e}else{Me=y(Me+y(l*y(.5))),Ue=y(0);break e}case 6:{Ue=y(l/y(yo>>>0)),Ue=Rn>vs&O?Ue:y(0);break}default:Ue=y(0)}while(0);if(m|0)for(Lt=1040+(ur<<2)|0,Mr=976+(ur<<2)|0,qe=0,G=0;;){e:do if(G>>>0>>0)for(Qe=y(0),et=y(0),l=y(0),se=G;;){O=n[(n[wo>>2]|0)+(se<<2)>>2]|0;do if((n[O+36>>2]|0)!=1&&(n[O+24>>2]|0)==0){if((n[O+940>>2]|0)!=(qe|0))break e;if(Lm(O,ur)|0&&(Jt=y(h[O+908+(n[Mr>>2]<<2)>>2]),l=y(_n(l,y(Jt+y(ln(O,ur,xr)))))),(ha(s,O)|0)!=5)break;qs=y(Ya(O)),qs=y(qs+y(K(O,0,xr))),Jt=y(h[O+912>>2]),Jt=y(y(Jt+y(ln(O,0,xr)))-qs),qs=y(_n(et,qs)),Jt=y(_n(Qe,Jt)),Qe=Jt,et=qs,l=y(_n(l,y(qs+Jt)))}while(0);if(O=se+1|0,O>>>0>>0)se=O;else{se=O;break}}else et=y(0),l=y(0),se=G;while(0);if(lt=y(Ue+l),c=Me,Me=y(Me+lt),G>>>0>>0){Xe=y(c+et),O=G;do{G=n[(n[wo>>2]|0)+(O<<2)>>2]|0;e:do if((n[G+36>>2]|0)!=1&&(n[G+24>>2]|0)==0)switch(ha(s,G)|0){case 1:{Jt=y(c+y(K(G,ur,xr))),h[G+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 3:{Jt=y(y(Me-y(re(G,ur,xr)))-y(h[G+908+(n[Mr>>2]<<2)>>2])),h[G+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 2:{Jt=y(c+y(y(lt-y(h[G+908+(n[Mr>>2]<<2)>>2]))*y(.5))),h[G+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 4:{if(Jt=y(c+y(K(G,ur,xr))),h[G+400+(n[Lt>>2]<<2)>>2]=Jt,ts(G,ur,Rn)|0||(Jn?(Qe=y(h[G+908>>2]),l=y(Qe+y(ln(G,Rr,xr))),et=lt):(et=y(h[G+912>>2]),et=y(et+y(ln(G,ur,xr))),l=lt,Qe=y(h[G+908>>2])),Ii(l,Qe)|0&&Ii(et,y(h[G+912>>2]))|0))break e;fa(G,l,et,Ds,1,1,xr,Eo,1,3501,M)|0;break e}case 5:{h[G+404>>2]=y(y(Xe-y(Ya(G)))+y(Or(G,0,Rn)));break e}default:break e}while(0);O=O+1|0}while((O|0)!=(se|0))}if(qe=qe+1|0,(qe|0)==(m|0))break;G=se}}}while(0);if(h[s+908>>2]=y(Bi(s,2,Qc,B,B)),h[s+912>>2]=y(Bi(s,0,lf,k,B)),(Ql|0)!=0&&(cf=n[s+32>>2]|0,uf=(Ql|0)==2,!(uf&(cf|0)!=2))?uf&(cf|0)==2&&(l=y(Fc+ir),l=y(_n(y(Tg(l,y(MA(s,Rr,kc,Co)))),Fc)),Xr=198):(l=y(Bi(s,Rr,kc,Co,B)),Xr=198),(Xr|0)==198&&(h[s+908+(n[976+(Rr<<2)>>2]<<2)>>2]=l),(Fl|0)!=0&&(ff=n[s+32>>2]|0,pf=(Fl|0)==2,!(pf&(ff|0)!=2))?pf&(ff|0)==2&&(l=y(Ys+Rn),l=y(_n(y(Tg(l,y(MA(s,ur,y(Ys+vs),Rc)))),Ys)),Xr=204):(l=y(Bi(s,ur,y(Ys+vs),Rc,B)),Xr=204),(Xr|0)==204&&(h[s+908+(n[976+(ur<<2)>>2]<<2)>>2]=l),Q){if((n[Af>>2]|0)==2){G=976+(ur<<2)|0,se=1040+(ur<<2)|0,O=0;do qe=gs(s,O)|0,n[qe+24>>2]|0||(hf=n[G>>2]|0,Jt=y(h[s+908+(hf<<2)>>2]),li=qe+400+(n[se>>2]<<2)|0,Jt=y(Jt-y(h[li>>2])),h[li>>2]=y(Jt-y(h[qe+908+(hf<<2)>>2]))),O=O+1|0;while((O|0)!=(Ws|0))}if(f|0){O=Jn?Ql:d;do Om(s,f,xr,O,Eo,Ds,M),f=n[f+960>>2]|0;while((f|0)!=0)}if(O=(Rr|2|0)==3,G=(ur|2|0)==3,O|G){f=0;do se=n[(n[wo>>2]|0)+(f<<2)>>2]|0,(n[se+36>>2]|0)!=1&&(O&&wp(s,se,Rr),G&&wp(s,se,ur)),f=f+1|0;while((f|0)!=(Ws|0))}}}while(0);C=Rl}function pa(s,l){s=s|0,l=y(l);var c=0;oa(s,l>=y(0),3147),c=l==y(0),h[s+4>>2]=c?y(0):l}function vc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=f|0;var d=Ze,m=Ze,B=0,k=0,Q=0;n[2278]=(n[2278]|0)+1,Bl(s),ts(s,2,l)|0?(d=y(qr(n[s+992>>2]|0,l)),Q=1,d=y(d+y(ln(s,2,l)))):(d=y(qr(s+380|0,l)),d>=y(0)?Q=2:(Q=((_t(l)|0)^1)&1,d=l)),ts(s,0,c)|0?(m=y(qr(n[s+996>>2]|0,c)),k=1,m=y(m+y(ln(s,0,l)))):(m=y(qr(s+388|0,c)),m>=y(0)?k=2:(k=((_t(c)|0)^1)&1,m=c)),B=s+976|0,fa(s,d,m,f,Q,k,l,c,1,3189,n[B>>2]|0)|0&&(Ep(s,n[s+496>>2]|0,l,c,l),Dc(s,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),o[11696]|0)&&Qm(s,7)}function Bl(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;k=C,C=C+32|0,B=k+24|0,m=k+16|0,f=k+8|0,d=k,c=0;do l=s+380+(c<<3)|0,(n[s+380+(c<<3)+4>>2]|0)!=0&&(Q=l,M=n[Q+4>>2]|0,O=f,n[O>>2]=n[Q>>2],n[O+4>>2]=M,O=s+364+(c<<3)|0,M=n[O+4>>2]|0,Q=d,n[Q>>2]=n[O>>2],n[Q+4>>2]=M,n[m>>2]=n[f>>2],n[m+4>>2]=n[f+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],ws(m,B)|0)||(l=s+348+(c<<3)|0),n[s+992+(c<<2)>>2]=l,c=c+1|0;while((c|0)!=2);C=k}function ts(s,l,c){s=s|0,l=l|0,c=y(c);var f=0;switch(s=n[s+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[s+4>>2]|0){case 0:case 3:{s=0;break}case 1:{y(h[s>>2])>2])>2]|0){case 2:{l=y(y(y(h[s>>2])*l)/y(100));break}case 1:{l=y(h[s>>2]);break}default:l=y(ce)}return y(l)}function Ep(s,l,c,f,d){s=s|0,l=l|0,c=y(c),f=y(f),d=y(d);var m=0,B=Ze;l=n[s+944>>2]|0?l:1,m=fr(n[s+4>>2]|0,l)|0,l=ww(m,l)|0,c=y(Mm(s,m,c)),f=y(Mm(s,l,f)),B=y(c+y(K(s,m,d))),h[s+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,c=y(c+y(re(s,m,d))),h[s+400+(n[1e3+(m<<2)>>2]<<2)>>2]=c,c=y(f+y(K(s,l,d))),h[s+400+(n[1040+(l<<2)>>2]<<2)>>2]=c,d=y(f+y(re(s,l,d))),h[s+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function Dc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=y(f);var d=0,m=0,B=Ze,k=Ze,Q=0,M=0,O=Ze,G=0,se=Ze,qe=Ze,Me=Ze,Qe=Ze;if(l!=y(0)&&(d=s+400|0,Qe=y(h[d>>2]),m=s+404|0,Me=y(h[m>>2]),G=s+416|0,qe=y(h[G>>2]),M=s+420|0,B=y(h[M>>2]),se=y(Qe+c),O=y(Me+f),f=y(se+qe),k=y(O+B),Q=(n[s+988>>2]|0)==1,h[d>>2]=y(qo(Qe,l,0,Q)),h[m>>2]=y(qo(Me,l,0,Q)),c=y(bR(y(qe*l),y(1))),Ii(c,y(0))|0?m=0:m=(Ii(c,y(1))|0)^1,c=y(bR(y(B*l),y(1))),Ii(c,y(0))|0?d=0:d=(Ii(c,y(1))|0)^1,Qe=y(qo(f,l,Q&m,Q&(m^1))),h[G>>2]=y(Qe-y(qo(se,l,0,Q))),Qe=y(qo(k,l,Q&d,Q&(d^1))),h[M>>2]=y(Qe-y(qo(O,l,0,Q))),m=(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2,m|0)){d=0;do Dc(gs(s,d)|0,l,se,O),d=d+1|0;while((d|0)!=(m|0))}}function Cw(s,l,c,f,d){switch(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,c|0){case 5:case 0:{s=i7(n[489]|0,f,d)|0;break}default:s=zUe(f,d)|0}return s|0}function Eg(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;d=C,C=C+16|0,m=d,n[m>>2]=f,Cg(s,0,l,c,m),C=d}function Cg(s,l,c,f,d){if(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,s=s|0?s:956,D7[n[s+8>>2]&1](s,l,c,f,d)|0,(c|0)==5)Rt();else return}function qa(s,l,c){s=s|0,l=l|0,c=c|0,o[s+l>>0]=c&1}function Rm(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(wg(s,f),Qt(s,n[l>>2]|0,n[c>>2]|0,f))}function wg(s,l){s=s|0,l=l|0;var c=0;if((N(s)|0)>>>0>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function Qt(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function N(s){return s=s|0,1073741823}function K(s,l,c){return s=s|0,l=l|0,c=y(c),pe(l)|0&&(n[s+96>>2]|0)!=0?s=s+92|0:s=Fn(s+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function re(s,l,c){return s=s|0,l=l|0,c=y(c),pe(l)|0&&(n[s+104>>2]|0)!=0?s=s+100|0:s=Fn(s+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function pe(s){return s=s|0,(s|1|0)==3|0}function ze(s,l){return s=s|0,l=y(l),(n[s+4>>2]|0)==3?l=y(0):l=y(qr(s,l)),y(l)}function mt(s,l){return s=s|0,l=l|0,s=n[s>>2]|0,((s|0)==0?(l|0)>1?l:1:s)|0}function fr(s,l){s=s|0,l=l|0;var c=0;e:do if((l|0)==2){switch(s|0){case 2:{s=3;break e}case 3:break;default:{c=4;break e}}s=2}else c=4;while(0);return s|0}function Cr(s,l){s=s|0,l=l|0;var c=Ze;return pe(l)|0&&(n[s+312>>2]|0)!=0&&(c=y(h[s+308>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function yn(s,l){s=s|0,l=l|0;var c=Ze;return pe(l)|0&&(n[s+320>>2]|0)!=0&&(c=y(h[s+316>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return pe(l)|0&&(n[s+240>>2]|0)!=0&&(f=y(qr(s+236|0,c)),f>=y(0))||(f=y(_n(y(qr(Fn(s+204|0,n[1040+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return pe(l)|0&&(n[s+248>>2]|0)!=0&&(f=y(qr(s+244|0,c)),f>=y(0))||(f=y(_n(y(qr(Fn(s+204|0,n[1e3+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Ig(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,M=Ze,O=Ze,G=Ze,se=Ze,qe=0,Me=0,Qe=0;Qe=C,C=C+16|0,qe=Qe,Me=s+964|0,Un(s,(n[Me>>2]|0)!=0,3519),k=y(En(s,2,l)),Q=y(En(s,0,l)),M=y(ln(s,2,l)),O=y(ln(s,0,l)),_t(l)|0?G=l:G=y(_n(y(0),y(y(l-M)-k))),_t(c)|0?se=c:se=y(_n(y(0),y(y(c-O)-Q))),(f|0)==1&(d|0)==1?(h[s+908>>2]=y(Bi(s,2,y(l-M),m,m)),l=y(Bi(s,0,y(c-O),B,m))):(S7[n[Me>>2]&1](qe,s,G,f,se,d),G=y(k+y(h[qe>>2])),se=y(l-M),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?G:se,m,m)),se=y(Q+y(h[qe+4>>2])),l=y(c-O),l=y(Bi(s,0,(d|2|0)==2?se:l,B,m))),h[s+912>>2]=l,C=Qe}function qv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,M=Ze,O=Ze;M=y(En(s,2,m)),k=y(En(s,0,m)),O=y(ln(s,2,m)),Q=y(ln(s,0,m)),l=y(l-O),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?M:l,m,m)),c=y(c-Q),h[s+912>>2]=y(Bi(s,0,(d|2|0)==2?k:c,B,m))}function Yv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=0,Q=Ze,M=Ze;return k=(f|0)==2,!(l<=y(0)&k)&&!(c<=y(0)&(d|0)==2)&&!((f|0)==1&(d|0)==1)?s=0:(Q=y(ln(s,0,m)),M=y(ln(s,2,m)),k=l>2]=y(Bi(s,2,k?y(0):l,m,m)),l=y(c-Q),k=c>2]=y(Bi(s,0,k?y(0):l,B,m)),s=1),s|0}function ww(s,l){return s=s|0,l=l|0,UA(s)|0?s=fr(2,l)|0:s=0,s|0}function Cp(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(oi(s,l,c)),y(c+y(Cr(s,l)))}function Iw(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(Oi(s,l,c)),y(c+y(yn(s,l)))}function En(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(Cp(s,l,c)),y(f+y(Iw(s,l,c)))}function Tm(s){return s=s|0,n[s+24>>2]|0?s=0:y(rs(s))!=y(0)?s=1:s=y(js(s))!=y(0),s|0}function rs(s){s=s|0;var l=Ze;if(n[s+944>>2]|0){if(l=y(h[s+44>>2]),_t(l)|0)return l=y(h[s+40>>2]),s=l>y(0)&((_t(l)|0)^1),y(s?l:y(0))}else l=y(0);return y(l)}function js(s){s=s|0;var l=Ze,c=0,f=Ze;do if(n[s+944>>2]|0){if(l=y(h[s+48>>2]),_t(l)|0){if(c=o[(n[s+976>>2]|0)+2>>0]|0,c<<24>>24==0&&(f=y(h[s+40>>2]),f>24?y(1):y(0)}}else l=y(0);while(0);return y(l)}function Bu(s){s=s|0;var l=0,c=0;if(Xm(s+400|0,0,540)|0,o[s+985>>0]=1,$(s),c=wi(s)|0,c|0){l=s+948|0,s=0;do Bu(n[(n[l>>2]|0)+(s<<2)>>2]|0),s=s+1|0;while((s|0)!=(c|0))}}function Nm(s,l,c,f,d,m,B,k,Q,M){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=y(m),B=y(B),k=k|0,Q=Q|0,M=M|0;var O=0,G=Ze,se=0,qe=0,Me=Ze,Qe=Ze,et=0,Xe=Ze,lt=0,Ue=Ze,Ge=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0,go=0;xn=C,C=C+16|0,Mr=xn+12|0,or=xn+8|0,Xt=xn+4|0,Sr=xn,ir=fr(n[s+4>>2]|0,Q)|0,Ge=pe(ir)|0,G=y(qr(Bw(l)|0,Ge?m:B)),Lt=ts(l,2,m)|0,Nr=ts(l,0,B)|0;do if(!(_t(G)|0)&&!(_t(Ge?c:d)|0)){if(O=l+504|0,!(_t(y(h[O>>2]))|0)&&(!(vw(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[O>>2]=y(_n(G,y(En(l,ir,m))))}else se=7;while(0);do if((se|0)==7){if(lt=Ge^1,!(lt|Lt^1)){B=y(qr(n[l+992>>2]|0,m)),h[l+504>>2]=y(_n(B,y(En(l,2,m))));break}if(!(Ge|Nr^1)){B=y(qr(n[l+996>>2]|0,B)),h[l+504>>2]=y(_n(B,y(En(l,0,m))));break}h[Mr>>2]=y(ce),h[or>>2]=y(ce),n[Xt>>2]=0,n[Sr>>2]=0,Xe=y(ln(l,2,m)),Ue=y(ln(l,0,m)),Lt?(Me=y(Xe+y(qr(n[l+992>>2]|0,m))),h[Mr>>2]=Me,n[Xt>>2]=1,qe=1):(qe=0,Me=y(ce)),Nr?(G=y(Ue+y(qr(n[l+996>>2]|0,B))),h[or>>2]=G,n[Sr>>2]=1,O=1):(O=0,G=y(ce)),se=n[s+32>>2]|0,Ge&(se|0)==2?se=2:_t(Me)|0&&!(_t(c)|0)&&(h[Mr>>2]=c,n[Xt>>2]=2,qe=2,Me=c),!((se|0)==2<)&&_t(G)|0&&!(_t(d)|0)&&(h[or>>2]=d,n[Sr>>2]=2,O=2,G=d),Qe=y(h[l+396>>2]),et=_t(Qe)|0;do if(et)se=qe;else{if((qe|0)==1<){h[or>>2]=y(y(Me-Xe)/Qe),n[Sr>>2]=1,O=1,se=1;break}Ge&(O|0)==1?(h[Mr>>2]=y(Qe*y(G-Ue)),n[Xt>>2]=1,O=1,se=1):se=qe}while(0);go=_t(c)|0,qe=(ha(s,l)|0)!=4,!(Ge|Lt|((f|0)!=1|go)|(qe|(se|0)==1))&&(h[Mr>>2]=c,n[Xt>>2]=1,!et)&&(h[or>>2]=y(y(c-Xe)/Qe),n[Sr>>2]=1,O=1),!(Nr|lt|((k|0)!=1|(_t(d)|0))|(qe|(O|0)==1))&&(h[or>>2]=d,n[Sr>>2]=1,!et)&&(h[Mr>>2]=y(Qe*y(d-Ue)),n[Xt>>2]=1),yr(l,2,m,m,Xt,Mr),yr(l,0,B,m,Sr,or),c=y(h[Mr>>2]),d=y(h[or>>2]),fa(l,c,d,Q,n[Xt>>2]|0,n[Sr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(ir<<2)>>2]<<2)>>2]),h[l+504>>2]=y(_n(B,y(En(l,ir,m))))}while(0);n[l+500>>2]=n[2278],C=xn}function Bi(s,l,c,f,d){return s=s|0,l=l|0,c=y(c),f=y(f),d=y(d),f=y(MA(s,l,c,f)),y(_n(f,y(En(s,l,d))))}function ha(s,l){return s=s|0,l=l|0,l=l+20|0,l=n[((n[l>>2]|0)==0?s+16|0:l)>>2]|0,(l|0)==5&&UA(n[s+4>>2]|0)|0&&(l=1),l|0}function vl(s,l){return s=s|0,l=l|0,pe(l)|0&&(n[s+96>>2]|0)!=0?l=4:l=n[1040+(l<<2)>>2]|0,s+60+(l<<3)|0}function Sc(s,l){return s=s|0,l=l|0,pe(l)|0&&(n[s+104>>2]|0)!=0?l=5:l=n[1e3+(l<<2)>>2]|0,s+60+(l<<3)|0}function yr(s,l,c,f,d,m){switch(s=s|0,l=l|0,c=y(c),f=y(f),d=d|0,m=m|0,c=y(qr(s+380+(n[976+(l<<2)>>2]<<3)|0,c)),c=y(c+y(ln(s,l,f))),n[d>>2]|0){case 2:case 1:{d=_t(c)|0,f=y(h[m>>2]),h[m>>2]=d|f>2]=2,h[m>>2]=c);break}default:}}function gi(s,l){return s=s|0,l=l|0,s=s+132|0,pe(l)|0&&(n[(Fn(s,4,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Or(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,pe(l)|0&&(f=Fn(s,4,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1040+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(qr(f,c))),y(c)}function ns(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),f=y(f+y(K(s,l,c))),y(f+y(re(s,l,c)))}function Yi(s){s=s|0;var l=0,c=0,f=0;e:do if(UA(n[s+4>>2]|0)|0)l=0;else if((n[s+16>>2]|0)!=5)if(c=wi(s)|0,!c)l=0;else for(l=0;;){if(f=gs(s,l)|0,(n[f+24>>2]|0)==0&&(n[f+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=c>>>0){l=0;break}}else l=1;while(0);return l|0}function Lm(s,l){s=s|0,l=l|0;var c=Ze;return c=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),c>=y(0)&((_t(c)|0)^1)|0}function Ya(s){s=s|0;var l=Ze,c=0,f=0,d=0,m=0,B=0,k=0,Q=Ze;if(c=n[s+968>>2]|0,c)Q=y(h[s+908>>2]),l=y(h[s+912>>2]),l=y(w7[c&0](s,Q,l)),Un(s,(_t(l)|0)^1,3573);else{m=wi(s)|0;do if(m|0){for(c=0,d=0;;){if(f=gs(s,d)|0,n[f+940>>2]|0){B=8;break}if((n[f+24>>2]|0)!=1)if(k=(ha(s,f)|0)==5,k){c=f;break}else c=(c|0)==0?f:c;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!c)break;return l=y(Ya(c)),y(l+y(h[c+404>>2]))}while(0);l=y(h[s+912>>2])}return y(l)}function MA(s,l,c,f){s=s|0,l=l|0,c=y(c),f=y(f);var d=Ze,m=0;return UA(l)|0?(l=1,m=3):pe(l)|0?(l=0,m=3):(f=y(ce),d=y(ce)),(m|0)==3&&(d=y(qr(s+364+(l<<3)|0,f)),f=y(qr(s+380+(l<<3)|0,f))),m=f=y(0)&((_t(f)|0)^1)),c=m?f:c,m=d>=y(0)&((_t(d)|0)^1)&c>2]|0,m)|0,Me=ww(et,m)|0,Qe=pe(et)|0,G=y(ln(l,2,c)),se=y(ln(l,0,c)),ts(l,2,c)|0?k=y(G+y(qr(n[l+992>>2]|0,c))):gi(l,2)|0&&sr(l,2)|0?(k=y(h[s+908>>2]),Q=y(Cr(s,2)),Q=y(k-y(Q+y(yn(s,2)))),k=y(Or(l,2,c)),k=y(Bi(l,2,y(Q-y(k+y(vu(l,2,c)))),c,c))):k=y(ce),ts(l,0,d)|0?Q=y(se+y(qr(n[l+996>>2]|0,d))):gi(l,0)|0&&sr(l,0)|0?(Q=y(h[s+912>>2]),lt=y(Cr(s,0)),lt=y(Q-y(lt+y(yn(s,0)))),Q=y(Or(l,0,d)),Q=y(Bi(l,0,y(lt-y(Q+y(vu(l,0,d)))),d,c))):Q=y(ce),M=_t(k)|0,O=_t(Q)|0;do if(M^O&&(qe=y(h[l+396>>2]),!(_t(qe)|0)))if(M){k=y(G+y(y(Q-se)*qe));break}else{lt=y(se+y(y(k-G)/qe)),Q=O?lt:Q;break}while(0);O=_t(k)|0,M=_t(Q)|0,O|M&&(Ue=(O^1)&1,f=c>y(0)&((f|0)!=0&O),k=Qe?k:f?c:k,fa(l,k,Q,m,Qe?Ue:f?2:Ue,O&(M^1)&1,k,Q,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(ln(l,2,c))),Q=y(h[l+912>>2]),Q=y(Q+y(ln(l,0,c)))),fa(l,k,Q,m,1,1,k,Q,1,3635,B)|0,sr(l,et)|0&&!(gi(l,et)|0)?(Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),lt=y(lt-y(yn(s,et))),lt=y(lt-y(re(l,et,c))),lt=y(lt-y(vu(l,et,Qe?c:d))),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt):Xe=21;do if((Xe|0)==21){if(!(gi(l,et)|0)&&(n[s+8>>2]|0)==1){Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(y(lt-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt;break}!(gi(l,et)|0)&&(n[s+8>>2]|0)==2&&(Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt)}while(0);sr(l,Me)|0&&!(gi(l,Me)|0)?(Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),lt=y(lt-y(yn(s,Me))),lt=y(lt-y(re(l,Me,c))),lt=y(lt-y(vu(l,Me,Qe?d:c))),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt):Xe=30;do if((Xe|0)==30&&!(gi(l,Me)|0)){if((ha(s,l)|0)==2){Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(y(lt-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt;break}Ue=(ha(s,l)|0)==3,Ue^(n[s+28>>2]|0)==2&&(Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt)}while(0)}function wp(s,l,c){s=s|0,l=l|0,c=c|0;var f=Ze,d=0;d=n[976+(c<<2)>>2]|0,f=y(h[l+908+(d<<2)>>2]),f=y(y(h[s+908+(d<<2)>>2])-f),f=y(f-y(h[l+400+(n[1040+(c<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(c<<2)>>2]<<2)>>2]=f}function UA(s){return s=s|0,(s|1|0)==1|0}function Bw(s){s=s|0;var l=Ze;switch(n[s+56>>2]|0){case 0:case 3:{l=y(h[s+40>>2]),l>y(0)&((_t(l)|0)^1)?s=o[(n[s+976>>2]|0)+2>>0]|0?1056:992:s=1056;break}default:s=s+52|0}return s|0}function vw(s,l){return s=s|0,l=l|0,(o[s+l>>0]|0)!=0|0}function sr(s,l){return s=s|0,l=l|0,s=s+132|0,pe(l)|0&&(n[(Fn(s,5,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function vu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,pe(l)|0&&(f=Fn(s,5,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1e3+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(qr(f,c))),y(c)}function Mm(s,l,c){return s=s|0,l=l|0,c=y(c),gi(s,l)|0?c=y(Or(s,l,c)):c=y(-y(vu(s,l,c))),y(c)}function Du(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Ip(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function Bg(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function _A(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&>(s)}function HA(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;if(B=s+4|0,k=n[B>>2]|0,d=k-f|0,m=d>>2,s=l+(m<<2)|0,s>>>0>>0){f=k;do n[f>>2]=n[s>>2],s=s+4|0,f=(n[B>>2]|0)+4|0,n[B>>2]=f;while(s>>>0>>0)}m|0&&Mw(k+(0-m<<2)|0,l|0,d|0)|0}function vg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return k=l+4|0,Q=n[k>>2]|0,d=n[s>>2]|0,B=c,m=B-d|0,f=Q+(0-(m>>2)<<2)|0,n[k>>2]=f,(m|0)>0&&Dr(f|0,d|0,m|0)|0,d=s+4|0,m=l+8|0,f=(n[d>>2]|0)-B|0,(f|0)>0&&(Dr(n[m>>2]|0,c|0,f|0)|0,n[m>>2]=(n[m>>2]|0)+(f>>>2<<2)),B=n[s>>2]|0,n[s>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=s+8|0,c=l+12|0,s=n[B>>2]|0,n[B>>2]=n[c>>2],n[c>>2]=s,n[l>>2]=n[k>>2],Q|0}function Dw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[c>>2]|0,(B|0)!=(m|0)){d=s+8|0,c=((m+-4-B|0)>>>2)+1|0,s=B,f=n[d>>2]|0;do n[f>>2]=n[s>>2],f=(n[d>>2]|0)+4|0,n[d>>2]=f,s=s+4|0;while((s|0)!=(m|0));n[l>>2]=B+(c<<2)}}function Um(){dc()}function ga(){var s=0;return s=Kt(4)|0,jA(s),s|0}function jA(s){s=s|0,n[s>>2]=ys()|0}function Pc(s){s=s|0,s|0&&(Dg(s),gt(s))}function Dg(s){s=s|0,tt(n[s>>2]|0)}function _m(s,l,c){s=s|0,l=l|0,c=c|0,qa(n[s>>2]|0,l,c)}function fo(s,l){s=s|0,l=y(l),pa(n[s>>2]|0,l)}function Wv(s,l){return s=s|0,l=l|0,vw(n[s>>2]|0,l)|0}function Sw(){var s=0;return s=Kt(8)|0,Kv(s,0),s|0}function Kv(s,l){s=s|0,l=l|0,l?l=Ci(n[l>>2]|0)|0:l=co()|0,n[s>>2]=l,n[s+4>>2]=0,bi(l,s)}function AF(s){s=s|0;var l=0;return l=Kt(8)|0,Kv(l,s),l|0}function Vv(s){s=s|0,s|0&&(Su(s),gt(s))}function Su(s){s=s|0;var l=0;la(n[s>>2]|0),l=s+4|0,s=n[l>>2]|0,n[l>>2]=0,s|0&&(GA(s),gt(s))}function GA(s){s=s|0,qA(s)}function qA(s){s=s|0,s=n[s>>2]|0,s|0&&PA(s|0)}function Pw(s){return s=s|0,jo(s)|0}function Hm(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(GA(l),gt(l)),_s(n[s>>2]|0)}function fF(s,l){s=s|0,l=l|0,$r(n[s>>2]|0,n[l>>2]|0)}function pF(s,l){s=s|0,l=l|0,ca(n[s>>2]|0,l)}function Jv(s,l,c){s=s|0,l=l|0,c=+c,yu(n[s>>2]|0,l,y(c))}function zv(s,l,c){s=s|0,l=l|0,c=+c,Es(n[s>>2]|0,l,y(c))}function bw(s,l){s=s|0,l=l|0,gu(n[s>>2]|0,l)}function Pu(s,l){s=s|0,l=l|0,du(n[s>>2]|0,l)}function hF(s,l){s=s|0,l=l|0,FA(n[s>>2]|0,l)}function gF(s,l){s=s|0,l=l|0,kA(n[s>>2]|0,l)}function Bp(s,l){s=s|0,l=l|0,yc(n[s>>2]|0,l)}function dF(s,l){s=s|0,l=l|0,Ap(n[s>>2]|0,l)}function Xv(s,l,c){s=s|0,l=l|0,c=+c,Cc(n[s>>2]|0,l,y(c))}function YA(s,l,c){s=s|0,l=l|0,c=+c,q(n[s>>2]|0,l,y(c))}function mF(s,l){s=s|0,l=l|0,wl(n[s>>2]|0,l)}function yF(s,l){s=s|0,l=l|0,ag(n[s>>2]|0,l)}function Zv(s,l){s=s|0,l=l|0,fp(n[s>>2]|0,l)}function xw(s,l){s=s|0,l=+l,RA(n[s>>2]|0,y(l))}function kw(s,l){s=s|0,l=+l,Ha(n[s>>2]|0,y(l))}function EF(s,l){s=s|0,l=+l,qi(n[s>>2]|0,y(l))}function CF(s,l){s=s|0,l=+l,Hs(n[s>>2]|0,y(l))}function Dl(s,l){s=s|0,l=+l,mu(n[s>>2]|0,y(l))}function Qw(s,l){s=s|0,l=+l,yw(n[s>>2]|0,y(l))}function wF(s,l){s=s|0,l=+l,TA(n[s>>2]|0,y(l))}function WA(s){s=s|0,pp(n[s>>2]|0)}function jm(s,l){s=s|0,l=+l,Cs(n[s>>2]|0,y(l))}function bu(s,l){s=s|0,l=+l,ug(n[s>>2]|0,y(l))}function Fw(s){s=s|0,Ag(n[s>>2]|0)}function Rw(s,l){s=s|0,l=+l,hp(n[s>>2]|0,y(l))}function IF(s,l){s=s|0,l=+l,Ic(n[s>>2]|0,y(l))}function $v(s,l){s=s|0,l=+l,bm(n[s>>2]|0,y(l))}function KA(s,l){s=s|0,l=+l,pg(n[s>>2]|0,y(l))}function eD(s,l){s=s|0,l=+l,Cu(n[s>>2]|0,y(l))}function Gm(s,l){s=s|0,l=+l,xm(n[s>>2]|0,y(l))}function tD(s,l){s=s|0,l=+l,wu(n[s>>2]|0,y(l))}function rD(s,l){s=s|0,l=+l,Ew(n[s>>2]|0,y(l))}function qm(s,l){s=s|0,l=+l,Aa(n[s>>2]|0,y(l))}function nD(s,l,c){s=s|0,l=l|0,c=+c,Eu(n[s>>2]|0,l,y(c))}function BF(s,l,c){s=s|0,l=l|0,c=+c,xi(n[s>>2]|0,l,y(c))}function S(s,l,c){s=s|0,l=l|0,c=+c,wc(n[s>>2]|0,l,y(c))}function D(s){return s=s|0,og(n[s>>2]|0)|0}function T(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ec(d,n[l>>2]|0,c),j(s,d),C=f}function j(s,l){s=s|0,l=l|0,Y(s,n[l+4>>2]|0,+y(h[l>>2]))}function Y(s,l,c){s=s|0,l=l|0,c=+c,n[s>>2]=l,E[s+8>>3]=c}function Ae(s){return s=s|0,sg(n[s>>2]|0)|0}function De(s){return s=s|0,uo(n[s>>2]|0)|0}function vt(s){return s=s|0,mc(n[s>>2]|0)|0}function wt(s){return s=s|0,QA(n[s>>2]|0)|0}function xt(s){return s=s|0,Pm(n[s>>2]|0)|0}function _r(s){return s=s|0,ig(n[s>>2]|0)|0}function is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Dt(d,n[l>>2]|0,c),j(s,d),C=f}function di(s){return s=s|0,$n(n[s>>2]|0)|0}function po(s){return s=s|0,lg(n[s>>2]|0)|0}function VA(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,ua(f,n[l>>2]|0),j(s,f),C=c}function Yo(s){return s=s|0,+ +y(Gi(n[s>>2]|0))}function rt(s){return s=s|0,+ +y(es(n[s>>2]|0))}function Ve(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Br(f,n[l>>2]|0),j(s,f),C=c}function ft(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,fg(f,n[l>>2]|0),j(s,f),C=c}function Wt(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Ct(f,n[l>>2]|0),j(s,f),C=c}function vr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,hg(f,n[l>>2]|0),j(s,f),C=c}function Pn(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,gg(f,n[l>>2]|0),j(s,f),C=c}function Fr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,km(f,n[l>>2]|0),j(s,f),C=c}function bn(s){return s=s|0,+ +y(Bc(n[s>>2]|0))}function ai(s,l){return s=s|0,l=l|0,+ +y(cg(n[s>>2]|0,l))}function tn(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,ct(d,n[l>>2]|0,c),j(s,d),C=f}function ho(s,l,c){s=s|0,l=l|0,c=c|0,nr(n[s>>2]|0,n[l>>2]|0,c)}function vF(s,l){s=s|0,l=l|0,ms(n[s>>2]|0,n[l>>2]|0)}function eve(s){return s=s|0,wi(n[s>>2]|0)|0}function tve(s){return s=s|0,s=ht(n[s>>2]|0)|0,s?s=Pw(s)|0:s=0,s|0}function rve(s,l){return s=s|0,l=l|0,s=gs(n[s>>2]|0,l)|0,s?s=Pw(s)|0:s=0,s|0}function nve(s,l){s=s|0,l=l|0;var c=0,f=0;f=Kt(4)|0,zq(f,l),c=s+4|0,l=n[c>>2]|0,n[c>>2]=f,l|0&&(GA(l),gt(l)),It(n[s>>2]|0,1)}function zq(s,l){s=s|0,l=l|0,gve(s,l)}function ive(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,sve(k,jo(l)|0,+c,f,+d,m),h[s>>2]=y(+E[k>>3]),h[s+4>>2]=y(+E[k+8>>3]),C=B}function sve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0,k=0,Q=0,M=0,O=0;B=C,C=C+32|0,O=B+8|0,M=B+20|0,Q=B,k=B+16|0,E[O>>3]=c,n[M>>2]=f,E[Q>>3]=d,n[k>>2]=m,ove(s,n[l+4>>2]|0,O,M,Q,k),C=B}function ove(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,Ka(k),l=da(l)|0,ave(s,l,+E[c>>3],n[f>>2]|0,+E[d>>3],n[m>>2]|0),Va(k),C=B}function da(s){return s=s|0,n[s>>2]|0}function ave(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0;B=Sl(lve()|0)|0,c=+JA(c),f=DF(f)|0,d=+JA(d),cve(s,hi(0,B|0,l|0,+c,f|0,+d,DF(m)|0)|0)}function lve(){var s=0;return o[7608]|0||(pve(9120),s=7608,n[s>>2]=1,n[s+4>>2]=0),9120}function Sl(s){return s=s|0,n[s+8>>2]|0}function JA(s){return s=+s,+ +SF(s)}function DF(s){return s=s|0,Zq(s)|0}function cve(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=l,f&1?(uve(c,0),ii(f|0,c|0)|0,Ave(s,c),fve(c)):(n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]),C=d}function uve(s,l){s=s|0,l=l|0,Xq(s,l),n[s+8>>2]=0,o[s+24>>0]=0}function Ave(s,l){s=s|0,l=l|0,l=l+8|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]}function fve(s){s=s|0,o[s+24>>0]=0}function Xq(s,l){s=s|0,l=l|0,n[s>>2]=l}function Zq(s){return s=s|0,s|0}function SF(s){return s=+s,+s}function pve(s){s=s|0,Pl(s,hve()|0,4)}function hve(){return 1064}function Pl(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=up(l|0,c+1|0)|0}function gve(s,l){s=s|0,l=l|0,l=n[l>>2]|0,n[s>>2]=l,yl(l|0)}function dve(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(GA(l),gt(l)),It(n[s>>2]|0,0)}function mve(s){s=s|0,Tt(n[s>>2]|0)}function yve(s){return s=s|0,er(n[s>>2]|0)|0}function Eve(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,vc(n[s>>2]|0,y(l),y(c),f)}function Cve(s){return s=s|0,+ +y(Il(n[s>>2]|0))}function wve(s){return s=s|0,+ +y(dg(n[s>>2]|0))}function Ive(s){return s=s|0,+ +y(Iu(n[s>>2]|0))}function Bve(s){return s=s|0,+ +y(NA(n[s>>2]|0))}function vve(s){return s=s|0,+ +y(gp(n[s>>2]|0))}function Dve(s){return s=s|0,+ +y(ja(n[s>>2]|0))}function Sve(s,l){s=s|0,l=l|0,E[s>>3]=+y(Il(n[l>>2]|0)),E[s+8>>3]=+y(dg(n[l>>2]|0)),E[s+16>>3]=+y(Iu(n[l>>2]|0)),E[s+24>>3]=+y(NA(n[l>>2]|0)),E[s+32>>3]=+y(gp(n[l>>2]|0)),E[s+40>>3]=+y(ja(n[l>>2]|0))}function Pve(s,l){return s=s|0,l=l|0,+ +y(mg(n[s>>2]|0,l))}function bve(s,l){return s=s|0,l=l|0,+ +y(dp(n[s>>2]|0,l))}function xve(s,l){return s=s|0,l=l|0,+ +y(Go(n[s>>2]|0,l))}function kve(){return Sn()|0}function Qve(){Fve(),Rve(),Tve(),Nve(),Lve(),Ove()}function Fve(){LNe(11713,4938,1)}function Rve(){tNe(10448)}function Tve(){LTe(10408)}function Nve(){sTe(10324)}function Lve(){pFe(10096)}function Ove(){Mve(9132)}function Mve(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,Ge=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0,go=0,mo=0,yo=0,ya=0,Fp=0,Rp=0,bl=0,Tp=0,Fu=0,Ru=0,Np=0,Lp=0,Op=0,Xr=0,xl=0,Mp=0,xc=0,Up=0,_p=0,Tu=0,Nu=0,kc=0,Gs=0,za=0,Wo=0,kl=0,nf=0,sf=0,Lu=0,of=0,af=0,qs=0,vs=0,Ql=0,Rn=0,lf=0,Eo=0,Qc=0,Co=0,Fc=0,cf=0,uf=0,Rc=0,Ys=0,Fl=0,Af=0,ff=0,pf=0,xr=0,Jn=0,Ds=0,wo=0,Ws=0,Rr=0,ur=0,Rl=0;l=C,C=C+672|0,c=l+656|0,Rl=l+648|0,ur=l+640|0,Rr=l+632|0,Ws=l+624|0,wo=l+616|0,Ds=l+608|0,Jn=l+600|0,xr=l+592|0,pf=l+584|0,ff=l+576|0,Af=l+568|0,Fl=l+560|0,Ys=l+552|0,Rc=l+544|0,uf=l+536|0,cf=l+528|0,Fc=l+520|0,Co=l+512|0,Qc=l+504|0,Eo=l+496|0,lf=l+488|0,Rn=l+480|0,Ql=l+472|0,vs=l+464|0,qs=l+456|0,af=l+448|0,of=l+440|0,Lu=l+432|0,sf=l+424|0,nf=l+416|0,kl=l+408|0,Wo=l+400|0,za=l+392|0,Gs=l+384|0,kc=l+376|0,Nu=l+368|0,Tu=l+360|0,_p=l+352|0,Up=l+344|0,xc=l+336|0,Mp=l+328|0,xl=l+320|0,Xr=l+312|0,Op=l+304|0,Lp=l+296|0,Np=l+288|0,Ru=l+280|0,Fu=l+272|0,Tp=l+264|0,bl=l+256|0,Rp=l+248|0,Fp=l+240|0,ya=l+232|0,yo=l+224|0,mo=l+216|0,go=l+208|0,xn=l+200|0,ir=l+192|0,Nr=l+184|0,Sr=l+176|0,Xt=l+168|0,or=l+160|0,Mr=l+152|0,Lt=l+144|0,Ge=l+136|0,Ue=l+128|0,lt=l+120|0,Xe=l+112|0,et=l+104|0,Qe=l+96|0,Me=l+88|0,qe=l+80|0,se=l+72|0,G=l+64|0,O=l+56|0,M=l+48|0,Q=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,f=l,Uve(s,3646),_ve(s,3651,2)|0,Hve(s,3665,2)|0,jve(s,3682,18)|0,n[Rl>>2]=19,n[Rl+4>>2]=0,n[c>>2]=n[Rl>>2],n[c+4>>2]=n[Rl+4>>2],Tw(s,3690,c)|0,n[ur>>2]=1,n[ur+4>>2]=0,n[c>>2]=n[ur>>2],n[c+4>>2]=n[ur+4>>2],Gve(s,3696,c)|0,n[Rr>>2]=2,n[Rr+4>>2]=0,n[c>>2]=n[Rr>>2],n[c+4>>2]=n[Rr+4>>2],xu(s,3706,c)|0,n[Ws>>2]=1,n[Ws+4>>2]=0,n[c>>2]=n[Ws>>2],n[c+4>>2]=n[Ws+4>>2],Sg(s,3722,c)|0,n[wo>>2]=2,n[wo+4>>2]=0,n[c>>2]=n[wo>>2],n[c+4>>2]=n[wo+4>>2],Sg(s,3734,c)|0,n[Ds>>2]=3,n[Ds+4>>2]=0,n[c>>2]=n[Ds>>2],n[c+4>>2]=n[Ds+4>>2],xu(s,3753,c)|0,n[Jn>>2]=4,n[Jn+4>>2]=0,n[c>>2]=n[Jn>>2],n[c+4>>2]=n[Jn+4>>2],xu(s,3769,c)|0,n[xr>>2]=5,n[xr+4>>2]=0,n[c>>2]=n[xr>>2],n[c+4>>2]=n[xr+4>>2],xu(s,3783,c)|0,n[pf>>2]=6,n[pf+4>>2]=0,n[c>>2]=n[pf>>2],n[c+4>>2]=n[pf+4>>2],xu(s,3796,c)|0,n[ff>>2]=7,n[ff+4>>2]=0,n[c>>2]=n[ff>>2],n[c+4>>2]=n[ff+4>>2],xu(s,3813,c)|0,n[Af>>2]=8,n[Af+4>>2]=0,n[c>>2]=n[Af>>2],n[c+4>>2]=n[Af+4>>2],xu(s,3825,c)|0,n[Fl>>2]=3,n[Fl+4>>2]=0,n[c>>2]=n[Fl>>2],n[c+4>>2]=n[Fl+4>>2],Sg(s,3843,c)|0,n[Ys>>2]=4,n[Ys+4>>2]=0,n[c>>2]=n[Ys>>2],n[c+4>>2]=n[Ys+4>>2],Sg(s,3853,c)|0,n[Rc>>2]=9,n[Rc+4>>2]=0,n[c>>2]=n[Rc>>2],n[c+4>>2]=n[Rc+4>>2],xu(s,3870,c)|0,n[uf>>2]=10,n[uf+4>>2]=0,n[c>>2]=n[uf>>2],n[c+4>>2]=n[uf+4>>2],xu(s,3884,c)|0,n[cf>>2]=11,n[cf+4>>2]=0,n[c>>2]=n[cf>>2],n[c+4>>2]=n[cf+4>>2],xu(s,3896,c)|0,n[Fc>>2]=1,n[Fc+4>>2]=0,n[c>>2]=n[Fc>>2],n[c+4>>2]=n[Fc+4>>2],Is(s,3907,c)|0,n[Co>>2]=2,n[Co+4>>2]=0,n[c>>2]=n[Co>>2],n[c+4>>2]=n[Co+4>>2],Is(s,3915,c)|0,n[Qc>>2]=3,n[Qc+4>>2]=0,n[c>>2]=n[Qc>>2],n[c+4>>2]=n[Qc+4>>2],Is(s,3928,c)|0,n[Eo>>2]=4,n[Eo+4>>2]=0,n[c>>2]=n[Eo>>2],n[c+4>>2]=n[Eo+4>>2],Is(s,3948,c)|0,n[lf>>2]=5,n[lf+4>>2]=0,n[c>>2]=n[lf>>2],n[c+4>>2]=n[lf+4>>2],Is(s,3960,c)|0,n[Rn>>2]=6,n[Rn+4>>2]=0,n[c>>2]=n[Rn>>2],n[c+4>>2]=n[Rn+4>>2],Is(s,3974,c)|0,n[Ql>>2]=7,n[Ql+4>>2]=0,n[c>>2]=n[Ql>>2],n[c+4>>2]=n[Ql+4>>2],Is(s,3983,c)|0,n[vs>>2]=20,n[vs+4>>2]=0,n[c>>2]=n[vs>>2],n[c+4>>2]=n[vs+4>>2],Tw(s,3999,c)|0,n[qs>>2]=8,n[qs+4>>2]=0,n[c>>2]=n[qs>>2],n[c+4>>2]=n[qs+4>>2],Is(s,4012,c)|0,n[af>>2]=9,n[af+4>>2]=0,n[c>>2]=n[af>>2],n[c+4>>2]=n[af+4>>2],Is(s,4022,c)|0,n[of>>2]=21,n[of+4>>2]=0,n[c>>2]=n[of>>2],n[c+4>>2]=n[of+4>>2],Tw(s,4039,c)|0,n[Lu>>2]=10,n[Lu+4>>2]=0,n[c>>2]=n[Lu>>2],n[c+4>>2]=n[Lu+4>>2],Is(s,4053,c)|0,n[sf>>2]=11,n[sf+4>>2]=0,n[c>>2]=n[sf>>2],n[c+4>>2]=n[sf+4>>2],Is(s,4065,c)|0,n[nf>>2]=12,n[nf+4>>2]=0,n[c>>2]=n[nf>>2],n[c+4>>2]=n[nf+4>>2],Is(s,4084,c)|0,n[kl>>2]=13,n[kl+4>>2]=0,n[c>>2]=n[kl>>2],n[c+4>>2]=n[kl+4>>2],Is(s,4097,c)|0,n[Wo>>2]=14,n[Wo+4>>2]=0,n[c>>2]=n[Wo>>2],n[c+4>>2]=n[Wo+4>>2],Is(s,4117,c)|0,n[za>>2]=15,n[za+4>>2]=0,n[c>>2]=n[za>>2],n[c+4>>2]=n[za+4>>2],Is(s,4129,c)|0,n[Gs>>2]=16,n[Gs+4>>2]=0,n[c>>2]=n[Gs>>2],n[c+4>>2]=n[Gs+4>>2],Is(s,4148,c)|0,n[kc>>2]=17,n[kc+4>>2]=0,n[c>>2]=n[kc>>2],n[c+4>>2]=n[kc+4>>2],Is(s,4161,c)|0,n[Nu>>2]=18,n[Nu+4>>2]=0,n[c>>2]=n[Nu>>2],n[c+4>>2]=n[Nu+4>>2],Is(s,4181,c)|0,n[Tu>>2]=5,n[Tu+4>>2]=0,n[c>>2]=n[Tu>>2],n[c+4>>2]=n[Tu+4>>2],Sg(s,4196,c)|0,n[_p>>2]=6,n[_p+4>>2]=0,n[c>>2]=n[_p>>2],n[c+4>>2]=n[_p+4>>2],Sg(s,4206,c)|0,n[Up>>2]=7,n[Up+4>>2]=0,n[c>>2]=n[Up>>2],n[c+4>>2]=n[Up+4>>2],Sg(s,4217,c)|0,n[xc>>2]=3,n[xc+4>>2]=0,n[c>>2]=n[xc>>2],n[c+4>>2]=n[xc+4>>2],zA(s,4235,c)|0,n[Mp>>2]=1,n[Mp+4>>2]=0,n[c>>2]=n[Mp>>2],n[c+4>>2]=n[Mp+4>>2],PF(s,4251,c)|0,n[xl>>2]=4,n[xl+4>>2]=0,n[c>>2]=n[xl>>2],n[c+4>>2]=n[xl+4>>2],zA(s,4263,c)|0,n[Xr>>2]=5,n[Xr+4>>2]=0,n[c>>2]=n[Xr>>2],n[c+4>>2]=n[Xr+4>>2],zA(s,4279,c)|0,n[Op>>2]=6,n[Op+4>>2]=0,n[c>>2]=n[Op>>2],n[c+4>>2]=n[Op+4>>2],zA(s,4293,c)|0,n[Lp>>2]=7,n[Lp+4>>2]=0,n[c>>2]=n[Lp>>2],n[c+4>>2]=n[Lp+4>>2],zA(s,4306,c)|0,n[Np>>2]=8,n[Np+4>>2]=0,n[c>>2]=n[Np>>2],n[c+4>>2]=n[Np+4>>2],zA(s,4323,c)|0,n[Ru>>2]=9,n[Ru+4>>2]=0,n[c>>2]=n[Ru>>2],n[c+4>>2]=n[Ru+4>>2],zA(s,4335,c)|0,n[Fu>>2]=2,n[Fu+4>>2]=0,n[c>>2]=n[Fu>>2],n[c+4>>2]=n[Fu+4>>2],PF(s,4353,c)|0,n[Tp>>2]=12,n[Tp+4>>2]=0,n[c>>2]=n[Tp>>2],n[c+4>>2]=n[Tp+4>>2],Pg(s,4363,c)|0,n[bl>>2]=1,n[bl+4>>2]=0,n[c>>2]=n[bl>>2],n[c+4>>2]=n[bl+4>>2],XA(s,4376,c)|0,n[Rp>>2]=2,n[Rp+4>>2]=0,n[c>>2]=n[Rp>>2],n[c+4>>2]=n[Rp+4>>2],XA(s,4388,c)|0,n[Fp>>2]=13,n[Fp+4>>2]=0,n[c>>2]=n[Fp>>2],n[c+4>>2]=n[Fp+4>>2],Pg(s,4402,c)|0,n[ya>>2]=14,n[ya+4>>2]=0,n[c>>2]=n[ya>>2],n[c+4>>2]=n[ya+4>>2],Pg(s,4411,c)|0,n[yo>>2]=15,n[yo+4>>2]=0,n[c>>2]=n[yo>>2],n[c+4>>2]=n[yo+4>>2],Pg(s,4421,c)|0,n[mo>>2]=16,n[mo+4>>2]=0,n[c>>2]=n[mo>>2],n[c+4>>2]=n[mo+4>>2],Pg(s,4433,c)|0,n[go>>2]=17,n[go+4>>2]=0,n[c>>2]=n[go>>2],n[c+4>>2]=n[go+4>>2],Pg(s,4446,c)|0,n[xn>>2]=18,n[xn+4>>2]=0,n[c>>2]=n[xn>>2],n[c+4>>2]=n[xn+4>>2],Pg(s,4458,c)|0,n[ir>>2]=3,n[ir+4>>2]=0,n[c>>2]=n[ir>>2],n[c+4>>2]=n[ir+4>>2],XA(s,4471,c)|0,n[Nr>>2]=1,n[Nr+4>>2]=0,n[c>>2]=n[Nr>>2],n[c+4>>2]=n[Nr+4>>2],iD(s,4486,c)|0,n[Sr>>2]=10,n[Sr+4>>2]=0,n[c>>2]=n[Sr>>2],n[c+4>>2]=n[Sr+4>>2],zA(s,4496,c)|0,n[Xt>>2]=11,n[Xt+4>>2]=0,n[c>>2]=n[Xt>>2],n[c+4>>2]=n[Xt+4>>2],zA(s,4508,c)|0,n[or>>2]=3,n[or+4>>2]=0,n[c>>2]=n[or>>2],n[c+4>>2]=n[or+4>>2],PF(s,4519,c)|0,n[Mr>>2]=4,n[Mr+4>>2]=0,n[c>>2]=n[Mr>>2],n[c+4>>2]=n[Mr+4>>2],qve(s,4530,c)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[c>>2]=n[Lt>>2],n[c+4>>2]=n[Lt+4>>2],Yve(s,4542,c)|0,n[Ge>>2]=12,n[Ge+4>>2]=0,n[c>>2]=n[Ge>>2],n[c+4>>2]=n[Ge+4>>2],Wve(s,4554,c)|0,n[Ue>>2]=13,n[Ue+4>>2]=0,n[c>>2]=n[Ue>>2],n[c+4>>2]=n[Ue+4>>2],Kve(s,4568,c)|0,n[lt>>2]=2,n[lt+4>>2]=0,n[c>>2]=n[lt>>2],n[c+4>>2]=n[lt+4>>2],Vve(s,4578,c)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[c>>2]=n[Xe>>2],n[c+4>>2]=n[Xe+4>>2],Jve(s,4587,c)|0,n[et>>2]=22,n[et+4>>2]=0,n[c>>2]=n[et>>2],n[c+4>>2]=n[et+4>>2],Tw(s,4602,c)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[c>>2]=n[Qe>>2],n[c+4>>2]=n[Qe+4>>2],Tw(s,4619,c)|0,n[Me>>2]=14,n[Me+4>>2]=0,n[c>>2]=n[Me>>2],n[c+4>>2]=n[Me+4>>2],zve(s,4629,c)|0,n[qe>>2]=1,n[qe+4>>2]=0,n[c>>2]=n[qe>>2],n[c+4>>2]=n[qe+4>>2],Xve(s,4637,c)|0,n[se>>2]=4,n[se+4>>2]=0,n[c>>2]=n[se>>2],n[c+4>>2]=n[se+4>>2],XA(s,4653,c)|0,n[G>>2]=5,n[G+4>>2]=0,n[c>>2]=n[G>>2],n[c+4>>2]=n[G+4>>2],XA(s,4669,c)|0,n[O>>2]=6,n[O+4>>2]=0,n[c>>2]=n[O>>2],n[c+4>>2]=n[O+4>>2],XA(s,4686,c)|0,n[M>>2]=7,n[M+4>>2]=0,n[c>>2]=n[M>>2],n[c+4>>2]=n[M+4>>2],XA(s,4701,c)|0,n[Q>>2]=8,n[Q+4>>2]=0,n[c>>2]=n[Q>>2],n[c+4>>2]=n[Q+4>>2],XA(s,4719,c)|0,n[k>>2]=9,n[k+4>>2]=0,n[c>>2]=n[k>>2],n[c+4>>2]=n[k+4>>2],XA(s,4736,c)|0,n[B>>2]=21,n[B+4>>2]=0,n[c>>2]=n[B>>2],n[c+4>>2]=n[B+4>>2],Zve(s,4754,c)|0,n[m>>2]=2,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],iD(s,4772,c)|0,n[d>>2]=3,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],iD(s,4790,c)|0,n[f>>2]=4,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],iD(s,4808,c)|0,C=l}function Uve(s,l){s=s|0,l=l|0;var c=0;c=iFe()|0,n[s>>2]=c,sFe(c,l),xp(n[s>>2]|0)}function _ve(s,l,c){return s=s|0,l=l|0,c=c|0,qQe(s,pn(l)|0,c,0),s|0}function Hve(s,l,c){return s=s|0,l=l|0,c=c|0,bQe(s,pn(l)|0,c,0),s|0}function jve(s,l,c){return s=s|0,l=l|0,c=c|0,hQe(s,pn(l)|0,c,0),s|0}function Tw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Zke(s,l,d),C=f,s|0}function Gve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rke(s,l,d),C=f,s|0}function xu(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mke(s,l,d),C=f,s|0}function Sg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tke(s,l,d),C=f,s|0}function Is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Uxe(s,l,d),C=f,s|0}function zA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Bxe(s,l,d),C=f,s|0}function PF(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],axe(s,l,d),C=f,s|0}function Pg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rbe(s,l,d),C=f,s|0}function XA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mbe(s,l,d),C=f,s|0}function iD(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tbe(s,l,d),C=f,s|0}function qve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UPe(s,l,d),C=f,s|0}function Yve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],BPe(s,l,d),C=f,s|0}function Wve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lPe(s,l,d),C=f,s|0}function Kve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KSe(s,l,d),C=f,s|0}function Vve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kSe(s,l,d),C=f,s|0}function Jve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pSe(s,l,d),C=f,s|0}function zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XDe(s,l,d),C=f,s|0}function Xve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RDe(s,l,d),C=f,s|0}function Zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$ve(s,l,d),C=f,s|0}function $ve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],eDe(s,c,d,1),C=f}function pn(s){return s=s|0,s|0}function eDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=bF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=tDe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,rDe(m,f)|0,f),C=d}function bF(){var s=0,l=0;if(o[7616]|0||(t9(9136),tr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9136)|0)){s=9136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t9(9136)}return 9136}function tDe(s){return s=s|0,0}function rDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=bF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],e9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sDe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function hn(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0;B=C,C=C+32|0,se=B+24|0,G=B+20|0,Q=B+16|0,O=B+12|0,M=B+8|0,k=B+4|0,qe=B,n[G>>2]=l,n[Q>>2]=c,n[O>>2]=f,n[M>>2]=d,n[k>>2]=m,m=s+28|0,n[qe>>2]=n[m>>2],n[se>>2]=n[qe>>2],nDe(s+24|0,se,G,O,M,Q,k)|0,n[m>>2]=n[n[m>>2]>>2],C=B}function nDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,s=iDe(l)|0,l=Kt(24)|0,$q(l+4|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[s>>2],n[s>>2]=l,l|0}function iDe(s){return s=s|0,n[s>>2]|0}function $q(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function gr(s,l){return s=s|0,l=l|0,l|s|0}function e9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oDe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,aDe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],e9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lDe(s,k),cDe(k),C=M;return}}function oDe(s){return s=s|0,357913941}function aDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function t9(s){s=s|0,fDe(s)}function uDe(s){s=s|0,ADe(s+24|0)}function Tr(s){return s=s|0,n[s>>2]|0}function ADe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fDe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,3,l,pDe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Kr(){return 9228}function pDe(){return 1140}function hDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=gDe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=dDe(l,f)|0,C=c,l|0}function Vr(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function gDe(s){return s=s|0,(n[(bF()|0)+24>>2]|0)+(s*12|0)|0}function dDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+48|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&31](f,s),f=mDe(f)|0,C=d,f|0}function mDe(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(r9()|0)|0,f?(kF(l,f),QF(c,l),yDe(s,c),s=FF(l)|0):s=EDe(s)|0,C=d,s|0}function r9(){var s=0;return o[7632]|0||(xDe(9184),tr(25,9184,U|0)|0,s=7632,n[s>>2]=1,n[s+4>>2]=0),9184}function xF(s){return s=s|0,n[s+36>>2]|0}function kF(s,l){s=s|0,l=l|0,n[s>>2]=l,n[s+4>>2]=s,n[s+8>>2]=0}function QF(s,l){s=s|0,l=l|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=0}function yDe(s,l){s=s|0,l=l|0,BDe(l,s,s+8|0,s+16|0,s+24|0,s+32|0,s+40|0)|0}function FF(s){return s=s|0,n[(n[s+4>>2]|0)+8>>2]|0}function EDe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;Q=C,C=C+16|0,c=Q+4|0,f=Q,d=Wa(8)|0,m=d,B=Kt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[s>>2],k=k+4|0,s=s+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[f>>2]=0,n[c>>2]=n[f>>2],n9(k,B,c),n[d>>2]=k,C=Q,m|0}function n9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1092,n[c+12>>2]=l,n[s+4>>2]=c}function CDe(s){s=s|0,zm(s),gt(s)}function wDe(s){s=s|0,s=n[s+12>>2]|0,s|0&>(s)}function IDe(s){s=s|0,gt(s)}function BDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,m=vDe(n[s>>2]|0,l,c,f,d,m,B)|0,B=s+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function vDe(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0;var k=0,Q=0;return k=C,C=C+16|0,Q=k,Ka(Q),s=da(s)|0,B=DDe(s,+E[l>>3],+E[c>>3],+E[f>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Va(Q),C=k,B|0}function DDe(s,l,c,f,d,m,B){s=s|0,l=+l,c=+c,f=+f,d=+d,m=+m,B=+B;var k=0;return k=Sl(SDe()|0)|0,l=+JA(l),c=+JA(c),f=+JA(f),d=+JA(d),m=+JA(m),Ms(0,k|0,s|0,+l,+c,+f,+d,+m,+ +JA(B))|0}function SDe(){var s=0;return o[7624]|0||(PDe(9172),s=7624,n[s>>2]=1,n[s+4>>2]=0),9172}function PDe(s){s=s|0,Pl(s,bDe()|0,6)}function bDe(){return 1112}function xDe(s){s=s|0,vp(s)}function kDe(s){s=s|0,i9(s+24|0),s9(s+16|0)}function i9(s){s=s|0,FDe(s)}function s9(s){s=s|0,QDe(s)}function QDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function FDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function vp(s){s=s|0;var l=0;n[s+16>>2]=0,n[s+20>>2]=0,l=s+24|0,n[l>>2]=0,n[s+28>>2]=l,n[s+36>>2]=0,o[s+40>>0]=0,o[s+41>>0]=0}function RDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],TDe(s,c,d,0),C=f}function TDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=RF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=NDe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,LDe(m,f)|0,f),C=d}function RF(){var s=0,l=0;if(o[7640]|0||(a9(9232),tr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9232)|0)){s=9232,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a9(9232)}return 9232}function NDe(s){return s=s|0,0}function LDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=RF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ODe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ODe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=MDe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,UDe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_De(s,k),HDe(k),C=M;return}}function MDe(s){return s=s|0,357913941}function UDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _De(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function HDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function a9(s){s=s|0,qDe(s)}function jDe(s){s=s|0,GDe(s+24|0)}function GDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function qDe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,YDe()|0,3),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function YDe(){return 1144}function WDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,B=m+8|0,k=m,Q=KDe(s)|0,s=n[Q+4>>2]|0,n[k>>2]=n[Q>>2],n[k+4>>2]=s,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],VDe(l,B,c,f,d),C=m}function KDe(s){return s=s|0,(n[(RF()|0)+24>>2]|0)+(s*12|0)|0}function VDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0,M=0;M=C,C=C+16|0,B=M+2|0,k=M+1|0,Q=M,m=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(m=n[(n[s>>2]|0)+m>>2]|0),ku(B,c),c=+Qu(B,c),ku(k,f),f=+Qu(k,f),ZA(Q,d),Q=$A(Q,d)|0,I7[m&1](s,c,f,Q),C=M}function ku(s,l){s=s|0,l=+l}function Qu(s,l){return s=s|0,l=+l,+ +zDe(l)}function ZA(s,l){s=s|0,l=l|0}function $A(s,l){return s=s|0,l=l|0,JDe(l)|0}function JDe(s){return s=s|0,s|0}function zDe(s){return s=+s,+s}function XDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],ZDe(s,c,d,1),C=f}function ZDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=TF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=$De(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,eSe(m,f)|0,f),C=d}function TF(){var s=0,l=0;if(o[7648]|0||(c9(9268),tr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9268)|0)){s=9268,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c9(9268)}return 9268}function $De(s){return s=s|0,0}function eSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=TF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],l9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(tSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function l9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function tSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=rSe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,nSe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],l9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,iSe(s,k),sSe(k),C=M;return}}function rSe(s){return s=s|0,357913941}function nSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function iSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function sSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function c9(s){s=s|0,lSe(s)}function oSe(s){s=s|0,aSe(s+24|0)}function aSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function lSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,4,l,cSe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function cSe(){return 1160}function uSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=ASe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=fSe(l,f)|0,C=c,l|0}function ASe(s){return s=s|0,(n[(TF()|0)+24>>2]|0)+(s*12|0)|0}function fSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),u9(Lg[c&31](s)|0)|0}function u9(s){return s=s|0,s&1|0}function pSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],hSe(s,c,d,0),C=f}function hSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=NF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=gSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,dSe(m,f)|0,f),C=d}function NF(){var s=0,l=0;if(o[7656]|0||(f9(9304),tr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9304)|0)){s=9304,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));f9(9304)}return 9304}function gSe(s){return s=s|0,0}function dSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=NF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],A9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(mSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function A9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function mSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ySe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,ESe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],A9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,CSe(s,k),wSe(k),C=M;return}}function ySe(s){return s=s|0,357913941}function ESe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function CSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function wSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function f9(s){s=s|0,vSe(s)}function ISe(s){s=s|0,BSe(s+24|0)}function BSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function vSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,DSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function DSe(){return 1164}function SSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=PSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bSe(l,d,c),C=f}function PSe(s){return s=s|0,(n[(NF()|0)+24>>2]|0)+(s*12|0)|0}function bSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Dp(d,c),c=Sp(d,c)|0,rf[f&31](s,c),Pp(d),C=m}function Dp(s,l){s=s|0,l=l|0,xSe(s,l)}function Sp(s,l){return s=s|0,l=l|0,s|0}function Pp(s){s=s|0,GA(s)}function xSe(s,l){s=s|0,l=l|0,LF(s,l)}function LF(s,l){s=s|0,l=l|0,n[s>>2]=l}function kSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],QSe(s,c,d,0),C=f}function QSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=OF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=FSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,RSe(m,f)|0,f),C=d}function OF(){var s=0,l=0;if(o[7664]|0||(h9(9340),tr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9340)|0)){s=9340,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));h9(9340)}return 9340}function FSe(s){return s=s|0,0}function RSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=OF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],p9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(TSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function p9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function TSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=NSe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,LSe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],p9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,OSe(s,k),MSe(k),C=M;return}}function NSe(s){return s=s|0,357913941}function LSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function OSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function MSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function h9(s){s=s|0,HSe(s)}function USe(s){s=s|0,_Se(s+24|0)}function _Se(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function HSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,4,l,jSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jSe(){return 1180}function GSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=qSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=YSe(l,d,c)|0,C=f,c|0}function qSe(s){return s=s|0,(n[(OF()|0)+24>>2]|0)+(s*12|0)|0}function YSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),bg(d,c),d=xg(d,c)|0,d=sD(RR[f&15](s,d)|0)|0,C=m,d|0}function bg(s,l){s=s|0,l=l|0}function xg(s,l){return s=s|0,l=l|0,WSe(l)|0}function sD(s){return s=s|0,s|0}function WSe(s){return s=s|0,s|0}function KSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],VSe(s,c,d,0),C=f}function VSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=MF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=JSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,zSe(m,f)|0,f),C=d}function MF(){var s=0,l=0;if(o[7672]|0||(d9(9376),tr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9376)|0)){s=9376,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));d9(9376)}return 9376}function JSe(s){return s=s|0,0}function zSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=MF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],g9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(XSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function g9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function XSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ZSe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,$Se(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],g9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,ePe(s,k),tPe(k),C=M;return}}function ZSe(s){return s=s|0,357913941}function $Se(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function ePe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function tPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function d9(s){s=s|0,iPe(s)}function rPe(s){s=s|0,nPe(s+24|0)}function nPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function iPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,m9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function m9(){return 1196}function sPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=oPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=aPe(l,f)|0,C=c,l|0}function oPe(s){return s=s|0,(n[(MF()|0)+24>>2]|0)+(s*12|0)|0}function aPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),sD(Lg[c&31](s)|0)|0}function lPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],cPe(s,c,d,1),C=f}function cPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=UF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=uPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,APe(m,f)|0,f),C=d}function UF(){var s=0,l=0;if(o[7680]|0||(E9(9412),tr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9412)|0)){s=9412,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));E9(9412)}return 9412}function uPe(s){return s=s|0,0}function APe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=UF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],y9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(fPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function y9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function fPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=pPe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,hPe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],y9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,gPe(s,k),dPe(k),C=M;return}}function pPe(s){return s=s|0,357913941}function hPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function gPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function dPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function E9(s){s=s|0,EPe(s)}function mPe(s){s=s|0,yPe(s+24|0)}function yPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function EPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,C9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function C9(){return 1200}function CPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=wPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=IPe(l,f)|0,C=c,l|0}function wPe(s){return s=s|0,(n[(UF()|0)+24>>2]|0)+(s*12|0)|0}function IPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),oD(Lg[c&31](s)|0)|0}function oD(s){return s=s|0,s|0}function BPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],vPe(s,c,d,0),C=f}function vPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=_F()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=DPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,SPe(m,f)|0,f),C=d}function _F(){var s=0,l=0;if(o[7688]|0||(I9(9448),tr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9448)|0)){s=9448,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));I9(9448)}return 9448}function DPe(s){return s=s|0,0}function SPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=_F()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],w9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(PPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function w9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function PPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=bPe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,xPe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],w9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,kPe(s,k),QPe(k),C=M;return}}function bPe(s){return s=s|0,357913941}function xPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function kPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function QPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function I9(s){s=s|0,TPe(s)}function FPe(s){s=s|0,RPe(s+24|0)}function RPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function TPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,B9()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function B9(){return 1204}function NPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=LPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],OPe(l,d,c),C=f}function LPe(s){return s=s|0,(n[(_F()|0)+24>>2]|0)+(s*12|0)|0}function OPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),HF(d,c),d=jF(d,c)|0,rf[f&31](s,d),C=m}function HF(s,l){s=s|0,l=l|0}function jF(s,l){return s=s|0,l=l|0,MPe(l)|0}function MPe(s){return s=s|0,s|0}function UPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],_Pe(s,c,d,0),C=f}function _Pe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=GF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=HPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,jPe(m,f)|0,f),C=d}function GF(){var s=0,l=0;if(o[7696]|0||(D9(9484),tr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9484)|0)){s=9484,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));D9(9484)}return 9484}function HPe(s){return s=s|0,0}function jPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=GF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],v9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(GPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function v9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function GPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=qPe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,YPe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],v9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,WPe(s,k),KPe(k),C=M;return}}function qPe(s){return s=s|0,357913941}function YPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function WPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function KPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function D9(s){s=s|0,zPe(s)}function VPe(s){s=s|0,JPe(s+24|0)}function JPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function zPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,XPe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function XPe(){return 1212}function ZPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=$Pe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],ebe(l,m,c,f),C=d}function $Pe(s){return s=s|0,(n[(GF()|0)+24>>2]|0)+(s*12|0)|0}function ebe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),HF(m,c),m=jF(m,c)|0,bg(B,f),B=xg(B,f)|0,Hw[d&15](s,m,B),C=k}function tbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],rbe(s,c,d,1),C=f}function rbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=qF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nbe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,ibe(m,f)|0,f),C=d}function qF(){var s=0,l=0;if(o[7704]|0||(P9(9520),tr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9520)|0)){s=9520,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));P9(9520)}return 9520}function nbe(s){return s=s|0,0}function ibe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=qF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],S9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sbe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function S9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=obe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,abe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],S9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lbe(s,k),cbe(k),C=M;return}}function obe(s){return s=s|0,357913941}function abe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function P9(s){s=s|0,fbe(s)}function ube(s){s=s|0,Abe(s+24|0)}function Abe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,pbe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pbe(){return 1224}function hbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;return d=C,C=C+16|0,m=d+8|0,B=d,k=gbe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],f=+dbe(l,m,c),C=d,+f}function gbe(s){return s=s|0,(n[(qF()|0)+24>>2]|0)+(s*12|0)|0}function dbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,B=+SF(+v7[f&7](s,d)),C=m,+B}function mbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],ybe(s,c,d,1),C=f}function ybe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=YF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Ebe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Cbe(m,f)|0,f),C=d}function YF(){var s=0,l=0;if(o[7712]|0||(x9(9556),tr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9556)|0)){s=9556,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));x9(9556)}return 9556}function Ebe(s){return s=s|0,0}function Cbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=YF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],b9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(wbe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function b9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function wbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ibe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,Bbe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],b9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,vbe(s,k),Dbe(k),C=M;return}}function Ibe(s){return s=s|0,357913941}function Bbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function vbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Dbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function x9(s){s=s|0,bbe(s)}function Sbe(s){s=s|0,Pbe(s+24|0)}function Pbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function bbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,xbe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xbe(){return 1232}function kbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=Qbe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=+Fbe(l,d),C=f,+c}function Qbe(s){return s=s|0,(n[(YF()|0)+24>>2]|0)+(s*12|0)|0}function Fbe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),+ +SF(+B7[c&15](s))}function Rbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],Tbe(s,c,d,1),C=f}function Tbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=WF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nbe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Lbe(m,f)|0,f),C=d}function WF(){var s=0,l=0;if(o[7720]|0||(Q9(9592),tr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9592)|0)){s=9592,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Q9(9592)}return 9592}function Nbe(s){return s=s|0,0}function Lbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=WF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],k9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Obe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function k9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Obe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Mbe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,Ube(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],k9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_be(s,k),Hbe(k),C=M;return}}function Mbe(s){return s=s|0,357913941}function Ube(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _be(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Hbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function Q9(s){s=s|0,qbe(s)}function jbe(s){s=s|0,Gbe(s+24|0)}function Gbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function qbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,7,l,Ybe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Ybe(){return 1276}function Wbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Kbe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Vbe(l,f)|0,C=c,l|0}function Kbe(s){return s=s|0,(n[(WF()|0)+24>>2]|0)+(s*12|0)|0}function Vbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+16|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&31](f,s),f=F9(f)|0,C=d,f|0}function F9(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(R9()|0)|0,f?(kF(l,f),QF(c,l),Jbe(s,c),s=FF(l)|0):s=zbe(s)|0,C=d,s|0}function R9(){var s=0;return o[7736]|0||(oxe(9640),tr(25,9640,U|0)|0,s=7736,n[s>>2]=1,n[s+4>>2]=0),9640}function Jbe(s,l){s=s|0,l=l|0,exe(l,s,s+8|0)|0}function zbe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(16)|0,n[k>>2]=n[s>>2],n[k+4>>2]=n[s+4>>2],n[k+8>>2]=n[s+8>>2],n[k+12>>2]=n[s+12>>2],m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],KF(s,m,d),n[f>>2]=s,C=c,l|0}function KF(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1244,n[c+12>>2]=l,n[s+4>>2]=c}function Xbe(s){s=s|0,zm(s),gt(s)}function Zbe(s){s=s|0,s=n[s+12>>2]|0,s|0&>(s)}function $be(s){s=s|0,gt(s)}function exe(s,l,c){return s=s|0,l=l|0,c=c|0,l=txe(n[s>>2]|0,l,c)|0,c=s+4|0,n[(n[c>>2]|0)+8>>2]=l,n[(n[c>>2]|0)+8>>2]|0}function txe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return f=C,C=C+16|0,d=f,Ka(d),s=da(s)|0,c=rxe(s,n[l>>2]|0,+E[c>>3])|0,Va(d),C=f,c|0}function rxe(s,l,c){s=s|0,l=l|0,c=+c;var f=0;return f=Sl(nxe()|0)|0,l=DF(l)|0,ml(0,f|0,s|0,l|0,+ +JA(c))|0}function nxe(){var s=0;return o[7728]|0||(ixe(9628),s=7728,n[s>>2]=1,n[s+4>>2]=0),9628}function ixe(s){s=s|0,Pl(s,sxe()|0,2)}function sxe(){return 1264}function oxe(s){s=s|0,vp(s)}function axe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],lxe(s,c,d,1),C=f}function lxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=VF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=cxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,uxe(m,f)|0,f),C=d}function VF(){var s=0,l=0;if(o[7744]|0||(N9(9684),tr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9684)|0)){s=9684,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));N9(9684)}return 9684}function cxe(s){return s=s|0,0}function uxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=VF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],T9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Axe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function T9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Axe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=fxe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,pxe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],T9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,hxe(s,k),gxe(k),C=M;return}}function fxe(s){return s=s|0,357913941}function pxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function hxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function gxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function N9(s){s=s|0,yxe(s)}function dxe(s){s=s|0,mxe(s+24|0)}function mxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function yxe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,Exe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Exe(){return 1280}function Cxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=wxe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=Ixe(l,d,c)|0,C=f,c|0}function wxe(s){return s=s|0,(n[(VF()|0)+24>>2]|0)+(s*12|0)|0}function Ixe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return B=C,C=C+32|0,d=B,m=B+16|0,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(m,c),m=$A(m,c)|0,Hw[f&15](d,s,m),m=F9(d)|0,C=B,m|0}function Bxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],vxe(s,c,d,1),C=f}function vxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=JF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Dxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Sxe(m,f)|0,f),C=d}function JF(){var s=0,l=0;if(o[7752]|0||(O9(9720),tr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9720)|0)){s=9720,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));O9(9720)}return 9720}function Dxe(s){return s=s|0,0}function Sxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=JF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],L9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Pxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function L9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Pxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=bxe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,xxe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],L9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,kxe(s,k),Qxe(k),C=M;return}}function bxe(s){return s=s|0,357913941}function xxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function kxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Qxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function O9(s){s=s|0,Txe(s)}function Fxe(s){s=s|0,Rxe(s+24|0)}function Rxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Txe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Nxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Nxe(){return 1288}function Lxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Oxe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Mxe(l,f)|0,C=c,l|0}function Oxe(s){return s=s|0,(n[(JF()|0)+24>>2]|0)+(s*12|0)|0}function Mxe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),Zq(Lg[c&31](s)|0)|0}function Uxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],_xe(s,c,d,0),C=f}function _xe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=zF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Hxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,jxe(m,f)|0,f),C=d}function zF(){var s=0,l=0;if(o[7760]|0||(U9(9756),tr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9756)|0)){s=9756,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));U9(9756)}return 9756}function Hxe(s){return s=s|0,0}function jxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=zF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],M9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Gxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function M9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Gxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=qxe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,Yxe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],M9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Wxe(s,k),Kxe(k),C=M;return}}function qxe(s){return s=s|0,357913941}function Yxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Wxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Kxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function U9(s){s=s|0,zxe(s)}function Vxe(s){s=s|0,Jxe(s+24|0)}function Jxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function zxe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Xxe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Xxe(){return 1292}function Zxe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=$xe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eke(l,d,c),C=f}function $xe(s){return s=s|0,(n[(zF()|0)+24>>2]|0)+(s*12|0)|0}function eke(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ku(d,c),c=+Qu(d,c),C7[f&31](s,c),C=m}function tke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],rke(s,c,d,0),C=f}function rke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=XF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,ike(m,f)|0,f),C=d}function XF(){var s=0,l=0;if(o[7768]|0||(H9(9792),tr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9792)|0)){s=9792,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));H9(9792)}return 9792}function nke(s){return s=s|0,0}function ike(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=XF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ske(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function _9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ske(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oke(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,ake(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],_9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lke(s,k),cke(k),C=M;return}}function oke(s){return s=s|0,357913941}function ake(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function H9(s){s=s|0,fke(s)}function uke(s){s=s|0,Ake(s+24|0)}function Ake(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,pke()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pke(){return 1300}function hke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=gke(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],dke(l,m,c,f),C=d}function gke(s){return s=s|0,(n[(XF()|0)+24>>2]|0)+(s*12|0)|0}function dke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),ZA(m,c),m=$A(m,c)|0,ku(B,f),f=+Qu(B,f),b7[d&15](s,m,f),C=k}function mke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],yke(s,c,d,0),C=f}function yke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=ZF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Eke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Cke(m,f)|0,f),C=d}function ZF(){var s=0,l=0;if(o[7776]|0||(G9(9828),tr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9828)|0)){s=9828,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));G9(9828)}return 9828}function Eke(s){return s=s|0,0}function Cke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=ZF()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],j9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(wke(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function j9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function wke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ike(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,Bke(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],j9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,vke(s,k),Dke(k),C=M;return}}function Ike(s){return s=s|0,357913941}function Bke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function vke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Dke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function G9(s){s=s|0,bke(s)}function Ske(s){s=s|0,Pke(s+24|0)}function Pke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function bke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,7,l,xke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xke(){return 1312}function kke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Qke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Fke(l,d,c),C=f}function Qke(s){return s=s|0,(n[(ZF()|0)+24>>2]|0)+(s*12|0)|0}function Fke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,rf[f&31](s,d),C=m}function Rke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],Tke(s,c,d,0),C=f}function Tke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=$F()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Lke(m,f)|0,f),C=d}function $F(){var s=0,l=0;if(o[7784]|0||(Y9(9864),tr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9864)|0)){s=9864,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Y9(9864)}return 9864}function Nke(s){return s=s|0,0}function Lke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=$F()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],q9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Oke(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function q9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Oke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Mke(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,Uke(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],q9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_ke(s,k),Hke(k),C=M;return}}function Mke(s){return s=s|0,357913941}function Uke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _ke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Hke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function Y9(s){s=s|0,qke(s)}function jke(s){s=s|0,Gke(s+24|0)}function Gke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function qke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Yke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Yke(){return 1320}function Wke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Kke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Vke(l,d,c),C=f}function Kke(s){return s=s|0,(n[($F()|0)+24>>2]|0)+(s*12|0)|0}function Vke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Jke(d,c),d=zke(d,c)|0,rf[f&31](s,d),C=m}function Jke(s,l){s=s|0,l=l|0}function zke(s,l){return s=s|0,l=l|0,Xke(l)|0}function Xke(s){return s=s|0,s|0}function Zke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],$ke(s,c,d,0),C=f}function $ke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=eR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=eQe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,tQe(m,f)|0,f),C=d}function eR(){var s=0,l=0;if(o[7792]|0||(K9(9900),tr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9900)|0)){s=9900,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));K9(9900)}return 9900}function eQe(s){return s=s|0,0}function tQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=eR()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],W9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(rQe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function W9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function rQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=nQe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,iQe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],W9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,sQe(s,k),oQe(k),C=M;return}}function nQe(s){return s=s|0,357913941}function iQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function sQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function oQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function K9(s){s=s|0,cQe(s)}function aQe(s){s=s|0,lQe(s+24|0)}function lQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function cQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,22,l,uQe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function uQe(){return 1344}function AQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;c=C,C=C+16|0,f=c+8|0,d=c,m=fQe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],pQe(l,f),C=c}function fQe(s){return s=s|0,(n[(eR()|0)+24>>2]|0)+(s*12|0)|0}function pQe(s,l){s=s|0,l=l|0;var c=0;c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),tf[c&127](s)}function hQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=tR()|0,s=gQe(c)|0,hn(m,l,d,s,dQe(c,f)|0,f)}function tR(){var s=0,l=0;if(o[7800]|0||(J9(9936),tr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9936)|0)){s=9936,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));J9(9936)}return 9936}function gQe(s){return s=s|0,s|0}function dQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=tR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(V9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(mQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function V9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function mQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=yQe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,EQe(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,V9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,CQe(s,d),wQe(d),C=k;return}}function yQe(s){return s=s|0,536870911}function EQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function CQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function wQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function J9(s){s=s|0,vQe(s)}function IQe(s){s=s|0,BQe(s+24|0)}function BQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function vQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,23,l,B9()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function DQe(s,l){s=s|0,l=l|0,PQe(n[(SQe(s)|0)>>2]|0,l)}function SQe(s){return s=s|0,(n[(tR()|0)+24>>2]|0)+(s<<3)|0}function PQe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,HF(f,l),l=jF(f,l)|0,tf[s&127](l),C=c}function bQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=rR()|0,s=xQe(c)|0,hn(m,l,d,s,kQe(c,f)|0,f)}function rR(){var s=0,l=0;if(o[7808]|0||(X9(9972),tr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9972)|0)){s=9972,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));X9(9972)}return 9972}function xQe(s){return s=s|0,s|0}function kQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=rR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(z9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(QQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function z9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function QQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=FQe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,RQe(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,z9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,TQe(s,d),NQe(d),C=k;return}}function FQe(s){return s=s|0,536870911}function RQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function TQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function NQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function X9(s){s=s|0,MQe(s)}function LQe(s){s=s|0,OQe(s+24|0)}function OQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function MQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,9,l,UQe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function UQe(){return 1348}function _Qe(s,l){return s=s|0,l=l|0,jQe(n[(HQe(s)|0)>>2]|0,l)|0}function HQe(s){return s=s|0,(n[(rR()|0)+24>>2]|0)+(s<<3)|0}function jQe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Z9(f,l),l=$9(f,l)|0,l=sD(Lg[s&31](l)|0)|0,C=c,l|0}function Z9(s,l){s=s|0,l=l|0}function $9(s,l){return s=s|0,l=l|0,GQe(l)|0}function GQe(s){return s=s|0,s|0}function qQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=nR()|0,s=YQe(c)|0,hn(m,l,d,s,WQe(c,f)|0,f)}function nR(){var s=0,l=0;if(o[7816]|0||(t5(10008),tr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10008)|0)){s=10008,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t5(10008)}return 10008}function YQe(s){return s=s|0,s|0}function WQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=nR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(e5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(KQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function e5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function KQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=VQe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,JQe(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,e5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,zQe(s,d),XQe(d),C=k;return}}function VQe(s){return s=s|0,536870911}function JQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function zQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function XQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function t5(s){s=s|0,eFe(s)}function ZQe(s){s=s|0,$Qe(s+24|0)}function $Qe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function eFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,15,l,m9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function tFe(s){return s=s|0,nFe(n[(rFe(s)|0)>>2]|0)|0}function rFe(s){return s=s|0,(n[(nR()|0)+24>>2]|0)+(s<<3)|0}function nFe(s){return s=s|0,sD(CD[s&7]()|0)|0}function iFe(){var s=0;return o[7832]|0||(fFe(10052),tr(25,10052,U|0)|0,s=7832,n[s>>2]=1,n[s+4>>2]=0),10052}function sFe(s,l){s=s|0,l=l|0,n[s>>2]=oFe()|0,n[s+4>>2]=aFe()|0,n[s+12>>2]=l,n[s+8>>2]=lFe()|0,n[s+32>>2]=2}function oFe(){return 11709}function aFe(){return 1188}function lFe(){return aD()|0}function cFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(uFe(c),gt(c)):l|0&&(Su(l),gt(l))}function bp(s,l){return s=s|0,l=l|0,l&s|0}function uFe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function aD(){var s=0;return o[7824]|0||(n[2511]=AFe()|0,n[2512]=0,s=7824,n[s>>2]=1,n[s+4>>2]=0),10044}function AFe(){return 0}function fFe(s){s=s|0,vp(s)}function pFe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0;l=C,C=C+32|0,c=l+24|0,m=l+16|0,d=l+8|0,f=l,hFe(s,4827),gFe(s,4834,3)|0,dFe(s,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],mFe(s,4841,c)|0,n[d>>2]=1,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],yFe(s,4871,c)|0,n[f>>2]=10,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],EFe(s,4891,c)|0,C=l}function hFe(s,l){s=s|0,l=l|0;var c=0;c=XRe()|0,n[s>>2]=c,ZRe(c,l),xp(n[s>>2]|0)}function gFe(s,l,c){return s=s|0,l=l|0,c=c|0,NRe(s,pn(l)|0,c,0),s|0}function dFe(s,l,c){return s=s|0,l=l|0,c=c|0,CRe(s,pn(l)|0,c,0),s|0}function mFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tRe(s,l,d),C=f,s|0}function yFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],LFe(s,l,d),C=f,s|0}function EFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],CFe(s,l,d),C=f,s|0}function CFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],wFe(s,c,d,1),C=f}function wFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=iR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=IFe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,BFe(m,f)|0,f),C=d}function iR(){var s=0,l=0;if(o[7840]|0||(n5(10100),tr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10100)|0)){s=10100,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));n5(10100)}return 10100}function IFe(s){return s=s|0,0}function BFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=iR()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],r5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(vFe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function r5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function vFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=DFe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,SFe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],r5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,PFe(s,k),bFe(k),C=M;return}}function DFe(s){return s=s|0,357913941}function SFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function PFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function bFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function n5(s){s=s|0,QFe(s)}function xFe(s){s=s|0,kFe(s+24|0)}function kFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function QFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,FFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function FFe(){return 1364}function RFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=TFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=NFe(l,d,c)|0,C=f,c|0}function TFe(s){return s=s|0,(n[(iR()|0)+24>>2]|0)+(s*12|0)|0}function NFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,d=u9(RR[f&15](s,d)|0)|0,C=m,d|0}function LFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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(s,c,d,0),C=f}function OFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=sR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=MFe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,UFe(m,f)|0,f),C=d}function sR(){var s=0,l=0;if(o[7848]|0||(s5(10136),tr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10136)|0)){s=10136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));s5(10136)}return 10136}function MFe(s){return s=s|0,0}function UFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=sR()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],i5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(_Fe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function i5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function _Fe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=HFe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,jFe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],i5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,GFe(s,k),qFe(k),C=M;return}}function HFe(s){return s=s|0,357913941}function jFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function GFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function qFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function s5(s){s=s|0,KFe(s)}function YFe(s){s=s|0,WFe(s+24|0)}function WFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function KFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,9,l,VFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VFe(){return 1372}function JFe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=zFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XFe(l,d,c),C=f}function zFe(s){return s=s|0,(n[(sR()|0)+24>>2]|0)+(s*12|0)|0}function XFe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=Ze;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZFe(d,c),B=y($Fe(d,c)),E7[f&1](s,B),C=m}function ZFe(s,l){s=s|0,l=+l}function $Fe(s,l){return s=s|0,l=+l,y(eRe(l))}function eRe(s){return s=+s,y(s)}function tRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(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],rRe(s,c,d,0),C=f}function rRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=oR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nRe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,iRe(m,f)|0,f),C=d}function oR(){var s=0,l=0;if(o[7856]|0||(a5(10172),tr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10172)|0)){s=10172,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a5(10172)}return 10172}function nRe(s){return s=s|0,0}function iRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,G=oR()|0,M=G+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=G+28|0,c=n[l>>2]|0,c>>>0<(n[G+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sRe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oRe(s)|0,m>>>0>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,G=se<<1,aRe(k,se>>>0>>1>>>0?G>>>0>>0?d:G:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lRe(s,k),cRe(k),C=M;return}}function oRe(s){return s=s|0,357913941}function aRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&>(s)}function a5(s){s=s|0,fRe(s)}function uRe(s){s=s|0,ARe(s+24|0)}function ARe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,3,l,pRe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pRe(){return 1380}function hRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=gRe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],dRe(l,m,c,f),C=d}function gRe(s){return s=s|0,(n[(oR()|0)+24>>2]|0)+(s*12|0)|0}function dRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),ZA(m,c),m=$A(m,c)|0,mRe(B,f),B=yRe(B,f)|0,Hw[d&15](s,m,B),C=k}function mRe(s,l){s=s|0,l=l|0}function yRe(s,l){return s=s|0,l=l|0,ERe(l)|0}function ERe(s){return s=s|0,(s|0)!=0|0}function CRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=aR()|0,s=wRe(c)|0,hn(m,l,d,s,IRe(c,f)|0,f)}function aR(){var s=0,l=0;if(o[7864]|0||(c5(10208),tr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10208)|0)){s=10208,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c5(10208)}return 10208}function wRe(s){return s=s|0,s|0}function IRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=aR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(l5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(BRe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function l5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function BRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=vRe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,DRe(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,l5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,SRe(s,d),PRe(d),C=k;return}}function vRe(s){return s=s|0,536870911}function DRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function SRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function PRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function c5(s){s=s|0,kRe(s)}function bRe(s){s=s|0,xRe(s+24|0)}function xRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function kRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,24,l,QRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function QRe(){return 1392}function FRe(s,l){s=s|0,l=l|0,TRe(n[(RRe(s)|0)>>2]|0,l)}function RRe(s){return s=s|0,(n[(aR()|0)+24>>2]|0)+(s<<3)|0}function TRe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Z9(f,l),l=$9(f,l)|0,tf[s&127](l),C=c}function NRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=lR()|0,s=LRe(c)|0,hn(m,l,d,s,ORe(c,f)|0,f)}function lR(){var s=0,l=0;if(o[7872]|0||(A5(10244),tr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10244)|0)){s=10244,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));A5(10244)}return 10244}function LRe(s){return s=s|0,s|0}function ORe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=lR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(u5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(MRe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function u5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function MRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=URe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,_Re(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,u5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,HRe(s,d),jRe(d),C=k;return}}function URe(s){return s=s|0,536870911}function _Re(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function HRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function jRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function A5(s){s=s|0,YRe(s)}function GRe(s){s=s|0,qRe(s+24|0)}function qRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function YRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,16,l,WRe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function WRe(){return 1400}function KRe(s){return s=s|0,JRe(n[(VRe(s)|0)>>2]|0)|0}function VRe(s){return s=s|0,(n[(lR()|0)+24>>2]|0)+(s<<3)|0}function JRe(s){return s=s|0,zRe(CD[s&7]()|0)|0}function zRe(s){return s=s|0,s|0}function XRe(){var s=0;return o[7880]|0||(iTe(10280),tr(25,10280,U|0)|0,s=7880,n[s>>2]=1,n[s+4>>2]=0),10280}function ZRe(s,l){s=s|0,l=l|0,n[s>>2]=$Re()|0,n[s+4>>2]=eTe()|0,n[s+12>>2]=l,n[s+8>>2]=tTe()|0,n[s+32>>2]=4}function $Re(){return 11711}function eTe(){return 1356}function tTe(){return aD()|0}function rTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(nTe(c),gt(c)):l|0&&(Dg(l),gt(l))}function nTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function iTe(s){s=s|0,vp(s)}function sTe(s){s=s|0,oTe(s,4920),aTe(s)|0,lTe(s)|0}function oTe(s,l){s=s|0,l=l|0;var c=0;c=R9()|0,n[s>>2]=c,xTe(c,l),xp(n[s>>2]|0)}function aTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,ETe()|0),s|0}function lTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,cTe()|0),s|0}function cTe(){var s=0;return o[7888]|0||(f5(10328),tr(53,10328,U|0)|0,s=7888,n[s>>2]=1,n[s+4>>2]=0),Tr(10328)|0||f5(10328),10328}function kg(s,l){s=s|0,l=l|0,hn(s,0,l,0,0,0)}function f5(s){s=s|0,fTe(s),Qg(s,10)}function uTe(s){s=s|0,ATe(s+24|0)}function ATe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function fTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,1,l,dTe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pTe(s,l,c){s=s|0,l=l|0,c=+c,hTe(s,l,c)}function Qg(s,l){s=s|0,l=l|0,n[s+20>>2]=l}function hTe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,m=f+8|0,k=f+13|0,d=f,B=f+12|0,ZA(k,l),n[m>>2]=$A(k,l)|0,ku(B,c),E[d>>3]=+Qu(B,c),gTe(s,m,d),C=f}function gTe(s,l,c){s=s|0,l=l|0,c=c|0,Y(s+8|0,n[l>>2]|0,+E[c>>3]),o[s+24>>0]=1}function dTe(){return 1404}function mTe(s,l){return s=s|0,l=+l,yTe(s,l)|0}function yTe(s,l){s=s|0,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,m=f+4|0,B=f+8|0,k=f,d=Wa(8)|0,c=d,Q=Kt(16)|0,ZA(m,s),s=$A(m,s)|0,ku(B,l),Y(Q,s,+Qu(B,l)),B=c+4|0,n[B>>2]=Q,s=Kt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],KF(s,B,m),n[d>>2]=s,C=f,c|0}function ETe(){var s=0;return o[7896]|0||(p5(10364),tr(54,10364,U|0)|0,s=7896,n[s>>2]=1,n[s+4>>2]=0),Tr(10364)|0||p5(10364),10364}function p5(s){s=s|0,ITe(s),Qg(s,55)}function CTe(s){s=s|0,wTe(s+24|0)}function wTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function ITe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,4,l,STe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function BTe(s){s=s|0,vTe(s)}function vTe(s){s=s|0,DTe(s)}function DTe(s){s=s|0,h5(s+8|0),o[s+24>>0]=1}function h5(s){s=s|0,n[s>>2]=0,E[s+8>>3]=0}function STe(){return 1424}function PTe(){return bTe()|0}function bTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Kt(16)|0,h5(f),m=s+4|0,n[m>>2]=f,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],KF(f,m,d),n[c>>2]=f,C=l,s|0}function xTe(s,l){s=s|0,l=l|0,n[s>>2]=kTe()|0,n[s+4>>2]=QTe()|0,n[s+12>>2]=l,n[s+8>>2]=FTe()|0,n[s+32>>2]=5}function kTe(){return 11710}function QTe(){return 1416}function FTe(){return lD()|0}function RTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(TTe(c),gt(c)):l|0&>(l)}function TTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function lD(){var s=0;return o[7904]|0||(n[2600]=NTe()|0,n[2601]=0,s=7904,n[s>>2]=1,n[s+4>>2]=0),10400}function NTe(){return n[357]|0}function LTe(s){s=s|0,OTe(s,4926),MTe(s)|0}function OTe(s,l){s=s|0,l=l|0;var c=0;c=r9()|0,n[s>>2]=c,JTe(c,l),xp(n[s>>2]|0)}function MTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,UTe()|0),s|0}function UTe(){var s=0;return o[7912]|0||(g5(10412),tr(56,10412,U|0)|0,s=7912,n[s>>2]=1,n[s+4>>2]=0),Tr(10412)|0||g5(10412),10412}function g5(s){s=s|0,jTe(s),Qg(s,57)}function _Te(s){s=s|0,HTe(s+24|0)}function HTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function jTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,5,l,WTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function GTe(s){s=s|0,qTe(s)}function qTe(s){s=s|0,YTe(s)}function YTe(s){s=s|0;var l=0,c=0;l=s+8|0,c=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(c|0));o[s+56>>0]=1}function WTe(){return 1432}function KTe(){return VTe()|0}function VTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0;B=C,C=C+16|0,s=B+4|0,l=B,c=Wa(8)|0,f=c,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=f+4|0,n[m>>2]=d,k=Kt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[s>>2]=n[l>>2],n9(k,m,s),n[c>>2]=k,C=B,f|0}function JTe(s,l){s=s|0,l=l|0,n[s>>2]=zTe()|0,n[s+4>>2]=XTe()|0,n[s+12>>2]=l,n[s+8>>2]=ZTe()|0,n[s+32>>2]=6}function zTe(){return 11704}function XTe(){return 1436}function ZTe(){return lD()|0}function $Te(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(eNe(c),gt(c)):l|0&>(l)}function eNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function tNe(s){s=s|0,rNe(s,4933),nNe(s)|0,iNe(s)|0}function rNe(s,l){s=s|0,l=l|0;var c=0;c=bNe()|0,n[s>>2]=c,xNe(c,l),xp(n[s>>2]|0)}function nNe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,yNe()|0),s|0}function iNe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,sNe()|0),s|0}function sNe(){var s=0;return o[7920]|0||(d5(10452),tr(58,10452,U|0)|0,s=7920,n[s>>2]=1,n[s+4>>2]=0),Tr(10452)|0||d5(10452),10452}function d5(s){s=s|0,lNe(s),Qg(s,1)}function oNe(s){s=s|0,aNe(s+24|0)}function aNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function lNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,1,l,fNe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function cNe(s,l,c){s=s|0,l=+l,c=+c,uNe(s,l,c)}function uNe(s,l,c){s=s|0,l=+l,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,m=f+8|0,k=f+17|0,d=f,B=f+16|0,ku(k,l),E[m>>3]=+Qu(k,l),ku(B,c),E[d>>3]=+Qu(B,c),ANe(s,m,d),C=f}function ANe(s,l,c){s=s|0,l=l|0,c=c|0,m5(s+8|0,+E[l>>3],+E[c>>3]),o[s+24>>0]=1}function m5(s,l,c){s=s|0,l=+l,c=+c,E[s>>3]=l,E[s+8>>3]=c}function fNe(){return 1472}function pNe(s,l){return s=+s,l=+l,hNe(s,l)|0}function hNe(s,l){s=+s,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,B=f+4|0,k=f+8|0,Q=f,d=Wa(8)|0,c=d,m=Kt(16)|0,ku(B,s),s=+Qu(B,s),ku(k,l),m5(m,s,+Qu(k,l)),k=c+4|0,n[k>>2]=m,m=Kt(8)|0,k=n[k>>2]|0,n[Q>>2]=0,n[B>>2]=n[Q>>2],y5(m,k,B),n[d>>2]=m,C=f,c|0}function y5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1452,n[c+12>>2]=l,n[s+4>>2]=c}function gNe(s){s=s|0,zm(s),gt(s)}function dNe(s){s=s|0,s=n[s+12>>2]|0,s|0&>(s)}function mNe(s){s=s|0,gt(s)}function yNe(){var s=0;return o[7928]|0||(E5(10488),tr(59,10488,U|0)|0,s=7928,n[s>>2]=1,n[s+4>>2]=0),Tr(10488)|0||E5(10488),10488}function E5(s){s=s|0,wNe(s),Qg(s,60)}function ENe(s){s=s|0,CNe(s+24|0)}function CNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function wNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,6,l,DNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function INe(s){s=s|0,BNe(s)}function BNe(s){s=s|0,vNe(s)}function vNe(s){s=s|0,C5(s+8|0),o[s+24>>0]=1}function C5(s){s=s|0,n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,n[s+12>>2]=0}function DNe(){return 1492}function SNe(){return PNe()|0}function PNe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Kt(16)|0,C5(f),m=s+4|0,n[m>>2]=f,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],y5(f,m,d),n[c>>2]=f,C=l,s|0}function bNe(){var s=0;return o[7936]|0||(NNe(10524),tr(25,10524,U|0)|0,s=7936,n[s>>2]=1,n[s+4>>2]=0),10524}function xNe(s,l){s=s|0,l=l|0,n[s>>2]=kNe()|0,n[s+4>>2]=QNe()|0,n[s+12>>2]=l,n[s+8>>2]=FNe()|0,n[s+32>>2]=7}function kNe(){return 11700}function QNe(){return 1484}function FNe(){return lD()|0}function RNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(TNe(c),gt(c)):l|0&>(l)}function TNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function NNe(s){s=s|0,vp(s)}function LNe(s,l,c){s=s|0,l=l|0,c=c|0,s=pn(l)|0,l=ONe(c)|0,c=MNe(c,0)|0,hLe(s,l,c,cR()|0,0)}function ONe(s){return s=s|0,s|0}function MNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=cR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(I5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(YNe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function cR(){var s=0,l=0;if(o[7944]|0||(w5(10568),tr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10568)|0)){s=10568,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));w5(10568)}return 10568}function w5(s){s=s|0,HNe(s)}function UNe(s){s=s|0,_Ne(s+24|0)}function _Ne(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function HNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,17,l,C9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jNe(s){return s=s|0,qNe(n[(GNe(s)|0)>>2]|0)|0}function GNe(s){return s=s|0,(n[(cR()|0)+24>>2]|0)+(s<<3)|0}function qNe(s){return s=s|0,oD(CD[s&7]()|0)|0}function I5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function YNe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=WNe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,KNe(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,I5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,VNe(s,d),JNe(d),C=k;return}}function WNe(s){return s=s|0,536870911}function KNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function VNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function JNe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function zNe(){XNe()}function XNe(){ZNe(10604)}function ZNe(s){s=s|0,$Ne(s,4955)}function $Ne(s,l){s=s|0,l=l|0;var c=0;c=eLe()|0,n[s>>2]=c,tLe(c,l),xp(n[s>>2]|0)}function eLe(){var s=0;return o[7952]|0||(uLe(10612),tr(25,10612,U|0)|0,s=7952,n[s>>2]=1,n[s+4>>2]=0),10612}function tLe(s,l){s=s|0,l=l|0,n[s>>2]=sLe()|0,n[s+4>>2]=oLe()|0,n[s+12>>2]=l,n[s+8>>2]=aLe()|0,n[s+32>>2]=8}function xp(s){s=s|0;var l=0,c=0;l=C,C=C+16|0,c=l,Ym()|0,n[c>>2]=s,rLe(10608,c),C=l}function Ym(){return o[11714]|0||(n[2652]=0,tr(62,10608,U|0)|0,o[11714]=1),10608}function rLe(s,l){s=s|0,l=l|0;var c=0;c=Kt(8)|0,n[c+4>>2]=n[l>>2],n[c>>2]=n[s>>2],n[s>>2]=c}function nLe(s){s=s|0,iLe(s)}function iLe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function sLe(){return 11715}function oLe(){return 1496}function aLe(){return aD()|0}function lLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(cLe(c),gt(c)):l|0&>(l)}function cLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function uLe(s){s=s|0,vp(s)}function ALe(s,l){s=s|0,l=l|0;var c=0,f=0;Ym()|0,c=n[2652]|0;e:do if(c|0){for(;f=n[c+4>>2]|0,!(f|0&&(n7(uR(f)|0,s)|0)==0);)if(c=n[c>>2]|0,!c)break e;fLe(f,l)}while(0)}function uR(s){return s=s|0,n[s+12>>2]|0}function fLe(s,l){s=s|0,l=l|0;var c=0;s=s+36|0,c=n[s>>2]|0,c|0&&(GA(c),gt(c)),c=Kt(4)|0,zq(c,l),n[s>>2]=c}function AR(){return o[11716]|0||(n[2664]=0,tr(63,10656,U|0)|0,o[11716]=1),10656}function B5(){var s=0;return o[11717]|0?s=n[2665]|0:(pLe(),n[2665]=1504,o[11717]=1,s=1504),s|0}function pLe(){o[11740]|0||(o[11718]=gr(gr(8,0)|0,0)|0,o[11719]=gr(gr(0,0)|0,0)|0,o[11720]=gr(gr(0,16)|0,0)|0,o[11721]=gr(gr(8,0)|0,0)|0,o[11722]=gr(gr(0,0)|0,0)|0,o[11723]=gr(gr(8,0)|0,0)|0,o[11724]=gr(gr(0,0)|0,0)|0,o[11725]=gr(gr(8,0)|0,0)|0,o[11726]=gr(gr(0,0)|0,0)|0,o[11727]=gr(gr(8,0)|0,0)|0,o[11728]=gr(gr(0,0)|0,0)|0,o[11729]=gr(gr(0,0)|0,32)|0,o[11730]=gr(gr(0,0)|0,32)|0,o[11740]=1)}function v5(){return 1572}function hLe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0;m=C,C=C+32|0,O=m+16|0,M=m+12|0,Q=m+8|0,k=m+4|0,B=m,n[O>>2]=s,n[M>>2]=l,n[Q>>2]=c,n[k>>2]=f,n[B>>2]=d,AR()|0,gLe(10656,O,M,Q,k,B),C=m}function gLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0;B=Kt(24)|0,$q(B+4|0,n[l>>2]|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[s>>2],n[s>>2]=B}function D5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0,et=0,Xe=0,lt=0;if(lt=C,C=C+32|0,Me=lt+20|0,Qe=lt+8|0,et=lt+4|0,Xe=lt,l=n[l>>2]|0,l|0){qe=Me+4|0,Q=Me+8|0,M=Qe+4|0,O=Qe+8|0,G=Qe+8|0,se=Me+8|0;do{if(B=l+4|0,k=fR(B)|0,k|0){if(d=Nw(k)|0,n[Me>>2]=0,n[qe>>2]=0,n[Q>>2]=0,f=(Lw(k)|0)+1|0,dLe(Me,f),f|0)for(;f=f+-1|0,bc(Qe,n[d>>2]|0),m=n[qe>>2]|0,m>>>0<(n[se>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[qe>>2]=(n[qe>>2]|0)+4):pR(Me,Qe),f;)d=d+4|0;f=Ow(k)|0,n[Qe>>2]=0,n[M>>2]=0,n[O>>2]=0;e:do if(n[f>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?mLe(Qe,f):(n[d>>2]=n[f>>2],n[M>>2]=(n[M>>2]|0)+4),f=f+4|0,!(n[f>>2]|0))break e;d=n[M>>2]|0,m=n[G>>2]|0}while(0);n[et>>2]=cD(B)|0,n[Xe>>2]=Tr(k)|0,yLe(c,s,et,Xe,Me,Qe),hR(Qe),ef(Me)}l=n[l>>2]|0}while((l|0)!=0)}C=lt}function fR(s){return s=s|0,n[s+12>>2]|0}function Nw(s){return s=s|0,n[s+12>>2]|0}function Lw(s){return s=s|0,n[s+16>>2]|0}function dLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=n[s>>2]|0,(n[s+8>>2]|0)-f>>2>>>0>>0&&(R5(c,l,(n[s+4>>2]|0)-f>>2,s+8|0),T5(s,c),N5(c)),C=d}function pR(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=F5(s)|0,m>>>0>>0)zr(s);else{k=n[s>>2]|0,M=(n[s+8>>2]|0)-k|0,Q=M>>1,R5(c,M>>2>>>0>>1>>>0?Q>>>0>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,T5(s,c),N5(c),C=B;return}}function Ow(s){return s=s|0,n[s+8>>2]|0}function mLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=Q5(s)|0,m>>>0>>0)zr(s);else{k=n[s>>2]|0,M=(n[s+8>>2]|0)-k|0,Q=M>>1,OLe(c,M>>2>>>0>>1>>>0?Q>>>0>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,MLe(s,c),ULe(c),C=B;return}}function cD(s){return s=s|0,n[s>>2]|0}function yLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,ELe(s,l,c,f,d,m)}function hR(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ef(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ELe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,G=0;B=C,C=C+48|0,O=B+40|0,k=B+32|0,G=B+24|0,Q=B+12|0,M=B,Ka(k),s=da(s)|0,n[G>>2]=n[l>>2],c=n[c>>2]|0,f=n[f>>2]|0,gR(Q,d),CLe(M,m),n[O>>2]=n[G>>2],wLe(s,O,c,f,Q,M),hR(M),ef(Q),Va(k),C=B}function gR(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(NLe(s,f),LLe(s,n[l>>2]|0,n[c>>2]|0,f))}function CLe(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(RLe(s,f),TLe(s,n[l>>2]|0,n[c>>2]|0,f))}function wLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,G=0;B=C,C=C+32|0,O=B+28|0,G=B+24|0,k=B+12|0,Q=B,M=Sl(ILe()|0)|0,n[G>>2]=n[l>>2],n[O>>2]=n[G>>2],l=Fg(O)|0,c=S5(c)|0,f=dR(f)|0,n[k>>2]=n[d>>2],O=d+4|0,n[k+4>>2]=n[O>>2],G=d+8|0,n[k+8>>2]=n[G>>2],n[G>>2]=0,n[O>>2]=0,n[d>>2]=0,d=mR(k)|0,n[Q>>2]=n[m>>2],O=m+4|0,n[Q+4>>2]=n[O>>2],G=m+8|0,n[Q+8>>2]=n[G>>2],n[G>>2]=0,n[O>>2]=0,n[m>>2]=0,ao(0,M|0,s|0,l|0,c|0,f|0,d|0,BLe(Q)|0)|0,hR(Q),ef(k),C=B}function ILe(){var s=0;return o[7968]|0||(QLe(10708),s=7968,n[s>>2]=1,n[s+4>>2]=0),10708}function Fg(s){return s=s|0,b5(s)|0}function S5(s){return s=s|0,P5(s)|0}function dR(s){return s=s|0,oD(s)|0}function mR(s){return s=s|0,DLe(s)|0}function BLe(s){return s=s|0,vLe(s)|0}function vLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=P5(n[(n[s>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function P5(s){return s=s|0,s|0}function DLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=b5((n[s>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function b5(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(x5()|0)|0,f?(kF(l,f),QF(c,l),aUe(s,c),s=FF(l)|0):s=SLe(s)|0,C=d,s|0}function x5(){var s=0;return o[7960]|0||(kLe(10664),tr(25,10664,U|0)|0,s=7960,n[s>>2]=1,n[s+4>>2]=0),10664}function SLe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(4)|0,n[k>>2]=n[s>>2],m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],k5(s,m,d),n[f>>2]=s,C=c,l|0}function k5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1656,n[c+12>>2]=l,n[s+4>>2]=c}function PLe(s){s=s|0,zm(s),gt(s)}function bLe(s){s=s|0,s=n[s+12>>2]|0,s|0&>(s)}function xLe(s){s=s|0,gt(s)}function kLe(s){s=s|0,vp(s)}function QLe(s){s=s|0,Pl(s,FLe()|0,5)}function FLe(){return 1676}function RLe(s,l){s=s|0,l=l|0;var c=0;if((Q5(s)|0)>>>0>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function TLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function Q5(s){return s=s|0,1073741823}function NLe(s,l){s=s|0,l=l|0;var c=0;if((F5(s)|0)>>>0>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function LLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function F5(s){return s=s|0,1073741823}function OLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function MLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ULe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&>(s)}function R5(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function T5(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function N5(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&>(s)}function _Le(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0;if(Qe=C,C=C+32|0,O=Qe+20|0,G=Qe+12|0,M=Qe+16|0,se=Qe+4|0,qe=Qe,Me=Qe+8|0,k=B5()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(Q=n[k+8>>2]|0,k=n[k+4>>2]|0;bc(O,B),HLe(s,O,k,Q),m=m+4|0,B=n[m>>2]|0,B;)Q=Q+1|0,k=k+1|0;if(m=v5()|0,B=n[m>>2]|0,B|0)do bc(O,B),n[G>>2]=n[m+4>>2],jLe(l,O,G),m=m+8|0,B=n[m>>2]|0;while((B|0)!=0);if(m=n[(Ym()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,bc(O,n[(Wm(l)|0)>>2]|0),n[G>>2]=uR(l)|0,GLe(c,O,G),m=n[m>>2]|0;while((m|0)!=0);if(bc(M,0),m=AR()|0,n[O>>2]=n[M>>2],D5(O,m,d),m=n[(Ym()|0)>>2]|0,m|0){s=O+4|0,l=O+8|0,c=O+8|0;do{if(Q=n[m+4>>2]|0,bc(G,n[(Wm(Q)|0)>>2]|0),qLe(se,L5(Q)|0),B=n[se>>2]|0,B|0){n[O>>2]=0,n[s>>2]=0,n[l>>2]=0;do bc(qe,n[(Wm(n[B+4>>2]|0)|0)>>2]|0),k=n[s>>2]|0,k>>>0<(n[c>>2]|0)>>>0?(n[k>>2]=n[qe>>2],n[s>>2]=(n[s>>2]|0)+4):pR(O,qe),B=n[B>>2]|0;while((B|0)!=0);YLe(f,G,O),ef(O)}n[Me>>2]=n[G>>2],M=O5(Q)|0,n[O>>2]=n[Me>>2],D5(O,M,d),s9(se),m=n[m>>2]|0}while((m|0)!=0)}C=Qe}function HLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,nOe(s,l,c,f)}function jLe(s,l,c){s=s|0,l=l|0,c=c|0,rOe(s,l,c)}function Wm(s){return s=s|0,s|0}function GLe(s,l,c){s=s|0,l=l|0,c=c|0,ZLe(s,l,c)}function L5(s){return s=s|0,s+16|0}function qLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(m=C,C=C+16|0,d=m+8|0,c=m,n[s>>2]=0,f=n[l>>2]|0,n[d>>2]=f,n[c>>2]=s,c=XLe(c)|0,f|0){if(f=Kt(12)|0,B=(M5(d)|0)+4|0,s=n[B+4>>2]|0,l=f+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=s,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)s=f;else for(l=f;s=Kt(12)|0,Q=(M5(d)|0)+4|0,k=n[Q+4>>2]|0,B=s+4|0,n[B>>2]=n[Q>>2],n[B+4>>2]=k,n[l>>2]=s,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=s;n[s>>2]=n[c>>2],n[c>>2]=f}C=m}function YLe(s,l,c){s=s|0,l=l|0,c=c|0,WLe(s,l,c)}function O5(s){return s=s|0,s+24|0}function WLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+24|0,d=f+16|0,k=f+12|0,m=f,Ka(d),s=da(s)|0,n[k>>2]=n[l>>2],gR(m,c),n[B>>2]=n[k>>2],KLe(s,B,m),ef(m),Va(d),C=f}function KLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+16|0,k=f+12|0,d=f,m=Sl(VLe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Fg(B)|0,n[d>>2]=n[c>>2],B=c+4|0,n[d+4>>2]=n[B>>2],k=c+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[c>>2]=0,oo(0,m|0,s|0,l|0,mR(d)|0)|0,ef(d),C=f}function VLe(){var s=0;return o[7976]|0||(JLe(10720),s=7976,n[s>>2]=1,n[s+4>>2]=0),10720}function JLe(s){s=s|0,Pl(s,zLe()|0,2)}function zLe(){return 1732}function XLe(s){return s=s|0,n[s>>2]|0}function M5(s){return s=s|0,n[s>>2]|0}function ZLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Ka(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],U5(s,m,c),Va(d),C=f}function U5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+4|0,B=f,d=Sl($Le()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=Fg(m)|0,oo(0,d|0,s|0,l|0,S5(c)|0)|0,C=f}function $Le(){var s=0;return o[7984]|0||(eOe(10732),s=7984,n[s>>2]=1,n[s+4>>2]=0),10732}function eOe(s){s=s|0,Pl(s,tOe()|0,2)}function tOe(){return 1744}function rOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Ka(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],U5(s,m,c),Va(d),C=f}function nOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Ka(m),s=da(s)|0,n[k>>2]=n[l>>2],c=o[c>>0]|0,f=o[f>>0]|0,n[B>>2]=n[k>>2],iOe(s,B,c,f),Va(m),C=d}function iOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,B=d+4|0,k=d,m=Sl(sOe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Fg(B)|0,c=Km(c)|0,pc(0,m|0,s|0,l|0,c|0,Km(f)|0)|0,C=d}function sOe(){var s=0;return o[7992]|0||(aOe(10744),s=7992,n[s>>2]=1,n[s+4>>2]=0),10744}function Km(s){return s=s|0,oOe(s)|0}function oOe(s){return s=s|0,s&255|0}function aOe(s){s=s|0,Pl(s,lOe()|0,3)}function lOe(){return 1756}function cOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;switch(se=C,C=C+32|0,k=se+8|0,Q=se+4|0,M=se+20|0,O=se,LF(s,0),f=oUe(l)|0,n[k>>2]=0,G=k+4|0,n[G>>2]=0,n[k+8>>2]=0,f<<24>>24){case 0:{o[M>>0]=0,uOe(Q,c,M),uD(s,Q)|0,qA(Q);break}case 8:{G=BR(l)|0,o[M>>0]=8,bc(O,n[G+4>>2]|0),AOe(Q,c,M,O,G+8|0),uD(s,Q)|0,qA(Q);break}case 9:{if(m=BR(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,bc(Q,n[d>>2]|0),f=n[G>>2]|0,f>>>0<(n[B>>2]|0)>>>0?(n[f>>2]=n[Q>>2],n[G>>2]=(n[G>>2]|0)+4):pR(k,Q),l;)d=d+4|0;o[M>>0]=9,bc(O,n[m+8>>2]|0),fOe(Q,c,M,O,k),uD(s,Q)|0,qA(Q);break}default:G=BR(l)|0,o[M>>0]=f,bc(O,n[G+4>>2]|0),pOe(Q,c,M,O),uD(s,Q)|0,qA(Q)}ef(k),C=se}function uOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ka(d),l=da(l)|0,SOe(s,l,o[c>>0]|0),Va(d),C=f}function uD(s,l){s=s|0,l=l|0;var c=0;return c=n[s>>2]|0,c|0&&PA(c|0),n[s>>2]=n[l>>2],n[l>>2]=0,s|0}function AOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+32|0,k=m+16|0,B=m+8|0,Q=m,Ka(B),l=da(l)|0,c=o[c>>0]|0,n[Q>>2]=n[f>>2],d=n[d>>2]|0,n[k>>2]=n[Q>>2],IOe(s,l,c,k,d),Va(B),C=m}function fOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0;m=C,C=C+32|0,Q=m+24|0,B=m+16|0,M=m+12|0,k=m,Ka(B),l=da(l)|0,c=o[c>>0]|0,n[M>>2]=n[f>>2],gR(k,d),n[Q>>2]=n[M>>2],yOe(s,l,c,Q,k),ef(k),Va(B),C=m}function pOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Ka(m),l=da(l)|0,c=o[c>>0]|0,n[k>>2]=n[f>>2],n[B>>2]=n[k>>2],hOe(s,l,c,B),Va(m),C=d}function hOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+4|0,k=d,B=Sl(gOe()|0)|0,c=Km(c)|0,n[k>>2]=n[f>>2],n[m>>2]=n[k>>2],AD(s,oo(0,B|0,l|0,c|0,Fg(m)|0)|0),C=d}function gOe(){var s=0;return o[8e3]|0||(dOe(10756),s=8e3,n[s>>2]=1,n[s+4>>2]=0),10756}function AD(s,l){s=s|0,l=l|0,LF(s,l)}function dOe(s){s=s|0,Pl(s,mOe()|0,2)}function mOe(){return 1772}function yOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0;m=C,C=C+32|0,Q=m+16|0,M=m+12|0,B=m,k=Sl(EOe()|0)|0,c=Km(c)|0,n[M>>2]=n[f>>2],n[Q>>2]=n[M>>2],f=Fg(Q)|0,n[B>>2]=n[d>>2],Q=d+4|0,n[B+4>>2]=n[Q>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[Q>>2]=0,n[d>>2]=0,AD(s,pc(0,k|0,l|0,c|0,f|0,mR(B)|0)|0),ef(B),C=m}function EOe(){var s=0;return o[8008]|0||(COe(10768),s=8008,n[s>>2]=1,n[s+4>>2]=0),10768}function COe(s){s=s|0,Pl(s,wOe()|0,3)}function wOe(){return 1784}function IOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,k=m+4|0,Q=m,B=Sl(BOe()|0)|0,c=Km(c)|0,n[Q>>2]=n[f>>2],n[k>>2]=n[Q>>2],f=Fg(k)|0,AD(s,pc(0,B|0,l|0,c|0,f|0,dR(d)|0)|0),C=m}function BOe(){var s=0;return o[8016]|0||(vOe(10780),s=8016,n[s>>2]=1,n[s+4>>2]=0),10780}function vOe(s){s=s|0,Pl(s,DOe()|0,3)}function DOe(){return 1800}function SOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=Sl(POe()|0)|0,AD(s,Qn(0,f|0,l|0,Km(c)|0)|0)}function POe(){var s=0;return o[8024]|0||(bOe(10792),s=8024,n[s>>2]=1,n[s+4>>2]=0),10792}function bOe(s){s=s|0,Pl(s,xOe()|0,1)}function xOe(){return 1816}function kOe(){QOe(),FOe(),ROe()}function QOe(){n[2702]=p7(65536)|0}function FOe(){$Oe(10856)}function ROe(){TOe(10816)}function TOe(s){s=s|0,NOe(s,5044),LOe(s)|0}function NOe(s,l){s=s|0,l=l|0;var c=0;c=x5()|0,n[s>>2]=c,KOe(c,l),xp(n[s>>2]|0)}function LOe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,OOe()|0),s|0}function OOe(){var s=0;return o[8032]|0||(_5(10820),tr(64,10820,U|0)|0,s=8032,n[s>>2]=1,n[s+4>>2]=0),Tr(10820)|0||_5(10820),10820}function _5(s){s=s|0,_Oe(s),Qg(s,25)}function MOe(s){s=s|0,UOe(s+24|0)}function UOe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function _Oe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,18,l,qOe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function HOe(s,l){s=s|0,l=l|0,jOe(s,l)}function jOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;c=C,C=C+16|0,f=c,d=c+4|0,bg(d,l),n[f>>2]=xg(d,l)|0,GOe(s,f),C=c}function GOe(s,l){s=s|0,l=l|0,H5(s+4|0,n[l>>2]|0),o[s+8>>0]=1}function H5(s,l){s=s|0,l=l|0,n[s>>2]=l}function qOe(){return 1824}function YOe(s){return s=s|0,WOe(s)|0}function WOe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(4)|0,bg(d,s),H5(k,xg(d,s)|0),m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],k5(s,m,d),n[f>>2]=s,C=c,l|0}function Wa(s){s=s|0;var l=0,c=0;return s=s+7&-8,s>>>0<=32768&&(l=n[2701]|0,s>>>0<=(65536-l|0)>>>0)?(c=(n[2702]|0)+l|0,n[2701]=l+s,s=c):(s=p7(s+8|0)|0,n[s>>2]=n[2703],n[2703]=s,s=s+8|0),s|0}function KOe(s,l){s=s|0,l=l|0,n[s>>2]=VOe()|0,n[s+4>>2]=JOe()|0,n[s+12>>2]=l,n[s+8>>2]=zOe()|0,n[s+32>>2]=9}function VOe(){return 11744}function JOe(){return 1832}function zOe(){return lD()|0}function XOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(ZOe(c),gt(c)):l|0&>(l)}function ZOe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function $Oe(s){s=s|0,eMe(s,5052),tMe(s)|0,rMe(s,5058,26)|0,nMe(s,5069,1)|0,iMe(s,5077,10)|0,sMe(s,5087,19)|0,oMe(s,5094,27)|0}function eMe(s,l){s=s|0,l=l|0;var c=0;c=Z4e()|0,n[s>>2]=c,$4e(c,l),xp(n[s>>2]|0)}function tMe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,M4e()|0),s|0}function rMe(s,l,c){return s=s|0,l=l|0,c=c|0,C4e(s,pn(l)|0,c,0),s|0}function nMe(s,l,c){return s=s|0,l=l|0,c=c|0,s4e(s,pn(l)|0,c,0),s|0}function iMe(s,l,c){return s=s|0,l=l|0,c=c|0,OMe(s,pn(l)|0,c,0),s|0}function sMe(s,l,c){return s=s|0,l=l|0,c=c|0,IMe(s,pn(l)|0,c,0),s|0}function j5(s,l){s=s|0,l=l|0;var c=0,f=0;e:for(;;){for(c=n[2703]|0;;){if((c|0)==(l|0))break e;if(f=n[c>>2]|0,n[2703]=f,!c)c=f;else break}gt(c)}n[2701]=s}function oMe(s,l,c){return s=s|0,l=l|0,c=c|0,aMe(s,pn(l)|0,c,0),s|0}function aMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=yR()|0,s=lMe(c)|0,hn(m,l,d,s,cMe(c,f)|0,f)}function yR(){var s=0,l=0;if(o[8040]|0||(q5(10860),tr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10860)|0)){s=10860,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));q5(10860)}return 10860}function lMe(s){return s=s|0,s|0}function cMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=yR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(G5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(uMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function G5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function uMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=AMe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,fMe(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,G5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,pMe(s,d),hMe(d),C=k;return}}function AMe(s){return s=s|0,536870911}function fMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function pMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function hMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function q5(s){s=s|0,mMe(s)}function gMe(s){s=s|0,dMe(s+24|0)}function dMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function mMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,11,l,yMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function yMe(){return 1840}function EMe(s,l,c){s=s|0,l=l|0,c=c|0,wMe(n[(CMe(s)|0)>>2]|0,l,c)}function CMe(s){return s=s|0,(n[(yR()|0)+24>>2]|0)+(s<<3)|0}function wMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+1|0,d=f,bg(m,l),l=xg(m,l)|0,bg(d,c),c=xg(d,c)|0,rf[s&31](l,c),C=f}function IMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=ER()|0,s=BMe(c)|0,hn(m,l,d,s,vMe(c,f)|0,f)}function ER(){var s=0,l=0;if(o[8048]|0||(W5(10896),tr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10896)|0)){s=10896,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));W5(10896)}return 10896}function BMe(s){return s=s|0,s|0}function vMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=ER()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(Y5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(DMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function Y5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function DMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=SMe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,PMe(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,Y5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,bMe(s,d),xMe(d),C=k;return}}function SMe(s){return s=s|0,536870911}function PMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function bMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function xMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function W5(s){s=s|0,FMe(s)}function kMe(s){s=s|0,QMe(s+24|0)}function QMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function FMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,11,l,RMe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function RMe(){return 1852}function TMe(s,l){return s=s|0,l=l|0,LMe(n[(NMe(s)|0)>>2]|0,l)|0}function NMe(s){return s=s|0,(n[(ER()|0)+24>>2]|0)+(s<<3)|0}function LMe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,bg(f,l),l=xg(f,l)|0,l=oD(Lg[s&31](l)|0)|0,C=c,l|0}function OMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=CR()|0,s=MMe(c)|0,hn(m,l,d,s,UMe(c,f)|0,f)}function CR(){var s=0,l=0;if(o[8056]|0||(V5(10932),tr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10932)|0)){s=10932,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));V5(10932)}return 10932}function MMe(s){return s=s|0,s|0}function UMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=CR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(K5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(_Me(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function K5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function _Me(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=HMe(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,jMe(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,K5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,GMe(s,d),qMe(d),C=k;return}}function HMe(s){return s=s|0,536870911}function jMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function GMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function qMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function V5(s){s=s|0,KMe(s)}function YMe(s){s=s|0,WMe(s+24|0)}function WMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function KMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,7,l,VMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VMe(){return 1860}function JMe(s,l,c){return s=s|0,l=l|0,c=c|0,XMe(n[(zMe(s)|0)>>2]|0,l,c)|0}function zMe(s){return s=s|0,(n[(CR()|0)+24>>2]|0)+(s<<3)|0}function XMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+32|0,B=f+12|0,m=f+8|0,k=f,Q=f+16|0,d=f+4|0,ZMe(Q,l),$Me(k,Q,l),Dp(d,c),c=Sp(d,c)|0,n[B>>2]=n[k>>2],Hw[s&15](m,B,c),c=e4e(m)|0,qA(m),Pp(d),C=f,c|0}function ZMe(s,l){s=s|0,l=l|0}function $Me(s,l,c){s=s|0,l=l|0,c=c|0,t4e(s,c)}function e4e(s){return s=s|0,da(s)|0}function t4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+16|0,c=d,f=l,f&1?(r4e(c,0),ii(f|0,c|0)|0,n4e(s,c),i4e(c)):n[s>>2]=n[l>>2],C=d}function r4e(s,l){s=s|0,l=l|0,Xq(s,l),n[s+4>>2]=0,o[s+8>>0]=0}function n4e(s,l){s=s|0,l=l|0,n[s>>2]=n[l+4>>2]}function i4e(s){s=s|0,o[s+8>>0]=0}function s4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=wR()|0,s=o4e(c)|0,hn(m,l,d,s,a4e(c,f)|0,f)}function wR(){var s=0,l=0;if(o[8064]|0||(z5(10968),tr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10968)|0)){s=10968,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));z5(10968)}return 10968}function o4e(s){return s=s|0,s|0}function a4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=wR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(J5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(l4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function J5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function l4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=c4e(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,u4e(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,J5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,A4e(s,d),f4e(d),C=k;return}}function c4e(s){return s=s|0,536870911}function u4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function A4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function f4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function z5(s){s=s|0,g4e(s)}function p4e(s){s=s|0,h4e(s+24|0)}function h4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function g4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,1,l,d4e()|0,5),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function d4e(){return 1872}function m4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,E4e(n[(y4e(s)|0)>>2]|0,l,c,f,d,m)}function y4e(s){return s=s|0,(n[(wR()|0)+24>>2]|0)+(s<<3)|0}function E4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,G=0;B=C,C=C+32|0,k=B+16|0,Q=B+12|0,M=B+8|0,O=B+4|0,G=B,Dp(k,l),l=Sp(k,l)|0,Dp(Q,c),c=Sp(Q,c)|0,Dp(M,f),f=Sp(M,f)|0,Dp(O,d),d=Sp(O,d)|0,Dp(G,m),m=Sp(G,m)|0,y7[s&1](l,c,f,d,m),Pp(G),Pp(O),Pp(M),Pp(Q),Pp(k),C=B}function C4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=IR()|0,s=w4e(c)|0,hn(m,l,d,s,I4e(c,f)|0,f)}function IR(){var s=0,l=0;if(o[8072]|0||(Z5(11004),tr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(Tr(11004)|0)){s=11004,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Z5(11004)}return 11004}function w4e(s){return s=s|0,s|0}function I4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=IR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(X5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(B4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function X5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function B4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=v4e(s)|0,f>>>0>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,D4e(d,O>>3>>>0>>1>>>0?M>>>0>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,X5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,S4e(s,d),P4e(d),C=k;return}}function v4e(s){return s=s|0,536870911}function D4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function S4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function P4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&>(s)}function Z5(s){s=s|0,k4e(s)}function b4e(s){s=s|0,x4e(s+24|0)}function x4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function k4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,12,l,Q4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Q4e(){return 1896}function F4e(s,l,c){s=s|0,l=l|0,c=c|0,T4e(n[(R4e(s)|0)>>2]|0,l,c)}function R4e(s){return s=s|0,(n[(IR()|0)+24>>2]|0)+(s<<3)|0}function T4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+4|0,d=f,N4e(m,l),l=L4e(m,l)|0,Dp(d,c),c=Sp(d,c)|0,rf[s&31](l,c),Pp(d),C=f}function N4e(s,l){s=s|0,l=l|0}function L4e(s,l){return s=s|0,l=l|0,O4e(l)|0}function O4e(s){return s=s|0,s|0}function M4e(){var s=0;return o[8080]|0||($5(11040),tr(70,11040,U|0)|0,s=8080,n[s>>2]=1,n[s+4>>2]=0),Tr(11040)|0||$5(11040),11040}function $5(s){s=s|0,H4e(s),Qg(s,71)}function U4e(s){s=s|0,_4e(s+24|0)}function _4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function H4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,7,l,Y4e()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function j4e(s){s=s|0,G4e(s)}function G4e(s){s=s|0,q4e(s)}function q4e(s){s=s|0,o[s+8>>0]=1}function Y4e(){return 1936}function W4e(){return K4e()|0}function K4e(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,m=s+4|0,n[m>>2]=Kt(1)|0,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],V4e(f,m,d),n[c>>2]=f,C=l,s|0}function V4e(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1916,n[c+12>>2]=l,n[s+4>>2]=c}function J4e(s){s=s|0,zm(s),gt(s)}function z4e(s){s=s|0,s=n[s+12>>2]|0,s|0&>(s)}function X4e(s){s=s|0,gt(s)}function Z4e(){var s=0;return o[8088]|0||(sUe(11076),tr(25,11076,U|0)|0,s=8088,n[s>>2]=1,n[s+4>>2]=0),11076}function $4e(s,l){s=s|0,l=l|0,n[s>>2]=eUe()|0,n[s+4>>2]=tUe()|0,n[s+12>>2]=l,n[s+8>>2]=rUe()|0,n[s+32>>2]=10}function eUe(){return 11745}function tUe(){return 1940}function rUe(){return aD()|0}function nUe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(iUe(c),gt(c)):l|0&>(l)}function iUe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function sUe(s){s=s|0,vp(s)}function bc(s,l){s=s|0,l=l|0,n[s>>2]=l}function BR(s){return s=s|0,n[s>>2]|0}function oUe(s){return s=s|0,o[n[s>>2]>>0]|0}function aUe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,n[f>>2]=n[s>>2],lUe(l,f)|0,C=c}function lUe(s,l){s=s|0,l=l|0;var c=0;return c=cUe(n[s>>2]|0,l)|0,l=s+4|0,n[(n[l>>2]|0)+8>>2]=c,n[(n[l>>2]|0)+8>>2]|0}function cUe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Ka(f),s=da(s)|0,l=uUe(s,n[l>>2]|0)|0,Va(f),C=c,l|0}function Ka(s){s=s|0,n[s>>2]=n[2701],n[s+4>>2]=n[2703]}function uUe(s,l){s=s|0,l=l|0;var c=0;return c=Sl(AUe()|0)|0,Qn(0,c|0,s|0,dR(l)|0)|0}function Va(s){s=s|0,j5(n[s>>2]|0,n[s+4>>2]|0)}function AUe(){var s=0;return o[8096]|0||(fUe(11120),s=8096,n[s>>2]=1,n[s+4>>2]=0),11120}function fUe(s){s=s|0,Pl(s,pUe()|0,1)}function pUe(){return 1948}function hUe(){gUe()}function gUe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0;if(Me=C,C=C+16|0,O=Me+4|0,G=Me,Ni(65536,10804,n[2702]|0,10812),c=B5()|0,l=n[c>>2]|0,s=n[l>>2]|0,s|0)for(f=n[c+8>>2]|0,c=n[c+4>>2]|0;uc(s|0,u[c>>0]|0|0,o[f>>0]|0),l=l+4|0,s=n[l>>2]|0,s;)f=f+1|0,c=c+1|0;if(s=v5()|0,l=n[s>>2]|0,l|0)do uu(l|0,n[s+4>>2]|0),s=s+8|0,l=n[s>>2]|0;while((l|0)!=0);uu(dUe()|0,5167),M=Ym()|0,s=n[M>>2]|0;e:do if(s|0){do mUe(n[s+4>>2]|0),s=n[s>>2]|0;while((s|0)!=0);if(s=n[M>>2]|0,s|0){Q=M;do{for(;d=s,s=n[s>>2]|0,d=n[d+4>>2]|0,!!(yUe(d)|0);)if(n[G>>2]=Q,n[O>>2]=n[G>>2],EUe(M,O)|0,!s)break e;if(CUe(d),Q=n[Q>>2]|0,l=e7(d)|0,m=Hi()|0,B=C,C=C+((1*(l<<2)|0)+15&-16)|0,k=C,C=C+((1*(l<<2)|0)+15&-16)|0,l=n[(L5(d)|0)>>2]|0,l|0)for(c=B,f=k;n[c>>2]=n[(Wm(n[l+4>>2]|0)|0)>>2],n[f>>2]=n[l+8>>2],l=n[l>>2]|0,l;)c=c+4|0,f=f+4|0;Qe=Wm(d)|0,l=wUe(d)|0,c=e7(d)|0,f=IUe(d)|0,Au(Qe|0,l|0,B|0,k|0,c|0,f|0,uR(d)|0),_i(m|0)}while((s|0)!=0)}}while(0);if(s=n[(AR()|0)>>2]|0,s|0)do Qe=s+4|0,M=fR(Qe)|0,d=Ow(M)|0,m=Nw(M)|0,B=(Lw(M)|0)+1|0,k=fD(M)|0,Q=t7(Qe)|0,M=Tr(M)|0,O=cD(Qe)|0,G=vR(Qe)|0,El(0,d|0,m|0,B|0,k|0,Q|0,M|0,O|0,G|0,DR(Qe)|0),s=n[s>>2]|0;while((s|0)!=0);s=n[(Ym()|0)>>2]|0;e:do if(s|0){t:for(;;){if(l=n[s+4>>2]|0,l|0&&(se=n[(Wm(l)|0)>>2]|0,qe=n[(O5(l)|0)>>2]|0,qe|0)){c=qe;do{l=c+4|0,f=fR(l)|0;r:do if(f|0)switch(Tr(f)|0){case 0:break t;case 4:case 3:case 2:{k=Ow(f)|0,Q=Nw(f)|0,M=(Lw(f)|0)+1|0,O=fD(f)|0,G=Tr(f)|0,Qe=cD(l)|0,El(se|0,k|0,Q|0,M|0,O|0,0,G|0,Qe|0,vR(l)|0,DR(l)|0);break r}case 1:{B=Ow(f)|0,k=Nw(f)|0,Q=(Lw(f)|0)+1|0,M=fD(f)|0,O=t7(l)|0,G=Tr(f)|0,Qe=cD(l)|0,El(se|0,B|0,k|0,Q|0,M|0,O|0,G|0,Qe|0,vR(l)|0,DR(l)|0);break r}case 5:{M=Ow(f)|0,O=Nw(f)|0,G=(Lw(f)|0)+1|0,Qe=fD(f)|0,El(se|0,M|0,O|0,G|0,Qe|0,BUe(f)|0,Tr(f)|0,0,0,0);break r}default:break r}while(0);c=n[c>>2]|0}while((c|0)!=0)}if(s=n[s>>2]|0,!s)break e}Rt()}while(0);Ce(),C=Me}function dUe(){return 11703}function mUe(s){s=s|0,o[s+40>>0]=0}function yUe(s){return s=s|0,(o[s+40>>0]|0)!=0|0}function EUe(s,l){return s=s|0,l=l|0,l=vUe(l)|0,s=n[l>>2]|0,n[l>>2]=n[s>>2],gt(s),n[l>>2]|0}function CUe(s){s=s|0,o[s+40>>0]=1}function e7(s){return s=s|0,n[s+20>>2]|0}function wUe(s){return s=s|0,n[s+8>>2]|0}function IUe(s){return s=s|0,n[s+32>>2]|0}function fD(s){return s=s|0,n[s+4>>2]|0}function t7(s){return s=s|0,n[s+4>>2]|0}function vR(s){return s=s|0,n[s+8>>2]|0}function DR(s){return s=s|0,n[s+16>>2]|0}function BUe(s){return s=s|0,n[s+20>>2]|0}function vUe(s){return s=s|0,n[s>>2]|0}function pD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,Ge=0,Lt=0;Lt=C,C=C+16|0,se=Lt;do if(s>>>0<245){if(M=s>>>0<11?16:s+11&-8,s=M>>>3,G=n[2783]|0,c=G>>>s,c&3|0)return l=(c&1^1)+s|0,s=11172+(l<<1<<2)|0,c=s+8|0,f=n[c>>2]|0,d=f+8|0,m=n[d>>2]|0,(s|0)==(m|0)?n[2783]=G&~(1<>2]=s,n[c>>2]=m),Ge=l<<3,n[f+4>>2]=Ge|3,Ge=f+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1,Ge=d,C=Lt,Ge|0;if(O=n[2785]|0,M>>>0>O>>>0){if(c|0)return l=2<>>12&16,l=l>>>B,c=l>>>5&8,l=l>>>c,d=l>>>2&4,l=l>>>d,s=l>>>1&2,l=l>>>s,f=l>>>1&1,f=(c|B|d|s|f)+(l>>>f)|0,l=11172+(f<<1<<2)|0,s=l+8|0,d=n[s>>2]|0,B=d+8|0,c=n[B>>2]|0,(l|0)==(c|0)?(s=G&~(1<>2]=l,n[s>>2]=c,s=G),m=(f<<3)-M|0,n[d+4>>2]=M|3,f=d+M|0,n[f+4>>2]=m|1,n[f+m>>2]=m,O|0&&(d=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=c),n[2785]=m,n[2788]=f,Ge=B,C=Lt,Ge|0;if(k=n[2784]|0,k){if(c=(k&0-k)+-1|0,B=c>>>12&16,c=c>>>B,m=c>>>5&8,c=c>>>m,Q=c>>>2&4,c=c>>>Q,f=c>>>1&2,c=c>>>f,s=c>>>1&1,s=n[11436+((m|B|Q|f|s)+(c>>>s)<<2)>>2]|0,c=(n[s+4>>2]&-8)-M|0,f=n[s+16+(((n[s+16>>2]|0)==0&1)<<2)>>2]|0,!f)Q=s,m=c;else{do B=(n[f+4>>2]&-8)-M|0,Q=B>>>0>>0,c=Q?B:c,s=Q?f:s,f=n[f+16+(((n[f+16>>2]|0)==0&1)<<2)>>2]|0;while((f|0)!=0);Q=s,m=c}if(B=Q+M|0,Q>>>0>>0){d=n[Q+24>>2]|0,l=n[Q+12>>2]|0;do if((l|0)==(Q|0)){if(s=Q+20|0,l=n[s>>2]|0,!l&&(s=Q+16|0,l=n[s>>2]|0,!l)){c=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0,c=l}else c=n[Q+8>>2]|0,n[c+12>>2]=l,n[l+8>>2]=c,c=l;while(0);do if(d|0){if(l=n[Q+28>>2]|0,s=11436+(l<<2)|0,(Q|0)==(n[s>>2]|0)){if(n[s>>2]=c,!c){n[2784]=k&~(1<>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=d,l=n[Q+16>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),l=n[Q+20>>2]|0,l|0&&(n[c+20>>2]=l,n[l+24>>2]=c)}while(0);return m>>>0<16?(Ge=m+M|0,n[Q+4>>2]=Ge|3,Ge=Q+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1):(n[Q+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,O|0&&(f=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=G|l,l=c,s=c+8|0),n[s>>2]=f,n[l+12>>2]=f,n[f+8>>2]=l,n[f+12>>2]=c),n[2785]=m,n[2788]=B),Ge=Q+8|0,C=Lt,Ge|0}else G=M}else G=M}else G=M}else if(s>>>0<=4294967231)if(s=s+11|0,M=s&-8,Q=n[2784]|0,Q){f=0-M|0,s=s>>>8,s?M>>>0>16777215?k=31:(G=(s+1048320|0)>>>16&8,Ue=s<>>16&4,Ue=Ue<>>16&2,k=14-(O|G|k)+(Ue<>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,c=n[11436+(k<<2)>>2]|0;e:do if(!c)c=0,s=0,Ue=57;else for(s=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[c+4>>2]&-8)-M|0,d>>>0>>0)if(d)s=c,f=d;else{s=c,f=0,d=c,Ue=61;break e}if(d=n[c+20>>2]|0,c=n[c+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(c|0)?m:d,d=(c|0)==0,d){c=m,Ue=57;break}else B=B<<((d^1)&1)}while(0);if((Ue|0)==57){if((c|0)==0&(s|0)==0){if(s=2<>>12&16,G=G>>>B,m=G>>>5&8,G=G>>>m,k=G>>>2&4,G=G>>>k,O=G>>>1&2,G=G>>>O,c=G>>>1&1,s=0,c=n[11436+((m|B|k|O|c)+(G>>>c)<<2)>>2]|0}c?(d=c,Ue=61):(k=s,B=f)}if((Ue|0)==61)for(;;)if(Ue=0,c=(n[d+4>>2]&-8)-M|0,G=c>>>0>>0,c=G?c:f,s=G?d:s,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)f=c,Ue=61;else{k=s,B=c;break}if((k|0)!=0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return Ge=0,C=Lt,Ge|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(s=k+20|0,l=n[s>>2]|0,!l&&(s=k+16|0,l=n[s>>2]|0,!l)){l=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0}else Ge=n[k+8>>2]|0,n[Ge+12>>2]=l,n[l+8>>2]=Ge;while(0);do if(d){if(s=n[k+28>>2]|0,c=11436+(s<<2)|0,(k|0)==(n[c>>2]|0)){if(n[c>>2]=l,!l){f=Q&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){f=Q;break}n[l+24>>2]=d,s=n[k+16>>2]|0,s|0&&(n[l+16>>2]=s,n[s+24>>2]=l),s=n[k+20>>2]|0,s&&(n[l+20>>2]=s,n[s+24>>2]=l),f=Q}else f=Q;while(0);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){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=c;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(Ue=(l+1048320|0)>>>16&8,Ge=l<>>16&4,Ge=Ge<>>16&2,l=14-(lt|Ue|l)+(Ge<>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,c=11436+(l<<2)|0,n[m+28>>2]=l,s=m+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}for(s=B<<((l|0)==31?0:25-(l>>>1)|0),c=n[c>>2]|0;;){if((n[c+4>>2]&-8|0)==(B|0)){Ue=97;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=96;break}}if((Ue|0)==96){n[f>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((Ue|0)==97){Ue=c+8|0,Ge=n[Ue>>2]|0,n[Ge+12>>2]=m,n[Ue>>2]=m,n[m+8>>2]=Ge,n[m+12>>2]=c,n[m+24>>2]=0;break}}else Ge=B+M|0,n[k+4>>2]=Ge|3,Ge=k+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1;while(0);return Ge=k+8|0,C=Lt,Ge|0}else G=M}else G=M;else G=-1;while(0);if(c=n[2785]|0,c>>>0>=G>>>0)return l=c-G|0,s=n[2788]|0,l>>>0>15?(Ge=s+G|0,n[2788]=Ge,n[2785]=l,n[Ge+4>>2]=l|1,n[Ge+l>>2]=l,n[s+4>>2]=G|3):(n[2785]=0,n[2788]=0,n[s+4>>2]=c|3,Ge=s+c+4|0,n[Ge>>2]=n[Ge>>2]|1),Ge=s+8|0,C=Lt,Ge|0;if(B=n[2786]|0,B>>>0>G>>>0)return lt=B-G|0,n[2786]=lt,Ge=n[2789]|0,Ue=Ge+G|0,n[2789]=Ue,n[Ue+4>>2]=lt|1,n[Ge+4>>2]=G|3,Ge=Ge+8|0,C=Lt,Ge|0;if(n[2901]|0?s=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,s=se&-16^1431655768,n[se>>2]=s,n[2901]=s,s=4096),k=G+48|0,Q=G+47|0,m=s+Q|0,d=0-s|0,M=m&d,M>>>0<=G>>>0||(s=n[2893]|0,s|0&&(O=n[2891]|0,se=O+M|0,se>>>0<=O>>>0|se>>>0>s>>>0)))return Ge=0,C=Lt,Ge|0;e:do if(n[2894]&4)l=0,Ue=133;else{c=n[2789]|0;t:do if(c){for(f=11580;s=n[f>>2]|0,!(s>>>0<=c>>>0&&(Qe=f+4|0,(s+(n[Qe>>2]|0)|0)>>>0>c>>>0));)if(s=n[f+8>>2]|0,s)f=s;else{Ue=118;break t}if(l=m-B&d,l>>>0<2147483647)if(s=Qp(l|0)|0,(s|0)==((n[f>>2]|0)+(n[Qe>>2]|0)|0)){if((s|0)!=-1){B=l,m=s,Ue=135;break e}}else f=s,Ue=126;else l=0}else Ue=118;while(0);do if((Ue|0)==118)if(c=Qp(0)|0,(c|0)!=-1&&(l=c,qe=n[2902]|0,Me=qe+-1|0,l=((Me&l|0)==0?0:(Me+l&0-qe)-l|0)+M|0,qe=n[2891]|0,Me=l+qe|0,l>>>0>G>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Me>>>0<=qe>>>0|Me>>>0>Qe>>>0){l=0;break}if(s=Qp(l|0)|0,(s|0)==(c|0)){B=l,m=c,Ue=135;break e}else f=s,Ue=126}else l=0;while(0);do if((Ue|0)==126){if(c=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(f|0)!=-1)))if((f|0)==-1){l=0;break}else{B=l,m=f,Ue=135;break e}if(s=n[2903]|0,s=Q-l+s&0-s,s>>>0>=2147483647){B=l,m=f,Ue=135;break e}if((Qp(s|0)|0)==-1){Qp(c|0)|0,l=0;break}else{B=s+l|0,m=f,Ue=135;break e}}while(0);n[2894]=n[2894]|4,Ue=133}while(0);if((Ue|0)==133&&M>>>0<2147483647&&(lt=Qp(M|0)|0,Qe=Qp(0)|0,et=Qe-lt|0,Xe=et>>>0>(G+40|0)>>>0,!((lt|0)==-1|Xe^1|lt>>>0>>0&((lt|0)!=-1&(Qe|0)!=-1)^1))&&(B=Xe?et:l,m=lt,Ue=135),(Ue|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),Q=n[2789]|0;do if(Q){for(l=11580;;){if(s=n[l>>2]|0,c=l+4|0,f=n[c>>2]|0,(m|0)==(s+f|0)){Ue=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((Ue|0)==145&&(n[l+12>>2]&8|0)==0&&Q>>>0>>0&Q>>>0>=s>>>0){n[c>>2]=f+B,Ge=Q+8|0,Ge=(Ge&7|0)==0?0:0-Ge&7,Ue=Q+Ge|0,Ge=(n[2786]|0)+(B-Ge)|0,n[2789]=Ue,n[2786]=Ge,n[Ue+4>>2]=Ge|1,n[Ue+Ge+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),c=m+B|0,l=11580;;){if((n[l>>2]|0)==(c|0)){Ue=153;break}if(s=n[l+8>>2]|0,s)l=s;else break}if((Ue|0)==153&&(n[l+12>>2]&8|0)==0){n[l>>2]=m,O=l+4|0,n[O>>2]=(n[O>>2]|0)+B,O=m+8|0,O=m+((O&7|0)==0?0:0-O&7)|0,l=c+8|0,l=c+((l&7|0)==0?0:0-l&7)|0,M=O+G|0,k=l-O-G|0,n[O+4>>2]=G|3;do if((l|0)!=(Q|0)){if((l|0)==(n[2788]|0)){Ge=(n[2785]|0)+k|0,n[2785]=Ge,n[2788]=M,n[M+4>>2]=Ge|1,n[M+Ge>>2]=Ge;break}if(s=n[l+4>>2]|0,(s&3|0)==1){B=s&-8,f=s>>>3;e:do if(s>>>0<256)if(s=n[l+8>>2]|0,c=n[l+12>>2]|0,(c|0)==(s|0)){n[2783]=n[2783]&~(1<>2]=c,n[c+8>>2]=s;break}else{m=n[l+24>>2]|0,s=n[l+12>>2]|0;do if((s|0)==(l|0)){if(f=l+16|0,c=f+4|0,s=n[c>>2]|0,!s)if(s=n[f>>2]|0,s)c=f;else{s=0;break}for(;;){if(f=s+20|0,d=n[f>>2]|0,d|0){s=d,c=f;continue}if(f=s+16|0,d=n[f>>2]|0,d)s=d,c=f;else break}n[c>>2]=0}else Ge=n[l+8>>2]|0,n[Ge+12>>2]=s,n[s+8>>2]=Ge;while(0);if(!m)break;c=n[l+28>>2]|0,f=11436+(c<<2)|0;do if((l|0)!=(n[f>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=s,!s)break e}else{if(n[f>>2]=s,s|0)break;n[2784]=n[2784]&~(1<>2]=m,c=l+16|0,f=n[c>>2]|0,f|0&&(n[s+16>>2]=f,n[f+24>>2]=s),c=n[c+4>>2]|0,!c)break;n[s+20>>2]=c,n[c+24>>2]=s}while(0);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){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=c;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}Ue=(l+1048320|0)>>>16&8,Ge=l<>>16&4,Ge=Ge<>>16&2,l=14-(lt|Ue|l)+(Ge<>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(0);if(f=11436+(l<<2)|0,n[M+28>>2]=l,s=M+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[2784]|0,c=1<>2]=M,n[M+24>>2]=f,n[M+12>>2]=M,n[M+8>>2]=M;break}for(s=d<<((l|0)==31?0:25-(l>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){Ue=194;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=193;break}}if((Ue|0)==193){n[f>>2]=M,n[M+24>>2]=c,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((Ue|0)==194){Ue=c+8|0,Ge=n[Ue>>2]|0,n[Ge+12>>2]=M,n[Ue>>2]=M,n[M+8>>2]=Ge,n[M+12>>2]=c,n[M+24>>2]=0;break}}else Ge=(n[2786]|0)+k|0,n[2786]=Ge,n[2789]=M,n[M+4>>2]=Ge|1;while(0);return Ge=O+8|0,C=Lt,Ge|0}for(l=11580;s=n[l>>2]|0,!(s>>>0<=Q>>>0&&(Ge=s+(n[l+4>>2]|0)|0,Ge>>>0>Q>>>0));)l=n[l+8>>2]|0;d=Ge+-47|0,s=d+8|0,s=d+((s&7|0)==0?0:0-s&7)|0,d=Q+16|0,s=s>>>0>>0?Q:s,l=s+8|0,c=m+8|0,c=(c&7|0)==0?0:0-c&7,Ue=m+c|0,c=B+-40-c|0,n[2789]=Ue,n[2786]=c,n[Ue+4>>2]=c|1,n[Ue+c+4>>2]=40,n[2790]=n[2905],c=s+4|0,n[c>>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=s+24|0;do Ue=l,l=l+4|0,n[l>>2]=7;while((Ue+8|0)>>>0>>0);if((s|0)!=(Q|0)){if(m=s-Q|0,n[c>>2]=n[c>>2]&-2,n[Q+4>>2]=m|1,n[s>>2]=m,l=m>>>3,m>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=Q,n[l+12>>2]=Q,n[Q+8>>2]=l,n[Q+12>>2]=c;break}if(l=m>>>8,l?m>>>0>16777215?c=31:(Ue=(l+1048320|0)>>>16&8,Ge=l<>>16&4,Ge=Ge<>>16&2,c=14-(lt|Ue|c)+(Ge<>>15)|0,c=m>>>(c+7|0)&1|c<<1):c=0,f=11436+(c<<2)|0,n[Q+28>>2]=c,n[Q+20>>2]=0,n[d>>2]=0,l=n[2784]|0,s=1<>2]=Q,n[Q+24>>2]=f,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}for(s=m<<((c|0)==31?0:25-(c>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(m|0)){Ue=216;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=215;break}}if((Ue|0)==215){n[f>>2]=Q,n[Q+24>>2]=c,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}else if((Ue|0)==216){Ue=c+8|0,Ge=n[Ue>>2]|0,n[Ge+12>>2]=Q,n[Ue>>2]=Q,n[Q+8>>2]=Ge,n[Q+12>>2]=c,n[Q+24>>2]=0;break}}}else{Ge=n[2787]|0,(Ge|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 Ge=11172+(l<<1<<2)|0,n[Ge+12>>2]=Ge,n[Ge+8>>2]=Ge,l=l+1|0;while((l|0)!=32);Ge=m+8|0,Ge=(Ge&7|0)==0?0:0-Ge&7,Ue=m+Ge|0,Ge=B+-40-Ge|0,n[2789]=Ue,n[2786]=Ge,n[Ue+4>>2]=Ge|1,n[Ue+Ge+4>>2]=40,n[2790]=n[2905]}while(0);if(l=n[2786]|0,l>>>0>G>>>0)return lt=l-G|0,n[2786]=lt,Ge=n[2789]|0,Ue=Ge+G|0,n[2789]=Ue,n[Ue+4>>2]=lt|1,n[Ge+4>>2]=G|3,Ge=Ge+8|0,C=Lt,Ge|0}return n[(Vm()|0)>>2]=12,Ge=0,C=Lt,Ge|0}function hD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(!!s){c=s+-8|0,d=n[2787]|0,s=n[s+-4>>2]|0,l=s&-8,Q=c+l|0;do if(s&1)k=c,B=c;else{if(f=n[c>>2]|0,!(s&3)||(B=c+(0-f)|0,m=f+l|0,B>>>0>>0))return;if((B|0)==(n[2788]|0)){if(s=Q+4|0,l=n[s>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[s>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(c=f>>>3,f>>>0<256)if(s=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(s|0)){n[2783]=n[2783]&~(1<>2]=l,n[l+8>>2]=s,k=B,l=m;break}d=n[B+24>>2]|0,s=n[B+12>>2]|0;do if((s|0)==(B|0)){if(c=B+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{s=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=s,n[s+8>>2]=k;while(0);if(d){if(l=n[B+28>>2]|0,c=11436+(l<<2)|0,(B|0)==(n[c>>2]|0)){if(n[c>>2]=s,!s){n[2784]=n[2784]&~(1<>2]|0)!=(B|0)&1)<<2)>>2]=s,!s){k=B,l=m;break}n[s+24>>2]=d,l=B+16|0,c=n[l>>2]|0,c|0&&(n[s+16>>2]=c,n[c+24>>2]=s),l=n[l+4>>2]|0,l?(n[s+20>>2]=l,n[l+24>>2]=s,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(0);if(!(B>>>0>=Q>>>0)&&(s=Q+4|0,f=n[s>>2]|0,!!(f&1))){if(f&2)n[s>>2]=f&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(s=n[2788]|0,(Q|0)==(n[2789]|0)){if(Q=(n[2786]|0)+l|0,n[2786]=Q,n[2789]=k,n[k+4>>2]=Q|1,(k|0)!=(s|0))return;n[2788]=0,n[2785]=0;return}if((Q|0)==(s|0)){Q=(n[2785]|0)+l|0,n[2785]=Q,n[2788]=B,n[k+4>>2]=Q|1,n[B+Q>>2]=Q;return}d=(f&-8)+l|0,c=f>>>3;do if(f>>>0<256)if(l=n[Q+8>>2]|0,s=n[Q+12>>2]|0,(s|0)==(l|0)){n[2783]=n[2783]&~(1<>2]=s,n[s+8>>2]=l;break}else{m=n[Q+24>>2]|0,s=n[Q+12>>2]|0;do if((s|0)==(Q|0)){if(c=Q+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{c=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0,c=s}else c=n[Q+8>>2]|0,n[c+12>>2]=s,n[s+8>>2]=c,c=s;while(0);if(m|0){if(s=n[Q+28>>2]|0,l=11436+(s<<2)|0,(Q|0)==(n[l>>2]|0)){if(n[l>>2]=c,!c){n[2784]=n[2784]&~(1<>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=m,s=Q+16|0,l=n[s>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),s=n[s+4>>2]|0,s|0&&(n[c+20>>2]=s,n[s+24>>2]=c)}}while(0);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(s=d>>>3,d>>>0<256){c=11172+(s<<1<<2)|0,l=n[2783]|0,s=1<>2]|0):(n[2783]=l|s,s=c,l=c+8|0),n[l>>2]=k,n[s+12>>2]=k,n[k+8>>2]=s,n[k+12>>2]=c;return}s=d>>>8,s?d>>>0>16777215?s=31:(B=(s+1048320|0)>>>16&8,Q=s<>>16&4,Q=Q<>>16&2,s=14-(m|B|s)+(Q<>>15)|0,s=d>>>(s+7|0)&1|s<<1):s=0,f=11436+(s<<2)|0,n[k+28>>2]=s,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,c=1<>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){s=73;break}if(f=c+16+(l>>>31<<2)|0,s=n[f>>2]|0,s)l=l<<1,c=s;else{s=72;break}}if((s|0)==72){n[f>>2]=k,n[k+24>>2]=c,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((s|0)==73){B=c+8|0,Q=n[B>>2]|0,n[Q+12>>2]=k,n[B>>2]=k,n[k+8>>2]=Q,n[k+12>>2]=c,n[k+24>>2]=0;break}}else n[2784]=l|c,n[f>>2]=k,n[k+24>>2]=f,n[k+12>>2]=k,n[k+8>>2]=k;while(0);if(Q=(n[2791]|0)+-1|0,n[2791]=Q,!Q)s=11588;else return;for(;s=n[s>>2]|0,s;)s=s+8|0;n[2791]=-1}}}function DUe(){return 11628}function SUe(s){s=s|0;var l=0,c=0;return l=C,C=C+16|0,c=l,n[c>>2]=xUe(n[s+60>>2]|0)|0,s=gD(hc(6,c|0)|0)|0,C=l,s|0}function r7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0;G=C,C=C+48|0,M=G+16|0,m=G,d=G+32|0,k=s+28|0,f=n[k>>2]|0,n[d>>2]=f,Q=s+20|0,f=(n[Q>>2]|0)-f|0,n[d+4>>2]=f,n[d+8>>2]=l,n[d+12>>2]=c,f=f+c|0,B=s+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=gD(Li(146,m|0)|0)|0;e:do if((f|0)!=(m|0)){for(l=2;!((m|0)<0);)if(f=f-m|0,qe=n[d+4>>2]|0,se=m>>>0>qe>>>0,d=se?d+8|0:d,l=(se<<31>>31)+l|0,qe=m-(se?qe:0)|0,n[d>>2]=(n[d>>2]|0)+qe,se=d+4|0,n[se>>2]=(n[se>>2]|0)-qe,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=gD(Li(146,M|0)|0)|0,(f|0)==(m|0)){O=3;break e}n[s+16>>2]=0,n[k>>2]=0,n[Q>>2]=0,n[s>>2]=n[s>>2]|32,(l|0)==2?c=0:c=c-(n[d+4>>2]|0)|0}else O=3;while(0);return(O|0)==3&&(qe=n[s+44>>2]|0,n[s+16>>2]=qe+(n[s+48>>2]|0),n[k>>2]=qe,n[Q>>2]=qe),C=G,c|0}function PUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return d=C,C=C+32|0,m=d,f=d+20|0,n[m>>2]=n[s+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=f,n[m+16>>2]=c,(gD(sa(140,m|0)|0)|0)<0?(n[f>>2]=-1,s=-1):s=n[f>>2]|0,C=d,s|0}function gD(s){return s=s|0,s>>>0>4294963200&&(n[(Vm()|0)>>2]=0-s,s=-1),s|0}function Vm(){return(bUe()|0)+64|0}function bUe(){return SR()|0}function SR(){return 2084}function xUe(s){return s=s|0,s|0}function kUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return d=C,C=C+32|0,f=d,n[s+36>>2]=1,(n[s>>2]&64|0)==0&&(n[f>>2]=n[s+60>>2],n[f+4>>2]=21523,n[f+8>>2]=d+16,fu(54,f|0)|0)&&(o[s+75>>0]=-1),f=r7(s,l,c)|0,C=d,f|0}function n7(s,l){s=s|0,l=l|0;var c=0,f=0;if(c=o[s>>0]|0,f=o[l>>0]|0,c<<24>>24==0||c<<24>>24!=f<<24>>24)s=f;else{do s=s+1|0,l=l+1|0,c=o[s>>0]|0,f=o[l>>0]|0;while(!(c<<24>>24==0||c<<24>>24!=f<<24>>24));s=f}return(c&255)-(s&255)|0}function QUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;e:do if(!c)s=0;else{for(;f=o[s>>0]|0,d=o[l>>0]|0,f<<24>>24==d<<24>>24;)if(c=c+-1|0,c)s=s+1|0,l=l+1|0;else{s=0;break e}s=(f&255)-(d&255)|0}while(0);return s|0}function i7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0;Qe=C,C=C+224|0,O=Qe+120|0,G=Qe+80|0,qe=Qe,Me=Qe+136|0,f=G,d=f+40|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(d|0));return n[O>>2]=n[c>>2],(PR(0,l,O,qe,G)|0)<0?c=-1:((n[s+76>>2]|0)>-1?se=FUe(s)|0:se=0,c=n[s>>2]|0,M=c&32,(o[s+74>>0]|0)<1&&(n[s>>2]=c&-33),f=s+48|0,n[f>>2]|0?c=PR(s,l,O,qe,G)|0:(d=s+44|0,m=n[d>>2]|0,n[d>>2]=Me,B=s+28|0,n[B>>2]=Me,k=s+20|0,n[k>>2]=Me,n[f>>2]=80,Q=s+16|0,n[Q>>2]=Me+80,c=PR(s,l,O,qe,G)|0,m&&(ED[n[s+36>>2]&7](s,0,0)|0,c=(n[k>>2]|0)==0?-1:c,n[d>>2]=m,n[f>>2]=0,n[Q>>2]=0,n[B>>2]=0,n[k>>2]=0)),f=n[s>>2]|0,n[s>>2]=f|M,se|0&&RUe(s),c=(f&32|0)==0?c:-1),C=Qe,c|0}function PR(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,Ge=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0;ir=C,C=C+64|0,or=ir+16|0,Xt=ir,Lt=ir+24|0,Sr=ir+8|0,Nr=ir+20|0,n[or>>2]=l,lt=(s|0)!=0,Ue=Lt+40|0,Ge=Ue,Lt=Lt+39|0,Mr=Sr+4|0,B=0,m=0,O=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Vm()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(0);if(B=o[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:}et=k+1|0,n[or>>2]=et,B=o[et>>0]|0,k=et}t:do if((Xe|0)==9)for(;;){if(Xe=0,(o[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[or>>2]=k,(o[k>>0]|0)==37)Xe=9;else break}while(0);if(B=B-l|0,lt&&ss(s,l,B),B|0){l=k;continue}Q=k+1|0,B=(o[Q>>0]|0)+-48|0,B>>>0<10?(et=(o[k+2>>0]|0)==36,Qe=et?B:-1,O=et?1:O,Q=et?k+3|0:Q):Qe=-1,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,G=B;;){if(B=1<>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;G=B}else M=0;while(0);if(B<<24>>24==42){if(k=Q+1|0,B=(o[k>>0]|0)+-48|0,B>>>0<10&&(o[Q+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[f+((o[k>>0]|0)+-48<<3)>>2]|0,O=1,Q=Q+3|0;else{if(O|0){m=-1;break}lt?(O=(n[c>>2]|0)+(4-1)&~(4-1),B=n[O>>2]|0,n[c>>2]=O+4,O=0,Q=k):(B=0,O=0,Q=k)}n[or>>2]=Q,et=(B|0)<0,B=et?0-B|0:B,M=et?M|8192:M}else{if(B=s7(or)|0,(B|0)<0){m=-1;break}Q=n[or>>2]|0}do if((o[Q>>0]|0)==46){if((o[Q+1>>0]|0)!=42){n[or>>2]=Q+1,k=s7(or)|0,Q=n[or>>2]|0;break}if(G=Q+2|0,k=(o[G>>0]|0)+-48|0,k>>>0<10&&(o[Q+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[f+((o[G>>0]|0)+-48<<3)>>2]|0,Q=Q+4|0,n[or>>2]=Q;break}if(O|0){m=-1;break e}lt?(et=(n[c>>2]|0)+(4-1)&~(4-1),k=n[et>>2]|0,n[c>>2]=et+4):k=0,n[or>>2]=G,Q=G}else k=-1;while(0);for(Me=0;;){if(((o[Q>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(et=Q+1|0,n[or>>2]=et,G=o[(o[Q>>0]|0)+-65+(5178+(Me*58|0))>>0]|0,se=G&255,(se+-1|0)>>>0<8)Me=se,Q=et;else break}if(!(G<<24>>24)){m=-1;break}qe=(Qe|0)>-1;do if(G<<24>>24==19)if(qe){m=-1;break e}else Xe=49;else{if(qe){n[d+(Qe<<2)>>2]=se,qe=f+(Qe<<3)|0,Qe=n[qe+4>>2]|0,Xe=Xt,n[Xe>>2]=n[qe>>2],n[Xe+4>>2]=Qe,Xe=49;break}if(!lt){m=0;break e}o7(Xt,se,c)}while(0);if((Xe|0)==49&&(Xe=0,!lt)){B=0,l=et;continue}Q=o[Q>>0]|0,Q=(Me|0)!=0&(Q&15|0)==3?Q&-33:Q,qe=M&-65537,Qe=(M&8192|0)==0?M:qe;t:do switch(Q|0){case 110:switch((Me&255)<<24>>24){case 0:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 1:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 2:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}case 3:{a[n[Xt>>2]>>1]=m,B=0,l=et;continue e}case 4:{o[n[Xt>>2]>>0]=m,B=0,l=et;continue e}case 6:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 7:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}default:{B=0,l=et;continue e}}case 112:{Q=120,k=k>>>0>8?k:8,l=Qe|8,Xe=61;break}case 88:case 120:{l=Qe,Xe=61;break}case 111:{Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,se=NUe(l,Q,Ue)|0,qe=Ge-se|0,M=0,G=5642,k=(Qe&8|0)==0|(k|0)>(qe|0)?k:qe+1|0,qe=Qe,Xe=67;break}case 105:case 100:if(Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,(Q|0)<0){l=dD(0,0,l|0,Q|0)|0,Q=Se,M=Xt,n[M>>2]=l,n[M+4>>2]=Q,M=1,G=5642,Xe=66;break t}else{M=(Qe&2049|0)!=0&1,G=(Qe&2048|0)==0?(Qe&1|0)==0?5642:5644:5643,Xe=66;break t}case 117:{Q=Xt,M=0,G=5642,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,Xe=66;break}case 99:{o[Lt>>0]=n[Xt>>2],l=Lt,M=0,G=5642,se=Ue,Q=1,k=qe;break}case 109:{Q=LUe(n[(Vm()|0)>>2]|0)|0,Xe=71;break}case 115:{Q=n[Xt>>2]|0,Q=Q|0?Q:5652,Xe=71;break}case 67:{n[Sr>>2]=n[Xt>>2],n[Mr>>2]=0,n[Xt>>2]=Sr,se=-1,Q=Sr,Xe=75;break}case 83:{l=n[Xt>>2]|0,k?(se=k,Q=l,Xe=75):(Bs(s,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=MUe(s,+E[Xt>>3],B,k,Qe,Q)|0,l=et;continue e}default:M=0,G=5642,se=Ue,Q=k,k=Qe}while(0);t:do if((Xe|0)==61)Qe=Xt,Me=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,se=TUe(Me,Qe,Ue,Q&32)|0,G=(l&8|0)==0|(Me|0)==0&(Qe|0)==0,M=G?0:2,G=G?5642:5642+(Q>>4)|0,qe=l,l=Me,Q=Qe,Xe=67;else if((Xe|0)==66)se=Jm(l,Q,Ue)|0,qe=Qe,Xe=67;else if((Xe|0)==71)Xe=0,Qe=OUe(Q,0,k)|0,Me=(Qe|0)==0,l=Q,M=0,G=5642,se=Me?Q+k|0:Qe,Q=Me?k:Qe-Q|0,k=qe;else if((Xe|0)==75){for(Xe=0,G=Q,l=0,k=0;M=n[G>>2]|0,!(!M||(k=a7(Nr,M)|0,(k|0)<0|k>>>0>(se-l|0)>>>0));)if(l=k+l|0,se>>>0>l>>>0)G=G+4|0;else break;if((k|0)<0){m=-1;break e}if(Bs(s,32,B,l,Qe),!l)l=0,Xe=84;else for(M=0;;){if(k=n[Q>>2]|0,!k){Xe=84;break t}if(k=a7(Nr,k)|0,M=k+M|0,(M|0)>(l|0)){Xe=84;break t}if(ss(s,Nr,k),M>>>0>=l>>>0){Xe=84;break}else Q=Q+4|0}}while(0);if((Xe|0)==67)Xe=0,Q=(l|0)!=0|(Q|0)!=0,Qe=(k|0)!=0|Q,Q=((Q^1)&1)+(Ge-se)|0,l=Qe?se:Ue,se=Ue,Q=Qe?(k|0)>(Q|0)?k:Q:k,k=(k|0)>-1?qe&-65537:qe;else if((Xe|0)==84){Xe=0,Bs(s,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=et;continue}Me=se-l|0,qe=(Q|0)<(Me|0)?Me:Q,Qe=qe+M|0,B=(B|0)<(Qe|0)?Qe:B,Bs(s,32,B,Qe,k),ss(s,G,M),Bs(s,48,B,Qe,k^65536),Bs(s,48,qe,Me,0),ss(s,l,Me),Bs(s,32,B,Qe,k^8192),l=et}e:do if((Xe|0)==87&&!s)if(!O)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(o7(f+(m<<3)|0,l,c),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(0);return C=ir,m|0}function FUe(s){return s=s|0,0}function RUe(s){s=s|0}function ss(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]&32||KUe(l,c,s)|0}function s7(s){s=s|0;var l=0,c=0,f=0;if(c=n[s>>2]|0,f=(o[c>>0]|0)+-48|0,f>>>0<10){l=0;do l=f+(l*10|0)|0,c=c+1|0,n[s>>2]=c,f=(o[c>>0]|0)+-48|0;while(f>>>0<10)}else l=0;return l|0}function o7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,n[s>>2]=l;break e}case 10:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=0;break e}case 12:{f=(n[c>>2]|0)+(8-1)&~(8-1),l=f,d=n[l>>2]|0,l=n[l+4>>2]|0,n[c>>2]=f+8,f=s,n[f>>2]=d,n[f+4>>2]=l;break e}case 13:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&65535)<<16>>16,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 14:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&65535,n[d+4>>2]=0;break e}case 15:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&255)<<24>>24,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 16:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&255,n[d+4>>2]=0;break e}case 17:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}case 18:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}default:break e}while(0);while(0)}function TUe(s,l,c,f){if(s=s|0,l=l|0,c=c|0,f=f|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=u[5694+(s&15)>>0]|0|f,s=mD(s|0,l|0,4)|0,l=Se;while(!((s|0)==0&(l|0)==0));return c|0}function NUe(s,l,c){if(s=s|0,l=l|0,c=c|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=s&7|48,s=mD(s|0,l|0,3)|0,l=Se;while(!((s|0)==0&(l|0)==0));return c|0}function Jm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if(l>>>0>0|(l|0)==0&s>>>0>4294967295){for(;f=QR(s|0,l|0,10,0)|0,c=c+-1|0,o[c>>0]=f&255|48,f=s,s=kR(s|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&f>>>0>4294967295;)l=Se;l=s}else l=s;if(l)for(;c=c+-1|0,o[c>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return c|0}function LUe(s){return s=s|0,GUe(s,n[(jUe()|0)+188>>2]|0)|0}function OUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;m=l&255,f=(c|0)!=0;e:do if(f&(s&3|0)!=0)for(d=l&255;;){if((o[s>>0]|0)==d<<24>>24){B=6;break e}if(s=s+1|0,c=c+-1|0,f=(c|0)!=0,!(f&(s&3|0)!=0)){B=5;break}}else B=5;while(0);(B|0)==5&&(f?B=6:c=0);e:do if((B|0)==6&&(d=l&255,(o[s>>0]|0)!=d<<24>>24)){f=je(m,16843009)|0;t:do if(c>>>0>3){for(;m=n[s>>2]^f,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(s=s+4|0,c=c+-4|0,c>>>0<=3){B=11;break t}}else B=11;while(0);if((B|0)==11&&!c){c=0;break}for(;;){if((o[s>>0]|0)==d<<24>>24)break e;if(s=s+1|0,c=c+-1|0,!c){c=0;break}}}while(0);return(c|0?s:0)|0}function Bs(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0;if(B=C,C=C+256|0,m=B,(c|0)>(f|0)&(d&73728|0)==0){if(d=c-f|0,Xm(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=c-f|0;do ss(s,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}ss(s,m,d)}C=B}function a7(s,l){return s=s|0,l=l|0,s?s=_Ue(s,l,0)|0:s=0,s|0}function MUe(s,l,c,f,d,m){s=s|0,l=+l,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,Ge=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0;xn=C,C=C+560|0,Q=xn+8|0,et=xn,ir=xn+524|0,Nr=ir,M=xn+512|0,n[et>>2]=0,Sr=M+12|0,l7(l)|0,(Se|0)<0?(l=-l,or=1,Mr=5659):(or=(d&2049|0)!=0&1,Mr=(d&2048|0)==0?(d&1|0)==0?5660:5665:5662),l7(l)|0,Xt=Se&2146435072;do if(Xt>>>0<2146435072|(Xt|0)==2146435072&0<0){if(qe=+UUe(l,et)*2,B=qe!=0,B&&(n[et>>2]=(n[et>>2]|0)+-1),lt=m|32,(lt|0)==97){Me=m&32,se=(Me|0)==0?Mr:Mr+9|0,G=or|2,B=12-f|0;do if(f>>>0>11|(B|0)==0)l=qe;else{l=8;do B=B+-1|0,l=l*16;while((B|0)!=0);if((o[se>>0]|0)==45){l=-(l+(-qe-l));break}else{l=qe+l-l;break}}while(0);k=n[et>>2]|0,B=(k|0)<0?0-k|0:k,B=Jm(B,((B|0)<0)<<31>>31,Sr)|0,(B|0)==(Sr|0)&&(B=M+11|0,o[B>>0]=48),o[B+-1>>0]=(k>>31&2)+43,O=B+-2|0,o[O>>0]=m+15,M=(f|0)<1,Q=(d&8|0)==0,B=ir;do Xt=~~l,k=B+1|0,o[B>>0]=u[5694+Xt>>0]|Me,l=(l-+(Xt|0))*16,(k-Nr|0)==1&&!(Q&(M&l==0))?(o[k>>0]=46,B=B+2|0):B=k;while(l!=0);Xt=B-Nr|0,Nr=Sr-O|0,Sr=(f|0)!=0&(Xt+-2|0)<(f|0)?f+2|0:Xt,B=Nr+G+Sr|0,Bs(s,32,c,B,d),ss(s,se,G),Bs(s,48,c,B,d^65536),ss(s,ir,Xt),Bs(s,48,Sr-Xt|0,0,0),ss(s,O,Nr),Bs(s,32,c,B,d^8192);break}k=(f|0)<0?6:f,B?(B=(n[et>>2]|0)+-28|0,n[et>>2]=B,l=qe*268435456):(l=qe,B=n[et>>2]|0),Xt=(B|0)<0?Q:Q+288|0,Q=Xt;do Ge=~~l>>>0,n[Q>>2]=Ge,Q=Q+4|0,l=(l-+(Ge>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=Xt,G=Q;;){if(O=(B|0)<29?B:29,B=G+-4|0,B>>>0>=M>>>0){Q=0;do Ue=h7(n[B>>2]|0,0,O|0)|0,Ue=xR(Ue|0,Se|0,Q|0,0)|0,Ge=Se,Xe=QR(Ue|0,Ge|0,1e9,0)|0,n[B>>2]=Xe,Q=kR(Ue|0,Ge|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);Q&&(M=M+-4|0,n[M>>2]=Q)}for(Q=G;!(Q>>>0<=M>>>0);)if(B=Q+-4|0,!(n[B>>2]|0))Q=B;else break;if(B=(n[et>>2]|0)-O|0,n[et>>2]=B,(B|0)>0)G=Q;else break}else M=Xt;if((B|0)<0){f=((k+25|0)/9|0)+1|0,Qe=(lt|0)==102;do{if(Me=0-B|0,Me=(Me|0)<9?Me:9,M>>>0>>0){O=(1<>>Me,se=0,B=M;do Ge=n[B>>2]|0,n[B>>2]=(Ge>>>Me)+se,se=je(Ge&O,G)|0,B=B+4|0;while(B>>>0>>0);B=(n[M>>2]|0)==0?M+4|0:M,se?(n[Q>>2]=se,M=B,B=Q+4|0):(M=B,B=Q)}else M=(n[M>>2]|0)==0?M+4|0:M,B=Q;Q=Qe?Xt:M,Q=(B-Q>>2|0)>(f|0)?Q+(f<<2)|0:B,B=(n[et>>2]|0)+Me|0,n[et>>2]=B}while((B|0)<0);B=M,f=Q}else B=M,f=Q;if(Ge=Xt,B>>>0>>0){if(Q=(Ge-B>>2)*9|0,O=n[B>>2]|0,O>>>0>=10){M=10;do M=M*10|0,Q=Q+1|0;while(O>>>0>=M>>>0)}}else Q=0;if(Qe=(lt|0)==103,Xe=(k|0)!=0,M=k-((lt|0)!=102?Q:0)+((Xe&Qe)<<31>>31)|0,(M|0)<(((f-Ge>>2)*9|0)+-9|0)){if(M=M+9216|0,Me=Xt+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){O=10;do O=O*10|0,M=M+1|0;while((M|0)!=9)}else O=10;if(G=n[Me>>2]|0,se=(G>>>0)%(O>>>0)|0,M=(Me+4|0)==(f|0),M&(se|0)==0)M=Me;else if(qe=(((G>>>0)/(O>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,Ue=(O|0)/2|0,l=se>>>0>>0?.5:M&(se|0)==(Ue|0)?1:1.5,or&&(Ue=(o[Mr>>0]|0)==45,l=Ue?-l:l,qe=Ue?-qe:qe),M=G-se|0,n[Me>>2]=M,qe+l!=qe){if(Ue=M+O|0,n[Me>>2]=Ue,Ue>>>0>999999999)for(Q=Me;M=Q+-4|0,n[Q>>2]=0,M>>>0>>0&&(B=B+-4|0,n[B>>2]=0),Ue=(n[M>>2]|0)+1|0,n[M>>2]=Ue,Ue>>>0>999999999;)Q=M;else M=Me;if(Q=(Ge-B>>2)*9|0,G=n[B>>2]|0,G>>>0>=10){O=10;do O=O*10|0,Q=Q+1|0;while(G>>>0>=O>>>0)}}else M=Me;M=M+4|0,M=f>>>0>M>>>0?M:f,Ue=B}else M=f,Ue=B;for(lt=M;;){if(lt>>>0<=Ue>>>0){et=0;break}if(B=lt+-4|0,!(n[B>>2]|0))lt=B;else{et=1;break}}f=0-Q|0;do if(Qe)if(B=((Xe^1)&1)+k|0,(B|0)>(Q|0)&(Q|0)>-5?(O=m+-1|0,k=B+-1-Q|0):(O=m+-2|0,k=B+-1|0),B=d&8,B)Me=B;else{if(et&&(Lt=n[lt+-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=((lt-Ge>>2)*9|0)+-9|0,(O|32|0)==102){Me=B-M|0,Me=(Me|0)>0?Me:0,k=(k|0)<(Me|0)?k:Me,Me=0;break}else{Me=B+Q-M|0,Me=(Me|0)>0?Me:0,k=(k|0)<(Me|0)?k:Me,Me=0;break}}else O=m,Me=d&8;while(0);if(Qe=k|Me,G=(Qe|0)!=0&1,se=(O|32|0)==102,se)Xe=0,B=(Q|0)>0?Q:0;else{if(B=(Q|0)<0?f:Q,B=Jm(B,((B|0)<0)<<31>>31,Sr)|0,M=Sr,(M-B|0)<2)do B=B+-1|0,o[B>>0]=48;while((M-B|0)<2);o[B+-1>>0]=(Q>>31&2)+43,B=B+-2|0,o[B>>0]=O,Xe=B,B=M-B|0}if(B=or+1+k+G+B|0,Bs(s,32,c,B,d),ss(s,Mr,or),Bs(s,48,c,B,d^65536),se){O=Ue>>>0>Xt>>>0?Xt:Ue,Me=ir+9|0,G=Me,se=ir+8|0,M=O;do{if(Q=Jm(n[M>>2]|0,0,Me)|0,(M|0)==(O|0))(Q|0)==(Me|0)&&(o[se>>0]=48,Q=se);else if(Q>>>0>ir>>>0){Xm(ir|0,48,Q-Nr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}ss(s,Q,G-Q|0),M=M+4|0}while(M>>>0<=Xt>>>0);if(Qe|0&&ss(s,5710,1),M>>>0>>0&(k|0)>0)for(;;){if(Q=Jm(n[M>>2]|0,0,Me)|0,Q>>>0>ir>>>0){Xm(ir|0,48,Q-Nr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}if(ss(s,Q,(k|0)<9?k:9),M=M+4|0,Q=k+-9|0,M>>>0>>0&(k|0)>9)k=Q;else{k=Q;break}}Bs(s,48,k+9|0,9,0)}else{if(Qe=et?lt:Ue+4|0,(k|0)>-1){et=ir+9|0,Me=(Me|0)==0,f=et,G=0-Nr|0,se=ir+8|0,O=Ue;do{Q=Jm(n[O>>2]|0,0,et)|0,(Q|0)==(et|0)&&(o[se>>0]=48,Q=se);do if((O|0)==(Ue|0)){if(M=Q+1|0,ss(s,Q,1),Me&(k|0)<1){Q=M;break}ss(s,5710,1),Q=M}else{if(Q>>>0<=ir>>>0)break;Xm(ir|0,48,Q+G|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}while(0);Nr=f-Q|0,ss(s,Q,(k|0)>(Nr|0)?Nr:k),k=k-Nr|0,O=O+4|0}while(O>>>0>>0&(k|0)>-1)}Bs(s,48,k+18|0,18,0),ss(s,Xe,Sr-Xe|0)}Bs(s,32,c,B,d^8192)}else ir=(m&32|0)!=0,B=or+3|0,Bs(s,32,c,B,d&-65537),ss(s,Mr,or),ss(s,l!=l|!1?ir?5686:5690:ir?5678:5682,3),Bs(s,32,c,B,d^8192);while(0);return C=xn,((B|0)<(c|0)?c:B)|0}function l7(s){s=+s;var l=0;return E[v>>3]=s,l=n[v>>2]|0,Se=n[v+4>>2]|0,l|0}function UUe(s,l){return s=+s,l=l|0,+ +c7(s,l)}function c7(s,l){s=+s,l=l|0;var c=0,f=0,d=0;switch(E[v>>3]=s,c=n[v>>2]|0,f=n[v+4>>2]|0,d=mD(c|0,f|0,52)|0,d&2047){case 0:{s!=0?(s=+c7(s*18446744073709552e3,l),c=(n[l>>2]|0)+-64|0):c=0,n[l>>2]=c;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[v>>2]=c,n[v+4>>2]=f&-2146435073|1071644672,s=+E[v>>3]}return+s}function _Ue(s,l,c){s=s|0,l=l|0,c=c|0;do if(s){if(l>>>0<128){o[s>>0]=l,s=1;break}if(!(n[n[(HUe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){o[s>>0]=l,s=1;break}else{n[(Vm()|0)>>2]=84,s=-1;break}if(l>>>0<2048){o[s>>0]=l>>>6|192,o[s+1>>0]=l&63|128,s=2;break}if(l>>>0<55296|(l&-8192|0)==57344){o[s>>0]=l>>>12|224,o[s+1>>0]=l>>>6&63|128,o[s+2>>0]=l&63|128,s=3;break}if((l+-65536|0)>>>0<1048576){o[s>>0]=l>>>18|240,o[s+1>>0]=l>>>12&63|128,o[s+2>>0]=l>>>6&63|128,o[s+3>>0]=l&63|128,s=4;break}else{n[(Vm()|0)>>2]=84,s=-1;break}}else s=1;while(0);return s|0}function HUe(){return SR()|0}function jUe(){return SR()|0}function GUe(s,l){s=s|0,l=l|0;var c=0,f=0;for(f=0;;){if((u[5712+f>>0]|0)==(s|0)){s=2;break}if(c=f+1|0,(c|0)==87){c=5800,f=87,s=5;break}else f=c}if((s|0)==2&&(f?(c=5800,s=5):c=5800),(s|0)==5)for(;;){do s=c,c=c+1|0;while((o[s>>0]|0)!=0);if(f=f+-1|0,f)s=5;else break}return qUe(c,n[l+20>>2]|0)|0}function qUe(s,l){return s=s|0,l=l|0,YUe(s,l)|0}function YUe(s,l){return s=s|0,l=l|0,l?l=WUe(n[l>>2]|0,n[l+4>>2]|0,s)|0:l=0,(l|0?l:s)|0}function WUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0;se=(n[s>>2]|0)+1794895138|0,m=Rg(n[s+8>>2]|0,se)|0,f=Rg(n[s+12>>2]|0,se)|0,d=Rg(n[s+16>>2]|0,se)|0;e:do if(m>>>0>>2>>>0&&(G=l-(m<<2)|0,f>>>0>>0&d>>>0>>0)&&((d|f)&3|0)==0){for(G=f>>>2,O=d>>>2,M=0;;){if(k=m>>>1,Q=M+k|0,B=Q<<1,d=B+G|0,f=Rg(n[s+(d<<2)>>2]|0,se)|0,d=Rg(n[s+(d+1<<2)>>2]|0,se)|0,!(d>>>0>>0&f>>>0<(l-d|0)>>>0)){f=0;break e}if(o[s+(d+f)>>0]|0){f=0;break e}if(f=n7(c,s+d|0)|0,!f)break;if(f=(f|0)<0,(m|0)==1){f=0;break e}else M=f?M:Q,m=f?k:m-k|0}f=B+O|0,d=Rg(n[s+(f<<2)>>2]|0,se)|0,f=Rg(n[s+(f+1<<2)>>2]|0,se)|0,f>>>0>>0&d>>>0<(l-f|0)>>>0?f=(o[s+(f+d)>>0]|0)==0?s+f|0:0:f=0}else f=0;while(0);return f|0}function Rg(s,l){s=s|0,l=l|0;var c=0;return c=m7(s|0)|0,((l|0)==0?s:c)|0}function KUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=c+16|0,d=n[f>>2]|0,d?m=5:VUe(c)|0?f=0:(d=n[f>>2]|0,m=5);e:do if((m|0)==5){if(k=c+20|0,B=n[k>>2]|0,f=B,(d-B|0)>>>0>>0){f=ED[n[c+36>>2]&7](c,s,l)|0;break}t:do if((o[c+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=s;break t}if(d=B+-1|0,(o[s+d>>0]|0)==10)break;B=d}if(f=ED[n[c+36>>2]&7](c,s,B)|0,f>>>0>>0)break e;m=B,d=s+B|0,l=l-B|0,f=n[k>>2]|0}else m=0,d=s;while(0);Dr(f|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,f=m+l|0}while(0);return f|0}function VUe(s){s=s|0;var l=0,c=0;return l=s+74|0,c=o[l>>0]|0,o[l>>0]=c+255|c,l=n[s>>2]|0,l&8?(n[s>>2]=l|32,s=-1):(n[s+8>>2]=0,n[s+4>>2]=0,c=n[s+44>>2]|0,n[s+28>>2]=c,n[s+20>>2]=c,n[s+16>>2]=c+(n[s+48>>2]|0),s=0),s|0}function _n(s,l){s=y(s),l=y(l);var c=0,f=0;c=u7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=u7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?l:s;break}else{s=s>2]=s,n[v>>2]|0|0}function Tg(s,l){s=y(s),l=y(l);var c=0,f=0;c=A7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=A7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?s:l;break}else{s=s>2]=s,n[v>>2]|0|0}function bR(s,l){s=y(s),l=y(l);var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;m=(h[v>>2]=s,n[v>>2]|0),k=(h[v>>2]=l,n[v>>2]|0),c=m>>>23&255,B=k>>>23&255,Q=m&-2147483648,d=k<<1;e:do if((d|0)!=0&&!((c|0)==255|((JUe(l)|0)&2147483647)>>>0>2139095040)){if(f=m<<1,f>>>0<=d>>>0)return l=y(s*y(0)),y((f|0)==(d|0)?l:s);if(c)f=m&8388607|8388608;else{if(c=m<<9,(c|0)>-1){f=c,c=0;do c=c+-1|0,f=f<<1;while((f|0)>-1)}else c=0;f=m<<1-c}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=f-k|0,m=(d|0)>-1;t:do if((c|0)>(B|0)){for(;;){if(m)if(d)f=d;else break;if(f=f<<1,c=c+-1|0,d=f-k|0,m=(d|0)>-1,(c|0)<=(B|0))break t}l=y(s*y(0));break e}while(0);if(m)if(d)f=d;else{l=y(s*y(0));break}if(f>>>0<8388608)do f=f<<1,c=c+-1|0;while(f>>>0<8388608);(c|0)>0?c=f+-8388608|c<<23:c=f>>>(1-c|0),l=(n[v>>2]=c|Q,y(h[v>>2]))}else M=3;while(0);return(M|0)==3&&(l=y(s*l),l=y(l/l)),y(l)}function JUe(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function zUe(s,l){return s=s|0,l=l|0,i7(n[582]|0,s,l)|0}function zr(s){s=s|0,Rt()}function zm(s){s=s|0}function XUe(s,l){return s=s|0,l=l|0,0}function ZUe(s){return s=s|0,(f7(s+4|0)|0)==-1?(tf[n[(n[s>>2]|0)+8>>2]&127](s),s=1):s=0,s|0}function f7(s){s=s|0;var l=0;return l=n[s>>2]|0,n[s>>2]=l+-1,l+-1|0}function kp(s){s=s|0,ZUe(s)|0&&$Ue(s)}function $Ue(s){s=s|0;var l=0;l=s+8|0,(n[l>>2]|0)!=0&&(f7(l)|0)!=-1||tf[n[(n[s>>2]|0)+16>>2]&127](s)}function Kt(s){s=s|0;var l=0;for(l=(s|0)==0?1:s;s=pD(l)|0,!(s|0);){if(s=t3e()|0,!s){s=0;break}P7[s&0]()}return s|0}function p7(s){return s=s|0,Kt(s)|0}function gt(s){s=s|0,hD(s)}function e3e(s){s=s|0,(o[s+11>>0]|0)<0&>(n[s>>2]|0)}function t3e(){var s=0;return s=n[2923]|0,n[2923]=s+0,s|0}function r3e(){}function dD(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,f=l-f-(c>>>0>s>>>0|0)>>>0,Se=f,s-c>>>0|0|0}function xR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,c=s+c>>>0,Se=l+f+(c>>>0>>0|0)>>>0,c|0|0}function Xm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(m=s+c|0,l=l&255,(c|0)>=67){for(;s&3;)o[s>>0]=l,s=s+1|0;for(f=m&-4|0,d=f-64|0,B=l|l<<8|l<<16|l<<24;(s|0)<=(d|0);)n[s>>2]=B,n[s+4>>2]=B,n[s+8>>2]=B,n[s+12>>2]=B,n[s+16>>2]=B,n[s+20>>2]=B,n[s+24>>2]=B,n[s+28>>2]=B,n[s+32>>2]=B,n[s+36>>2]=B,n[s+40>>2]=B,n[s+44>>2]=B,n[s+48>>2]=B,n[s+52>>2]=B,n[s+56>>2]=B,n[s+60>>2]=B,s=s+64|0;for(;(s|0)<(f|0);)n[s>>2]=B,s=s+4|0}for(;(s|0)<(m|0);)o[s>>0]=l,s=s+1|0;return m-c|0}function h7(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Se=l<>>32-c,s<>>c,s>>>c|(l&(1<>>c-32|0)}function Dr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;if((c|0)>=8192)return Ac(s|0,l|0,c|0)|0;if(m=s|0,d=s+c|0,(s&3)==(l&3)){for(;s&3;){if(!c)return m|0;o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0,c=c-1|0}for(c=d&-4|0,f=c-64|0;(s|0)<=(f|0);)n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2],n[s+16>>2]=n[l+16>>2],n[s+20>>2]=n[l+20>>2],n[s+24>>2]=n[l+24>>2],n[s+28>>2]=n[l+28>>2],n[s+32>>2]=n[l+32>>2],n[s+36>>2]=n[l+36>>2],n[s+40>>2]=n[l+40>>2],n[s+44>>2]=n[l+44>>2],n[s+48>>2]=n[l+48>>2],n[s+52>>2]=n[l+52>>2],n[s+56>>2]=n[l+56>>2],n[s+60>>2]=n[l+60>>2],s=s+64|0,l=l+64|0;for(;(s|0)<(c|0);)n[s>>2]=n[l>>2],s=s+4|0,l=l+4|0}else for(c=d-4|0;(s|0)<(c|0);)o[s>>0]=o[l>>0]|0,o[s+1>>0]=o[l+1>>0]|0,o[s+2>>0]=o[l+2>>0]|0,o[s+3>>0]=o[l+3>>0]|0,s=s+4|0,l=l+4|0;for(;(s|0)<(d|0);)o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0;return m|0}function g7(s){s=s|0;var l=0;return l=o[L+(s&255)>>0]|0,(l|0)<8?l|0:(l=o[L+(s>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=o[L+(s>>16&255)>>0]|0,(l|0)<8?l+16|0:(o[L+(s>>>24)>>0]|0)+24|0))}function d7(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,G=0,se=0,qe=0,Me=0;if(O=s,Q=l,M=Q,B=c,se=f,k=se,!M)return m=(d|0)!=0,k?m?(n[d>>2]=s|0,n[d+4>>2]=l&0,se=0,d=0,Se=se,d|0):(se=0,d=0,Se=se,d|0):(m&&(n[d>>2]=(O>>>0)%(B>>>0),n[d+4>>2]=0),se=0,d=(O>>>0)/(B>>>0)>>>0,Se=se,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){G=m+1|0,k=31-m|0,l=m-31>>31,B=G,s=O>>>(G>>>0)&l|M<>>(G>>>0)&l,m=0,k=O<>2]=s|0,n[d+4>>2]=Q|l&0,se=0,d=0,Se=se,d|0):(se=0,d=0,Se=se,d|0)}if(m=B-1|0,m&B|0){k=(P(B|0)|0)+33-(P(M|0)|0)|0,Me=64-k|0,G=32-k|0,Q=G>>31,qe=k-32|0,l=qe>>31,B=k,s=G-1>>31&M>>>(qe>>>0)|(M<>>(k>>>0))&l,l=l&M>>>(k>>>0),m=O<>>(qe>>>0))&Q|O<>31;break}return d|0&&(n[d>>2]=m&O,n[d+4>>2]=0),(B|0)==1?(qe=Q|l&0,Me=s|0|0,Se=qe,Me|0):(Me=g7(B|0)|0,qe=M>>>(Me>>>0)|0,Me=M<<32-Me|O>>>(Me>>>0)|0,Se=qe,Me|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),qe=0,Me=(M>>>0)/(B>>>0)>>>0,Se=qe,Me|0;if(!O)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),qe=0,Me=(M>>>0)/(k>>>0)>>>0,Se=qe,Me|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=s|0,n[d+4>>2]=m&M|l&0),qe=0,Me=M>>>((g7(k|0)|0)>>>0),Se=qe,Me|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,s=M<>>(l>>>0),l=M>>>(l>>>0),m=0,k=O<>2]=s|0,n[d+4>>2]=Q|l&0,qe=0,Me=0,Se=qe,Me|0):(qe=0,Me=0,Se=qe,Me|0)}while(0);if(!B)M=k,Q=0,k=0;else{G=c|0|0,O=se|f&0,M=xR(G|0,O|0,-1,-1)|0,c=Se,Q=k,k=0;do f=Q,Q=m>>>31|Q<<1,m=k|m<<1,f=s<<1|f>>>31|0,se=s>>>31|l<<1|0,dD(M|0,c|0,f|0,se|0)|0,Me=Se,qe=Me>>31|((Me|0)<0?-1:0)<<1,k=qe&1,s=dD(f|0,se|0,qe&G|0,(((Me|0)<0?-1:0)>>31|((Me|0)<0?-1:0)<<1)&O|0)|0,l=Se,B=B-1|0;while((B|0)!=0);M=Q,Q=0}return B=0,d|0&&(n[d>>2]=s,n[d+4>>2]=l),qe=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|Q,Me=(m<<1|0>>>31)&-2|k,Se=qe,Me|0}function kR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,d7(s,l,c,f,0)|0}function Qp(s){s=s|0;var l=0,c=0;return c=s+15&-16|0,l=n[I>>2]|0,s=l+c|0,(c|0)>0&(s|0)<(l|0)|(s|0)<0?(ie()|0,DA(12),-1):(n[I>>2]=s,(s|0)>(Z()|0)&&(X()|0)==0?(n[I>>2]=l,DA(12),-1):l|0)}function Mw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if((l|0)<(s|0)&(s|0)<(l+c|0)){for(f=s,l=l+c|0,s=s+c|0;(c|0)>0;)s=s-1|0,l=l-1|0,c=c-1|0,o[s>>0]=o[l>>0]|0;s=f}else Dr(s,l,c)|0;return s|0}function QR(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;return m=C,C=C+16|0,d=m|0,d7(s,l,c,f,d)|0,C=m,Se=n[d+4>>2]|0,n[d>>2]|0|0}function m7(s){return s=s|0,(s&255)<<24|(s>>8&255)<<16|(s>>16&255)<<8|s>>>24|0}function n3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,y7[s&1](l|0,c|0,f|0,d|0,m|0)}function i3e(s,l,c){s=s|0,l=l|0,c=y(c),E7[s&1](l|0,y(c))}function s3e(s,l,c){s=s|0,l=l|0,c=+c,C7[s&31](l|0,+c)}function o3e(s,l,c,f){return s=s|0,l=l|0,c=y(c),f=y(f),y(w7[s&0](l|0,y(c),y(f)))}function a3e(s,l){s=s|0,l=l|0,tf[s&127](l|0)}function l3e(s,l,c){s=s|0,l=l|0,c=c|0,rf[s&31](l|0,c|0)}function c3e(s,l){return s=s|0,l=l|0,Lg[s&31](l|0)|0}function u3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,I7[s&1](l|0,+c,+f,d|0)}function A3e(s,l,c,f){s=s|0,l=l|0,c=+c,f=+f,Y3e[s&1](l|0,+c,+f)}function f3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,ED[s&7](l|0,c|0,f|0)|0}function p3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,+W3e[s&1](l|0,c|0,f|0)}function h3e(s,l){return s=s|0,l=l|0,+B7[s&15](l|0)}function g3e(s,l,c){return s=s|0,l=l|0,c=+c,K3e[s&1](l|0,+c)|0}function d3e(s,l,c){return s=s|0,l=l|0,c=c|0,RR[s&15](l|0,c|0)|0}function m3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=+f,d=+d,m=m|0,V3e[s&1](l|0,c|0,+f,+d,m|0)}function y3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,J3e[s&1](l|0,c|0,f|0,d|0,m|0,B|0)}function E3e(s,l,c){return s=s|0,l=l|0,c=c|0,+v7[s&7](l|0,c|0)}function C3e(s){return s=s|0,CD[s&7]()|0}function w3e(s,l,c,f,d,m){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,D7[s&1](l|0,c|0,f|0,d|0,m|0)|0}function I3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=+d,z3e[s&1](l|0,c|0,f|0,+d)}function B3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,S7[s&1](l|0,c|0,y(f),d|0,y(m),B|0)}function v3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,Hw[s&15](l|0,c|0,f|0)}function D3e(s){s=s|0,P7[s&0]()}function S3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,b7[s&15](l|0,c|0,+f)}function P3e(s,l,c){return s=s|0,l=+l,c=+c,X3e[s&1](+l,+c)|0}function b3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,TR[s&15](l|0,c|0,f|0,d|0)}function x3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(0)}function k3e(s,l){s=s|0,l=y(l),F(1)}function ma(s,l){s=s|0,l=+l,F(2)}function Q3e(s,l,c){return s=s|0,l=y(l),c=y(c),F(3),Ze}function Er(s){s=s|0,F(4)}function Uw(s,l){s=s|0,l=l|0,F(5)}function Ja(s){return s=s|0,F(6),0}function F3e(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,F(7)}function R3e(s,l,c){s=s|0,l=+l,c=+c,F(8)}function T3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(9),0}function N3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(10),0}function Ng(s){return s=s|0,F(11),0}function L3e(s,l){return s=s|0,l=+l,F(12),0}function _w(s,l){return s=s|0,l=l|0,F(13),0}function O3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,F(14)}function M3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,F(15)}function FR(s,l){return s=s|0,l=l|0,F(16),0}function U3e(){return F(17),0}function _3e(s,l,c,f,d){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(18),0}function H3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,F(19)}function j3e(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,F(20)}function yD(s,l,c){s=s|0,l=l|0,c=c|0,F(21)}function G3e(){F(22)}function Zm(s,l,c){s=s|0,l=l|0,c=+c,F(23)}function q3e(s,l){return s=+s,l=+l,F(24),0}function $m(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,F(25)}var y7=[x3e,_Le],E7=[k3e,fo],C7=[ma,xw,kw,EF,CF,Dl,Qw,wF,jm,bu,Rw,IF,$v,KA,eD,Gm,tD,rD,qm,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma],w7=[Q3e],tf=[Er,zm,CDe,wDe,IDe,Xbe,Zbe,$be,gNe,dNe,mNe,PLe,bLe,xLe,J4e,z4e,X4e,hs,Vv,Hm,WA,Fw,dve,mve,uDe,kDe,jDe,oSe,ISe,USe,rPe,mPe,FPe,VPe,ube,Sbe,jbe,dxe,Fxe,Vxe,uke,Ske,jke,aQe,IQe,LQe,ZQe,Pc,xFe,YFe,uRe,bRe,GRe,uTe,CTe,BTe,_Te,GTe,oNe,ENe,INe,UNe,nLe,i9,MOe,gMe,kMe,YMe,p4e,b4e,U4e,j4e,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er],rf=[Uw,fF,pF,bw,Pu,hF,gF,Bp,dF,mF,yF,Zv,VA,Ve,ft,Wt,vr,Pn,Fr,vF,nve,Sve,AQe,DQe,FRe,HOe,ALe,j5,Uw,Uw,Uw,Uw],Lg=[Ja,SUe,AF,D,Ae,De,vt,wt,xt,_r,di,po,eve,tve,yve,tFe,KRe,jNe,YOe,Wa,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja],I7=[F3e,Eve],Y3e=[R3e,cNe],ED=[T3e,r7,PUe,kUe,GSe,Cxe,RFe,JMe],W3e=[N3e,hbe],B7=[Ng,Yo,rt,bn,Cve,wve,Ive,Bve,vve,Dve,Ng,Ng,Ng,Ng,Ng,Ng],K3e=[L3e,mTe],RR=[_w,XUe,rve,hDe,uSe,sPe,CPe,Wbe,Lxe,_Qe,Wv,TMe,_w,_w,_w,_w],V3e=[O3e,WDe],J3e=[M3e,m4e],v7=[FR,ai,Pve,bve,xve,kbe,FR,FR],CD=[U3e,kve,Sw,ga,PTe,KTe,SNe,W4e],D7=[_3e,Cw],z3e=[H3e,hke],S7=[j3e,ive],Hw=[yD,T,is,tn,ho,SSe,NPe,kke,Wke,_m,cOe,EMe,F4e,yD,yD,yD],P7=[G3e],b7=[Zm,Jv,zv,Xv,YA,nD,BF,S,Zxe,JFe,pTe,Zm,Zm,Zm,Zm,Zm],X3e=[q3e,pNe],TR=[$m,ZPe,cFe,hRe,rTe,RTe,$Te,RNe,lLe,XOe,nUe,$m,$m,$m,$m,$m];return{_llvm_bswap_i32:m7,dynCall_idd:P3e,dynCall_i:C3e,_i64Subtract:dD,___udivdi3:kR,dynCall_vif:i3e,setThrew:hu,dynCall_viii:v3e,_bitshift64Lshr:mD,_bitshift64Shl:h7,dynCall_vi:a3e,dynCall_viiddi:m3e,dynCall_diii:p3e,dynCall_iii:d3e,_memset:Xm,_sbrk:Qp,_memcpy:Dr,__GLOBAL__sub_I_Yoga_cpp:Um,dynCall_vii:l3e,___uremdi3:QR,dynCall_vid:s3e,stackAlloc:lo,_nbind_init:hUe,getTempRet0:Ua,dynCall_di:h3e,dynCall_iid:g3e,setTempRet0:xA,_i64Add:xR,dynCall_fiff:o3e,dynCall_iiii:f3e,_emscripten_get_global_libc:DUe,dynCall_viid:S3e,dynCall_viiid:I3e,dynCall_viififi:B3e,dynCall_ii:c3e,__GLOBAL__sub_I_Binding_cc:kOe,dynCall_viiii:b3e,dynCall_iiiiii:w3e,stackSave:gc,dynCall_viiiii:n3e,__GLOBAL__sub_I_nbind_cc:Qve,dynCall_vidd:A3e,_free:hD,runPostSets:r3e,dynCall_viiiiii:y3e,establishStackSpace:ji,_memmove:Mw,stackRestore:pu,_malloc:pD,__GLOBAL__sub_I_common_cc:zNe,dynCall_viddi:u3e,dynCall_dii:E3e,dynCall_v:D3e}}(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 o(){for(var p=0;p<4-1;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];o();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(o){r=o(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 am=_((wKt,NEe)=>{"use strict";var qyt=REe(),Yyt=TEe(),x6=!1,k6=null;Yyt({},function(t,e){if(!x6){if(x6=!0,t)throw t;k6=e}});if(!x6)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");NEe.exports=qyt(k6.bind,k6.lib)});var F6=_((IKt,Q6)=>{"use strict";var LEe=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);Q6.exports=LEe;Q6.exports.default=LEe});var MEe=_((BKt,OEe)=>{"use strict";OEe.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 Kk=_((vKt,R6)=>{"use strict";var Wyt=OS(),Kyt=F6(),Vyt=MEe(),UEe=t=>{if(typeof t!="string"||t.length===0||(t=Wyt(t),t.length===0))return 0;t=t.replace(Vyt()," ");let e=0;for(let r=0;r=127&&o<=159||o>=768&&o<=879||(o>65535&&r++,e+=Kyt(o)?2:1)}return e};R6.exports=UEe;R6.exports.default=UEe});var N6=_((DKt,T6)=>{"use strict";var Jyt=Kk(),_Ee=t=>{let e=0;for(let r of t.split(` +`))e=Math.max(e,Jyt(r));return e};T6.exports=_Ee;T6.exports.default=_Ee});var HEe=_(cB=>{"use strict";var zyt=cB&&cB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cB,"__esModule",{value:!0});var Xyt=zyt(N6()),L6={};cB.default=t=>{if(t.length===0)return{width:0,height:0};if(L6[t])return L6[t];let e=Xyt.default(t),r=t.split(` +`).length;return L6[t]={width:e,height:r},{width:e,height:r}}});var jEe=_(uB=>{"use strict";var Zyt=uB&&uB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uB,"__esModule",{value:!0});var dn=Zyt(am()),$yt=(t,e)=>{"position"in e&&t.setPositionType(e.position==="absolute"?dn.default.POSITION_TYPE_ABSOLUTE:dn.default.POSITION_TYPE_RELATIVE)},eEt=(t,e)=>{"marginLeft"in e&&t.setMargin(dn.default.EDGE_START,e.marginLeft||0),"marginRight"in e&&t.setMargin(dn.default.EDGE_END,e.marginRight||0),"marginTop"in e&&t.setMargin(dn.default.EDGE_TOP,e.marginTop||0),"marginBottom"in e&&t.setMargin(dn.default.EDGE_BOTTOM,e.marginBottom||0)},tEt=(t,e)=>{"paddingLeft"in e&&t.setPadding(dn.default.EDGE_LEFT,e.paddingLeft||0),"paddingRight"in e&&t.setPadding(dn.default.EDGE_RIGHT,e.paddingRight||0),"paddingTop"in e&&t.setPadding(dn.default.EDGE_TOP,e.paddingTop||0),"paddingBottom"in e&&t.setPadding(dn.default.EDGE_BOTTOM,e.paddingBottom||0)},rEt=(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(dn.default.FLEX_DIRECTION_ROW),e.flexDirection==="row-reverse"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection==="column"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_COLUMN),e.flexDirection==="column-reverse"&&t.setFlexDirection(dn.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(dn.default.ALIGN_STRETCH),e.alignItems==="flex-start"&&t.setAlignItems(dn.default.ALIGN_FLEX_START),e.alignItems==="center"&&t.setAlignItems(dn.default.ALIGN_CENTER),e.alignItems==="flex-end"&&t.setAlignItems(dn.default.ALIGN_FLEX_END)),"alignSelf"in e&&((e.alignSelf==="auto"||!e.alignSelf)&&t.setAlignSelf(dn.default.ALIGN_AUTO),e.alignSelf==="flex-start"&&t.setAlignSelf(dn.default.ALIGN_FLEX_START),e.alignSelf==="center"&&t.setAlignSelf(dn.default.ALIGN_CENTER),e.alignSelf==="flex-end"&&t.setAlignSelf(dn.default.ALIGN_FLEX_END)),"justifyContent"in e&&((e.justifyContent==="flex-start"||!e.justifyContent)&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_START),e.justifyContent==="center"&&t.setJustifyContent(dn.default.JUSTIFY_CENTER),e.justifyContent==="flex-end"&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_END),e.justifyContent==="space-between"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent==="space-around"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_AROUND))},nEt=(t,e)=>{var r,o;"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((o=e.minHeight)!==null&&o!==void 0?o:0))},iEt=(t,e)=>{"display"in e&&t.setDisplay(e.display==="flex"?dn.default.DISPLAY_FLEX:dn.default.DISPLAY_NONE)},sEt=(t,e)=>{if("borderStyle"in e){let r=typeof e.borderStyle=="string"?1:0;t.setBorder(dn.default.EDGE_TOP,r),t.setBorder(dn.default.EDGE_BOTTOM,r),t.setBorder(dn.default.EDGE_LEFT,r),t.setBorder(dn.default.EDGE_RIGHT,r)}};uB.default=(t,e={})=>{$yt(t,e),eEt(t,e),tEt(t,e),rEt(t,e),nEt(t,e),iEt(t,e),sEt(t,e)}});var YEe=_((bKt,qEe)=>{"use strict";var AB=Kk(),oEt=OS(),aEt=DI(),M6=new Set(["\x1B","\x9B"]),lEt=39,GEe=t=>`${M6.values().next().value}[${t}m`,cEt=t=>t.split(" ").map(e=>AB(e)),O6=(t,e,r)=>{let o=[...e],a=!1,n=AB(oEt(t[t.length-1]));for(let[u,A]of o.entries()){let p=AB(A);if(n+p<=r?t[t.length-1]+=A:(t.push(A),n=0),M6.has(A))a=!0;else if(a&&A==="m"){a=!1;continue}a||(n+=p,n===r&&u0&&t.length>1&&(t[t.length-2]+=t.pop())},uEt=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(AB(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},AEt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let o="",a="",n,u=cEt(t),A=[""];for(let[p,h]of t.split(" ").entries()){r.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let E=AB(A[A.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(A.push(""),E=0),(E>0||r.trim===!1)&&(A[A.length-1]+=" ",E++)),r.hard&&u[p]>e){let I=e-E,v=1+Math.floor((u[p]-I-1)/e);Math.floor((u[p]-1)/e)e&&E>0&&u[p]>0){if(r.wordWrap===!1&&Ee&&r.wordWrap===!1){O6(A,h,e);continue}A[A.length-1]+=h}r.trim!==!1&&(A=A.map(uEt)),o=A.join(` +`);for(let[p,h]of[...o].entries()){if(a+=h,M6.has(h)){let I=parseFloat(/\d[^m]*/.exec(o.slice(p,p+4)));n=I===lEt?null:I}let E=aEt.codes.get(Number(n));n&&E&&(o[p+1]===` +`?a+=GEe(E):h===` +`&&(a+=GEe(n)))}return a};qEe.exports=(t,e,r)=>String(t).normalize().replace(/\r\n/g,` +`).split(` +`).map(o=>AEt(o,e,r)).join(` +`)});var VEe=_((xKt,KEe)=>{"use strict";var WEe="[\uD800-\uDBFF][\uDC00-\uDFFF]",fEt=t=>t&&t.exact?new RegExp(`^${WEe}$`):new RegExp(WEe,"g");KEe.exports=fEt});var U6=_((kKt,ZEe)=>{"use strict";var pEt=F6(),hEt=VEe(),JEe=DI(),XEe=["\x1B","\x9B"],Vk=t=>`${XEe[0]}[${t}m`,zEe=(t,e,r)=>{let o=[];t=[...t];for(let a of t){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let u=JEe.codes.get(parseInt(a,10));if(u){let A=t.indexOf(u.toString());A>=0?t.splice(A,1):o.push(Vk(e?u:n))}else if(e){o.push(Vk(0));break}else o.push(Vk(n))}if(e&&(o=o.filter((a,n)=>o.indexOf(a)===n),r!==void 0)){let a=Vk(JEe.codes.get(parseInt(r,10)));o=o.reduce((n,u)=>u===a?[u,...n]:[...n,u],[])}return o.join("")};ZEe.exports=(t,e,r)=>{let o=[...t.normalize()],a=[];r=typeof r=="number"?r:o.length;let n=!1,u,A=0,p="";for(let[h,E]of o.entries()){let I=!1;if(XEe.includes(E)){let v=/\d[^m]*/.exec(t.slice(h,h+18));u=v&&v.length>0?v[0]:void 0,Ae&&A<=r)p+=E;else if(A===e&&!n&&u!==void 0)p=zEe(a);else if(A>=r){p+=zEe(a,!0,u);break}}return p}});var eCe=_((QKt,$Ee)=>{"use strict";var E0=U6(),gEt=Kk();function Jk(t,e,r){if(t.charAt(e)===" ")return e;for(let o=1;o<=3;o++)if(r){if(t.charAt(e+o)===" ")return e+o}else if(t.charAt(e-o)===" ")return e-o;return e}$Ee.exports=(t,e,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:o,space:a,preferTruncationOnSpace:n}=r,u="\u2026",A=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 u;let p=gEt(t);if(p<=e)return t;if(o==="start"){if(n){let h=Jk(t,p-e+1,!0);return u+E0(t,h,p).trim()}return a===!0&&(u+=" ",A=2),u+E0(t,p-e+A,p)}if(o==="middle"){a===!0&&(u=" "+u+" ",A=3);let h=Math.floor(e/2);if(n){let E=Jk(t,h),I=Jk(t,p-(e-h)+1,!0);return E0(t,0,E)+u+E0(t,I,p).trim()}return E0(t,0,h)+u+E0(t,p-(e-h)+A,p)}if(o==="end"){if(n){let h=Jk(t,e-1);return E0(t,0,h)+u}return a===!0&&(u=" "+u,A=2),E0(t,0,e-A)+u}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${o}`)}});var H6=_(fB=>{"use strict";var tCe=fB&&fB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fB,"__esModule",{value:!0});var dEt=tCe(YEe()),mEt=tCe(eCe()),_6={};fB.default=(t,e,r)=>{let o=t+String(e)+String(r);if(_6[o])return _6[o];let a=t;if(r==="wrap"&&(a=dEt.default(t,e,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=mEt.default(t,e,{position:n})}return _6[o]=a,a}});var G6=_(j6=>{"use strict";Object.defineProperty(j6,"__esModule",{value:!0});var rCe=t=>{let e="";if(t.childNodes.length>0)for(let r of t.childNodes){let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=rCe(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o))),e+=o}return e};j6.default=rCe});var q6=_(pi=>{"use strict";var pB=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 yEt=pB(am()),nCe=pB(HEe()),EEt=pB(jEe()),CEt=pB(H6()),wEt=pB(G6());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:yEt.default.Node.create()};return t==="ink-text"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(IEt.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")&&zk(t)};pi.insertBeforeNode=(t,e,r)=>{var o,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&&((o=t.yogaNode)===null||o===void 0||o.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")&&zk(t)};pi.removeChildNode=(t,e)=>{var r,o;e.yogaNode&&((o=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||o===void 0||o.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")&&zk(t)};pi.setAttribute=(t,e,r)=>{t.attributes[e]=r};pi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&EEt.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 IEt=function(t,e){var r,o;let a=t.nodeName==="#text"?t.nodeValue:wEt.default(t),n=nCe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let u=(o=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&o!==void 0?o:"wrap",A=CEt.default(a,e,u);return nCe.default(A)},iCe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:iCe(t.parentNode)},zk=t=>{let e=iCe(t);e?.markDirty()};pi.setTextNodeValue=(t,e)=>{typeof e!="string"&&(e=String(e)),t.nodeValue=e,zk(t)}});var cCe=_(hB=>{"use strict";var lCe=hB&&hB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hB,"__esModule",{value:!0});var sCe=S6(),BEt=lCe(PEe()),oCe=lCe(am()),Oo=q6(),aCe=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};hB.default=BEt.default({schedulePassiveEffects:sCe.unstable_scheduleCallback,cancelPassiveEffects:sCe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},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,o=e==="ink-text"||e==="ink-virtual-text";return r===o?t:{isInsideText:o}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,o)=>{if(o.isInsideText&&t==="ink-box")throw new Error(" can\u2019t be nested inside component");let a=t==="ink-text"&&o.isInsideText?"ink-virtual-text":t,n=Oo.createNode(a);for(let[u,A]of Object.entries(e))u!=="children"&&(u==="style"?Oo.setStyle(n,A):u==="internal_transform"?n.internal_transform=A:u==="internal_static"?n.internal_static=!0:Oo.setAttribute(n,u,A));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string "${t}" must be rendered inside component`);return Oo.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{Oo.setTextNodeValue(t,"")},unhideTextInstance:(t,e)=>{Oo.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(oCe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(oCe.default.DISPLAY_FLEX)},appendInitialChild:Oo.appendChildNode,appendChild:Oo.appendChildNode,insertBefore:Oo.insertBeforeNode,finalizeInitialChildren:(t,e,r,o)=>(t.internal_static&&(o.isStaticDirty=!0,o.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:Oo.appendChildNode,insertInContainerBefore:Oo.insertBeforeNode,removeChildFromContainer:(t,e)=>{Oo.removeChildNode(t,e),aCe(e.yogaNode)},prepareUpdate:(t,e,r,o,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},u=Object.keys(o);for(let A of u)if(o[A]!==r[A]){if(A==="style"&&typeof o.style=="object"&&typeof r.style=="object"){let h=o.style,E=r.style,I=Object.keys(h);for(let v of I){if(v==="borderStyle"||v==="borderColor"){if(typeof n.style!="object"){let x={};n.style=x}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[v]!==E[v]){if(typeof n.style!="object"){let x={};n.style=x}n.style[v]=h[v]}}continue}n[A]=o[A]}return n},commitUpdate:(t,e)=>{for(let[r,o]of Object.entries(e))r!=="children"&&(r==="style"?Oo.setStyle(t,o):r==="internal_transform"?t.internal_transform=o:r==="internal_static"?t.internal_static=!0:Oo.setAttribute(t,r,o))},commitTextUpdate:(t,e,r)=>{Oo.setTextNodeValue(t,r)},removeChild:(t,e)=>{Oo.removeChildNode(t,e),aCe(e.yogaNode)}})});var ACe=_((LKt,uCe)=>{"use strict";uCe.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 o=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(o,r.indent.repeat(e))}});var fCe=_(gB=>{"use strict";var vEt=gB&&gB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gB,"__esModule",{value:!0});var Xk=vEt(am());gB.default=t=>t.getComputedWidth()-t.getComputedPadding(Xk.default.EDGE_LEFT)-t.getComputedPadding(Xk.default.EDGE_RIGHT)-t.getComputedBorder(Xk.default.EDGE_LEFT)-t.getComputedBorder(Xk.default.EDGE_RIGHT)});var pCe=_((MKt,DEt)=>{DEt.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 gCe=_((UKt,Y6)=>{"use strict";var hCe=pCe();Y6.exports=hCe;Y6.exports.default=hCe});var mCe=_((_Kt,dCe)=>{"use strict";var SEt=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u="";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},PEt=(t,e,r,o)=>{let a=0,n="";do{let u=t[o-1]==="\r";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\r +`:` +`)+r,a=o+1,o=t.indexOf(` +`,a)}while(o!==-1);return n+=t.substr(a),n};dCe.exports={stringReplaceAll:SEt,stringEncaseCRLFWithFirstIndex:PEt}});var ICe=_((HKt,wCe)=>{"use strict";var bEt=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,yCe=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,xEt=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,kEt=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,QEt=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function CCe(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)):QEt.get(t)||t}function FEt(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(xEt))r.push(a[2].replace(kEt,(A,p,h)=>p?CCe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function REt(t){yCe.lastIndex=0;let e=[],r;for(;(r=yCe.exec(t))!==null;){let o=r[1];if(r[2]){let a=FEt(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function ECe(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 o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}wCe.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(bEt,(n,u,A,p,h,E)=>{if(u)a.push(CCe(u));else if(p){let I=a.join("");a=[],o.push(r.length===0?I:ECe(t,r)(I)),r.push({inverse:A,styles:REt(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");o.push(ECe(t,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),o.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 o.join("")}});var rQ=_((jKt,bCe)=>{"use strict";var dB=DI(),{stdout:K6,stderr:V6}=dN(),{stringReplaceAll:TEt,stringEncaseCRLFWithFirstIndex:NEt}=mCe(),{isArray:Zk}=Array,vCe=["ansi","ansi","ansi256","ansi16m"],HC=Object.create(null),LEt=(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=K6?K6.level:0;t.level=e.level===void 0?r:e.level},J6=class{constructor(e){return DCe(e)}},DCe=t=>{let e={};return LEt(e,t),e.template=(...r)=>PCe(e.template,...r),Object.setPrototypeOf(e,$k.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=J6,e.template};function $k(t){return DCe(t)}for(let[t,e]of Object.entries(dB))HC[t]={get(){let r=eQ(this,z6(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};HC.visible={get(){let t=eQ(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var SCe=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of SCe)HC[t]={get(){let{level:e}=this;return function(...r){let o=z6(dB.color[vCe[e]][t](...r),dB.color.close,this._styler);return eQ(this,o,this._isEmpty)}}};for(let t of SCe){let e="bg"+t[0].toUpperCase()+t.slice(1);HC[e]={get(){let{level:r}=this;return function(...o){let a=z6(dB.bgColor[vCe[r]][t](...o),dB.bgColor.close,this._styler);return eQ(this,a,this._isEmpty)}}}}var OEt=Object.defineProperties(()=>{},{...HC,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),z6=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},eQ=(t,e,r)=>{let o=(...a)=>Zk(a[0])&&Zk(a[0].raw)?BCe(o,PCe(o,...a)):BCe(o,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(o,OEt),o._generator=t,o._styler=e,o._isEmpty=r,o},BCe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=TEt(e,r.close,r.open),r=r.parent;let n=e.indexOf(` +`);return n!==-1&&(e=NEt(e,a,o,n)),o+e+a},W6,PCe=(t,...e)=>{let[r]=e;if(!Zk(r)||!Zk(r.raw))return e.join(" ");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";var MEt=yB&&yB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yB,"__esModule",{value:!0});var mB=MEt(rQ()),UEt=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,_Et=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,nQ=(t,e)=>e==="foreground"?t:"bg"+t[0].toUpperCase()+t.slice(1);yB.default=(t,e,r)=>{if(!e)return t;if(e in mB.default){let a=nQ(e,r);return mB.default[a](t)}if(e.startsWith("#")){let a=nQ("hex",r);return mB.default[a](e)(t)}if(e.startsWith("ansi")){let a=_Et.exec(e);if(!a)return t;let n=nQ(a[1],r),u=Number(a[2]);return mB.default[n](u)(t)}if(e.startsWith("rgb")||e.startsWith("hsl")||e.startsWith("hsv")||e.startsWith("hwb")){let a=UEt.exec(e);if(!a)return t;let n=nQ(a[1],r),u=Number(a[2]),A=Number(a[3]),p=Number(a[4]);return mB.default[n](u,A,p)(t)}return t}});var kCe=_(EB=>{"use strict";var xCe=EB&&EB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(EB,"__esModule",{value:!0});var HEt=xCe(gCe()),Z6=xCe(X6());EB.default=(t,e,r,o)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),u=r.style.borderColor,A=HEt.default[r.style.borderStyle],p=Z6.default(A.topLeft+A.horizontal.repeat(a-2)+A.topRight,u,"foreground"),h=(Z6.default(A.vertical,u,"foreground")+` +`).repeat(n-2),E=Z6.default(A.bottomLeft+A.horizontal.repeat(a-2)+A.bottomRight,u,"foreground");o.write(t,e,p,{transformers:[]}),o.write(t,e+1,h,{transformers:[]}),o.write(t+a-1,e+1,h,{transformers:[]}),o.write(t,e+n-1,E,{transformers:[]})}}});var FCe=_(CB=>{"use strict";var lm=CB&&CB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CB,"__esModule",{value:!0});var jEt=lm(am()),GEt=lm(N6()),qEt=lm(ACe()),YEt=lm(H6()),WEt=lm(fCe()),KEt=lm(G6()),VEt=lm(kCe()),JEt=(t,e)=>{var r;let o=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(o){let a=o.getComputedLeft(),n=o.getComputedTop();e=` +`.repeat(n)+qEt.default(e,a)}return e},QCe=(t,e,r)=>{var o;let{offsetX:a=0,offsetY:n=0,transformers:u=[],skipStaticElements:A}=r;if(A&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===jEt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),I=u;if(typeof t.internal_transform=="function"&&(I=[t.internal_transform,...u]),t.nodeName==="ink-text"){let v=KEt.default(t);if(v.length>0){let x=GEt.default(v),C=WEt.default(p);if(x>C){let R=(o=t.style.textWrap)!==null&&o!==void 0?o:"wrap";v=YEt.default(v,C,R)}v=JEt(t,v),e.write(h,E,v,{transformers:I})}return}if(t.nodeName==="ink-box"&&VEt.default(h,E,t,e),t.nodeName==="ink-root"||t.nodeName==="ink-box")for(let v of t.childNodes)QCe(v,e,{offsetX:h,offsetY:E,transformers:I,skipStaticElements:A})}};CB.default=QCe});var TCe=_((WKt,RCe)=>{"use strict";RCe.exports=t=>{t=Object.assign({onlyFirst:!1},t);let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[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.onlyFirst?void 0:"g")}});var LCe=_((KKt,$6)=>{"use strict";var zEt=TCe(),NCe=t=>typeof t=="string"?t.replace(zEt(),""):t;$6.exports=NCe;$6.exports.default=NCe});var UCe=_((VKt,MCe)=>{"use strict";var OCe="[\uD800-\uDBFF][\uDC00-\uDFFF]";MCe.exports=t=>t&&t.exact?new RegExp(`^${OCe}$`):new RegExp(OCe,"g")});var HCe=_((JKt,ej)=>{"use strict";var XEt=LCe(),ZEt=UCe(),_Ce=t=>XEt(t).replace(ZEt()," ").length;ej.exports=_Ce;ej.exports.default=_Ce});var qCe=_(wB=>{"use strict";var GCe=wB&&wB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wB,"__esModule",{value:!0});var jCe=GCe(U6()),$Et=GCe(HCe()),tj=class{constructor(e){this.writes=[];let{width:r,height:o}=e;this.width=r,this.height=o}write(e,r,o,a){let{transformers:n}=a;!o||this.writes.push({x:e,y:r,text:o,transformers:n})}get(){let e=[];for(let o=0;oo.trimRight()).join(` +`),height:e.length}}};wB.default=tj});var KCe=_(IB=>{"use strict";var rj=IB&&IB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(IB,"__esModule",{value:!0});var eCt=rj(am()),YCe=rj(FCe()),WCe=rj(qCe());IB.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,eCt.default.DIRECTION_LTR);let o=new WCe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});YCe.default(t,o,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new WCe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),YCe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:u}=o.get();return{output:n,outputHeight:u,staticOutput:a?`${a.get().output} +`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var XCe=_((ZKt,zCe)=>{"use strict";var VCe=ve("stream"),JCe=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],nj={},tCt=t=>{let e=new VCe.PassThrough,r=new VCe.PassThrough;e.write=a=>t("stdout",a),r.write=a=>t("stderr",a);let o=new console.Console(e,r);for(let a of JCe)nj[a]=console[a],console[a]=o[a];return()=>{for(let a of JCe)console[a]=nj[a];nj={}}};zCe.exports=tCt});var sj=_(ij=>{"use strict";Object.defineProperty(ij,"__esModule",{value:!0});ij.default=new WeakMap});var aj=_(oj=>{"use strict";Object.defineProperty(oj,"__esModule",{value:!0});var rCt=on(),ZCe=rCt.createContext({exit:()=>{}});ZCe.displayName="InternalAppContext";oj.default=ZCe});var cj=_(lj=>{"use strict";Object.defineProperty(lj,"__esModule",{value:!0});var nCt=on(),$Ce=nCt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});$Ce.displayName="InternalStdinContext";lj.default=$Ce});var Aj=_(uj=>{"use strict";Object.defineProperty(uj,"__esModule",{value:!0});var iCt=on(),ewe=iCt.createContext({stdout:void 0,write:()=>{}});ewe.displayName="InternalStdoutContext";uj.default=ewe});var pj=_(fj=>{"use strict";Object.defineProperty(fj,"__esModule",{value:!0});var sCt=on(),twe=sCt.createContext({stderr:void 0,write:()=>{}});twe.displayName="InternalStderrContext";fj.default=twe});var iQ=_(hj=>{"use strict";Object.defineProperty(hj,"__esModule",{value:!0});var oCt=on(),rwe=oCt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});rwe.displayName="InternalFocusContext";hj.default=rwe});var iwe=_((sVt,nwe)=>{"use strict";var aCt=/[|\\{}()[\]^$+*?.-]/g;nwe.exports=t=>{if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(aCt,"\\$&")}});var lwe=_((oVt,awe)=>{"use strict";var lCt=iwe(),cCt=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",owe=[].concat(ve("module").builtinModules,"bootstrap_node","node").map(t=>new RegExp(`(?:\\((?:node:)?${t}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${t}(?:\\.js)?:\\d+:\\d+$)`));owe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var BB=class{constructor(e){e={ignoredPackages:[],...e},"internals"in e||(e.internals=BB.nodeInternals()),"cwd"in e||(e.cwd=cCt),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,uCt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...owe]}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 o=!1,a=null,n=[];return e.forEach(u=>{if(u=u.replace(/\\/g,"/"),this._internals.some(p=>p.test(u)))return;let A=/^\s*at /.test(u);o?u=u.trimEnd().replace(/^(\s+)at /,"$1"):(u=u.trim(),A&&(u=u.slice(3))),u=u.replace(`${this._cwd}/`,""),u&&(A?(a&&(n.push(a),a=null),n.push(u)):(o=!0,a=u))}),n.map(u=>`${r}${u} +`).join("")}captureString(e,r=this.captureString){typeof e=="function"&&(r=e,e=1/0);let{stackTraceLimit:o}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=o,this.clean(n)}capture(e,r=this.capture){typeof e=="function"&&(r=e,e=1/0);let{prepareStackTrace:o,stackTraceLimit:a}=Error;Error.prepareStackTrace=(A,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:u}=n;return Object.assign(Error,{prepareStackTrace:o,stackTraceLimit:a}),u}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let o={line:r.getLineNumber(),column:r.getColumnNumber()};swe(o,r.getFileName(),this._cwd),r.isConstructor()&&(o.constructor=!0),r.isEval()&&(o.evalOrigin=r.getEvalOrigin()),r.isNative()&&(o.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(o.type=a);let n=r.getFunctionName();n&&(o.function=n);let u=r.getMethodName();return u&&n!==u&&(o.method=u),o}parseLine(e){let r=e&&e.match(ACt);if(!r)return null;let o=r[1]==="new",a=r[2],n=r[3],u=r[4],A=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],I=r[9],v=r[10]==="native",x=r[11]===")",C,R={};if(E&&(R.line=Number(E)),I&&(R.column=Number(I)),x&&h){let L=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===")")L++;else if(h.charAt(U)==="("&&h.charAt(U-1)===" "&&(L--,L===-1&&h.charAt(U-1)===" ")){let J=h.slice(0,U-1);h=h.slice(U+1),a+=` (${J}`;break}}if(a){let L=a.match(fCt);L&&(a=L[1],C=L[2])}return swe(R,h,this._cwd),o&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=A,R.evalColumn=p,R.evalFile=u&&u.replace(/\\/g,"/")),v&&(R.native=!0),a&&(R.function=a),C&&a!==C&&(R.method=C),R}};function swe(t,e,r){e&&(e=e.replace(/\\/g,"/"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function uCt(t){if(t.length===0)return[];let e=t.map(r=>lCt(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${e.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var ACt=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),fCt=/^(.*?) \[as (.*?)\]$/;awe.exports=BB});var uwe=_((aVt,cwe)=>{"use strict";cwe.exports=(t,e)=>t.replace(/^\t+/gm,r=>" ".repeat(r.length*(e||2)))});var fwe=_((lVt,Awe)=>{"use strict";var pCt=uwe(),hCt=(t,e)=>{let r=[],o=t-e,a=t+e;for(let n=o;n<=a;n++)r.push(n);return r};Awe.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=pCt(t).split(/\r?\n/),!(e>t.length))return r={around:3,...r},hCt(e,r.around).filter(o=>t[o-1]!==void 0).map(o=>({line:o,value:t[o-1]}))}});var sQ=_(ru=>{"use strict";var gCt=ru&&ru.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),dCt=ru&&ru.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),mCt=ru&&ru.__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)&&gCt(e,t,r);return dCt(e,t),e},yCt=ru&&ru.__rest||function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,o=Object.getOwnPropertySymbols(t);a{var{children:r}=t,o=yCt(t,["children"]);let a=Object.assign(Object.assign({},o),{marginLeft:o.marginLeft||o.marginX||o.margin||0,marginRight:o.marginRight||o.marginX||o.margin||0,marginTop:o.marginTop||o.marginY||o.margin||0,marginBottom:o.marginBottom||o.marginY||o.margin||0,paddingLeft:o.paddingLeft||o.paddingX||o.padding||0,paddingRight:o.paddingRight||o.paddingX||o.padding||0,paddingTop:o.paddingTop||o.paddingY||o.padding||0,paddingBottom:o.paddingBottom||o.paddingY||o.padding||0});return pwe.default.createElement("ink-box",{ref:e,style:a},r)});gj.displayName="Box";gj.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};ru.default=gj});var yj=_(vB=>{"use strict";var dj=vB&&vB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vB,"__esModule",{value:!0});var ECt=dj(on()),jC=dj(rQ()),hwe=dj(X6()),mj=({color:t,backgroundColor:e,dimColor:r,bold:o,italic:a,underline:n,strikethrough:u,inverse:A,wrap:p,children:h})=>{if(h==null)return null;let E=I=>(r&&(I=jC.default.dim(I)),t&&(I=hwe.default(I,t,"foreground")),e&&(I=hwe.default(I,e,"background")),o&&(I=jC.default.bold(I)),a&&(I=jC.default.italic(I)),n&&(I=jC.default.underline(I)),u&&(I=jC.default.strikethrough(I)),A&&(I=jC.default.inverse(I)),I);return ECt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:E},h)};mj.displayName="Text";mj.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};vB.default=mj});var ywe=_(nu=>{"use strict";var CCt=nu&&nu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),wCt=nu&&nu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ICt=nu&&nu.__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)&&CCt(e,t,r);return wCt(e,t),e},DB=nu&&nu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nu,"__esModule",{value:!0});var gwe=ICt(ve("fs")),fs=DB(on()),dwe=DB(lwe()),BCt=DB(fwe()),Zf=DB(sQ()),hA=DB(yj()),mwe=new dwe.default({cwd:process.cwd(),internals:dwe.default.nodeInternals()}),vCt=({error:t})=>{let e=t.stack?t.stack.split(` +`).slice(1):void 0,r=e?mwe.parseLine(e[0]):void 0,o,a=0;if(r?.file&&r?.line&&gwe.existsSync(r.file)){let n=gwe.readFileSync(r.file,"utf8");if(o=BCt.default(n,r.line),o)for(let{line:u}of o)a=Math.max(a,String(u).length)}return fs.default.createElement(Zf.default,{flexDirection:"column",padding:1},fs.default.createElement(Zf.default,null,fs.default.createElement(hA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),fs.default.createElement(hA.default,null," ",t.message)),r&&fs.default.createElement(Zf.default,{marginTop:1},fs.default.createElement(hA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&o&&fs.default.createElement(Zf.default,{marginTop:1,flexDirection:"column"},o.map(({line:n,value:u})=>fs.default.createElement(Zf.default,{key:n},fs.default.createElement(Zf.default,{width:a+1},fs.default.createElement(hA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),fs.default.createElement(hA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+u)))),t.stack&&fs.default.createElement(Zf.default,{marginTop:1,flexDirection:"column"},t.stack.split(` +`).slice(1).map(n=>{let u=mwe.parseLine(n);return u?fs.default.createElement(Zf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},"- "),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},u.function),fs.default.createElement(hA.default,{dimColor:!0,color:"gray"}," ","(",u.file,":",u.line,":",u.column,")")):fs.default.createElement(Zf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},"- "),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},n))})))};nu.default=vCt});var Cwe=_(iu=>{"use strict";var DCt=iu&&iu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),SCt=iu&&iu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),PCt=iu&&iu.__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)&&DCt(e,t,r);return SCt(e,t),e},um=iu&&iu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iu,"__esModule",{value:!0});var cm=PCt(on()),Ewe=um(g6()),bCt=um(aj()),xCt=um(cj()),kCt=um(Aj()),QCt=um(pj()),FCt=um(iQ()),RCt=um(ywe()),TCt=" ",NCt="\x1B[Z",LCt="\x1B",oQ=class extends cm.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===LCt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===TCt&&this.focusNext(),e===NCt&&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.focusNext=()=>{this.setState(e=>{let r=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||r}})},this.focusPrevious=()=>{this.setState(e=>{let r=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||r}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(o=>{let a=o.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...o.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(o=>o.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r+1;o{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r-1;o>=0;o--)if(e.focusables[o].isActive)return e.focusables[o].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return cm.default.createElement(bCt.default.Provider,{value:{exit:this.handleExit}},cm.default.createElement(xCt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},cm.default.createElement(kCt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},cm.default.createElement(QCt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},cm.default.createElement(FCt.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}},this.state.error?cm.default.createElement(RCt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){Ewe.default.hide(this.props.stdout)}componentWillUnmount(){Ewe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};iu.default=oQ;oQ.displayName="InternalApp"});var Bwe=_(su=>{"use strict";var OCt=su&&su.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),MCt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),UCt=su&&su.__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)&&OCt(e,t,r);return MCt(e,t),e},ou=su&&su.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(su,"__esModule",{value:!0});var _Ct=ou(on()),wwe=lM(),HCt=ou(lEe()),jCt=ou(u6()),GCt=ou(hEe()),qCt=ou(dEe()),Ej=ou(cCe()),YCt=ou(KCe()),WCt=ou(h6()),KCt=ou(XCe()),VCt=UCt(q6()),JCt=ou(sj()),zCt=ou(Cwe()),GC=process.env.CI==="false"?!1:GCt.default,Iwe=()=>{},Cj=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:o,staticOutput:a}=YCt.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(GC){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),o>=this.options.stdout.rows){this.options.stdout.write(jCt.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},qCt.default(this),this.options=e,this.rootNode=VCt.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:wwe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=HCt.default.create(e.stdout),this.throttledLog=e.debug?this.log:wwe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=Ej.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=WCt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),GC||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){let r=_Ct.default.createElement(zCt.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);Ej.default.updateContainer(r,this.container,null,Iwe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(GC){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(GC){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(),GC?this.options.stdout.write(this.lastOutput+` +`):this.options.debug||this.log.done(),this.isUnmounted=!0,Ej.default.updateContainer(null,this.container,null,Iwe),JCt.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(){!GC&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=KCt.default((e,r)=>{e==="stdout"&&this.writeToStdout(r),e==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};su.default=Cj});var Dwe=_(SB=>{"use strict";var vwe=SB&&SB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(SB,"__esModule",{value:!0});var XCt=vwe(Bwe()),aQ=vwe(sj()),ZCt=ve("stream"),$Ct=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},ewt(e)),o=twt(r.stdout,()=>new XCt.default(r));return o.render(t),{rerender:o.render,unmount:()=>o.unmount(),waitUntilExit:o.waitUntilExit,cleanup:()=>aQ.default.delete(r.stdout),clear:o.clear}};SB.default=$Ct;var ewt=(t={})=>t instanceof ZCt.Stream?{stdout:t,stdin:process.stdin}:t,twt=(t,e)=>{let r;return aQ.default.has(t)?r=aQ.default.get(t):(r=e(),aQ.default.set(t,r)),r}});var Pwe=_($f=>{"use strict";var rwt=$f&&$f.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),nwt=$f&&$f.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),iwt=$f&&$f.__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)&&rwt(e,t,r);return nwt(e,t),e};Object.defineProperty($f,"__esModule",{value:!0});var PB=iwt(on()),Swe=t=>{let{items:e,children:r,style:o}=t,[a,n]=PB.useState(0),u=PB.useMemo(()=>e.slice(a),[e,a]);PB.useLayoutEffect(()=>{n(e.length)},[e.length]);let A=u.map((h,E)=>r(h,a+E)),p=PB.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},o),[o]);return PB.default.createElement("ink-box",{internal_static:!0,style:p},A)};Swe.displayName="Static";$f.default=Swe});var xwe=_(bB=>{"use strict";var swt=bB&&bB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bB,"__esModule",{value:!0});var owt=swt(on()),bwe=({children:t,transform:e})=>t==null?null:owt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:e},t);bwe.displayName="Transform";bB.default=bwe});var Qwe=_(xB=>{"use strict";var awt=xB&&xB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xB,"__esModule",{value:!0});var lwt=awt(on()),kwe=({count:t=1})=>lwt.default.createElement("ink-text",null,` +`.repeat(t));kwe.displayName="Newline";xB.default=kwe});var Twe=_(kB=>{"use strict";var Fwe=kB&&kB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kB,"__esModule",{value:!0});var cwt=Fwe(on()),uwt=Fwe(sQ()),Rwe=()=>cwt.default.createElement(uwt.default,{flexGrow:1});Rwe.displayName="Spacer";kB.default=Rwe});var lQ=_(QB=>{"use strict";var Awt=QB&&QB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(QB,"__esModule",{value:!0});var fwt=on(),pwt=Awt(cj()),hwt=()=>fwt.useContext(pwt.default);QB.default=hwt});var Lwe=_(FB=>{"use strict";var gwt=FB&&FB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(FB,"__esModule",{value:!0});var Nwe=on(),dwt=gwt(lQ()),mwt=(t,e={})=>{let{stdin:r,setRawMode:o,internal_exitOnCtrlC:a}=dwt.default();Nwe.useEffect(()=>{if(e.isActive!==!1)return o(!0),()=>{o(!1)}},[e.isActive,o]),Nwe.useEffect(()=>{if(e.isActive===!1)return;let n=u=>{let A=String(u),p={upArrow:A==="\x1B[A",downArrow:A==="\x1B[B",leftArrow:A==="\x1B[D",rightArrow:A==="\x1B[C",pageDown:A==="\x1B[6~",pageUp:A==="\x1B[5~",return:A==="\r",escape:A==="\x1B",ctrl:!1,shift:!1,tab:A===" "||A==="\x1B[Z",backspace:A==="\b",delete:A==="\x7F"||A==="\x1B[3~",meta:!1};A<=""&&!p.return&&(A=String.fromCharCode(A.charCodeAt(0)+"a".charCodeAt(0)-1),p.ctrl=!0),A.startsWith("\x1B")&&(A=A.slice(1),p.meta=!0);let h=A>="A"&&A<="Z",E=A>="\u0410"&&A<="\u042F";A.length===1&&(h||E)&&(p.shift=!0),p.tab&&A==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(A=""),(!(A==="c"&&p.ctrl)||!a)&&t(A,p)};return r?.on("data",n),()=>{r?.off("data",n)}},[e.isActive,r,a,t])};FB.default=mwt});var Owe=_(RB=>{"use strict";var ywt=RB&&RB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(RB,"__esModule",{value:!0});var Ewt=on(),Cwt=ywt(aj()),wwt=()=>Ewt.useContext(Cwt.default);RB.default=wwt});var Mwe=_(TB=>{"use strict";var Iwt=TB&&TB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TB,"__esModule",{value:!0});var Bwt=on(),vwt=Iwt(Aj()),Dwt=()=>Bwt.useContext(vwt.default);TB.default=Dwt});var Uwe=_(NB=>{"use strict";var Swt=NB&&NB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(NB,"__esModule",{value:!0});var Pwt=on(),bwt=Swt(pj()),xwt=()=>Pwt.useContext(bwt.default);NB.default=xwt});var Hwe=_(OB=>{"use strict";var _we=OB&&OB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(OB,"__esModule",{value:!0});var LB=on(),kwt=_we(iQ()),Qwt=_we(lQ()),Fwt=({isActive:t=!0,autoFocus:e=!1}={})=>{let{isRawModeSupported:r,setRawMode:o}=Qwt.default(),{activeId:a,add:n,remove:u,activate:A,deactivate:p}=LB.useContext(kwt.default),h=LB.useMemo(()=>Math.random().toString().slice(2,7),[]);return LB.useEffect(()=>(n(h,{autoFocus:e}),()=>{u(h)}),[h,e]),LB.useEffect(()=>{t?A(h):p(h)},[t,h]),LB.useEffect(()=>{if(!(!r||!t))return o(!0),()=>{o(!1)}},[t]),{isFocused:Boolean(h)&&a===h}};OB.default=Fwt});var jwe=_(MB=>{"use strict";var Rwt=MB&&MB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(MB,"__esModule",{value:!0});var Twt=on(),Nwt=Rwt(iQ()),Lwt=()=>{let t=Twt.useContext(Nwt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious}};MB.default=Lwt});var Gwe=_(wj=>{"use strict";Object.defineProperty(wj,"__esModule",{value:!0});wj.default=t=>{var e,r,o,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(o=t.yogaNode)===null||o===void 0?void 0:o.getComputedHeight())!==null&&a!==void 0?a:0}}});var ic=_(ro=>{"use strict";Object.defineProperty(ro,"__esModule",{value:!0});var Owt=Dwe();Object.defineProperty(ro,"render",{enumerable:!0,get:function(){return Owt.default}});var Mwt=sQ();Object.defineProperty(ro,"Box",{enumerable:!0,get:function(){return Mwt.default}});var Uwt=yj();Object.defineProperty(ro,"Text",{enumerable:!0,get:function(){return Uwt.default}});var _wt=Pwe();Object.defineProperty(ro,"Static",{enumerable:!0,get:function(){return _wt.default}});var Hwt=xwe();Object.defineProperty(ro,"Transform",{enumerable:!0,get:function(){return Hwt.default}});var jwt=Qwe();Object.defineProperty(ro,"Newline",{enumerable:!0,get:function(){return jwt.default}});var Gwt=Twe();Object.defineProperty(ro,"Spacer",{enumerable:!0,get:function(){return Gwt.default}});var qwt=Lwe();Object.defineProperty(ro,"useInput",{enumerable:!0,get:function(){return qwt.default}});var Ywt=Owe();Object.defineProperty(ro,"useApp",{enumerable:!0,get:function(){return Ywt.default}});var Wwt=lQ();Object.defineProperty(ro,"useStdin",{enumerable:!0,get:function(){return Wwt.default}});var Kwt=Mwe();Object.defineProperty(ro,"useStdout",{enumerable:!0,get:function(){return Kwt.default}});var Vwt=Uwe();Object.defineProperty(ro,"useStderr",{enumerable:!0,get:function(){return Vwt.default}});var Jwt=Hwe();Object.defineProperty(ro,"useFocus",{enumerable:!0,get:function(){return Jwt.default}});var zwt=jwe();Object.defineProperty(ro,"useFocusManager",{enumerable:!0,get:function(){return zwt.default}});var Xwt=Gwe();Object.defineProperty(ro,"measureElement",{enumerable:!0,get:function(){return Xwt.default}})});var Bj={};Vt(Bj,{Gem:()=>Ij});var qwe,Am,Ij,cQ=Et(()=>{qwe=$e(ic()),Am=$e(on()),Ij=(0,Am.memo)(({active:t})=>{let e=(0,Am.useMemo)(()=>t?"\u25C9":"\u25EF",[t]),r=(0,Am.useMemo)(()=>t?"green":"yellow",[t]);return Am.default.createElement(qwe.Text,{color:r},e)})});var Wwe={};Vt(Wwe,{useKeypress:()=>fm});function fm({active:t},e,r){let{stdin:o}=(0,Ywe.useStdin)(),a=(0,uQ.useCallback)((n,u)=>e(n,u),r);(0,uQ.useEffect)(()=>{if(!(!t||!o))return o.on("keypress",a),()=>{o.off("keypress",a)}},[t,a,o])}var Ywe,uQ,UB=Et(()=>{Ywe=$e(ic()),uQ=$e(on())});var Vwe={};Vt(Vwe,{FocusRequest:()=>Kwe,useFocusRequest:()=>vj});var Kwe,vj,Dj=Et(()=>{UB();Kwe=(r=>(r.BEFORE="before",r.AFTER="after",r))(Kwe||{}),vj=function({active:t},e,r){fm({active:t},(o,a)=>{a.name==="tab"&&(a.shift?e("before"):e("after"))},r)}});var Jwe={};Vt(Jwe,{useListInput:()=>_B});var _B,AQ=Et(()=>{UB();_B=function(t,e,{active:r,minus:o,plus:a,set:n,loop:u=!0}){fm({active:r},(A,p)=>{let h=e.indexOf(t);switch(p.name){case o:{let E=h-1;if(u){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(u){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,u])}});var fQ={};Vt(fQ,{ScrollableItems:()=>Zwt});var C0,La,Zwt,pQ=Et(()=>{C0=$e(ic()),La=$e(on());Dj();AQ();Zwt=({active:t=!0,children:e=[],radius:r=10,size:o=1,loop:a=!0,onFocusRequest:n,willReachEnd:u})=>{let A=L=>{if(L.key===null)throw new Error("Expected all children to have a key");return L.key},p=La.default.Children.map(e,L=>A(L)),h=p[0],[E,I]=(0,La.useState)(h),v=p.indexOf(E);(0,La.useEffect)(()=>{p.includes(E)||I(h)},[e]),(0,La.useEffect)(()=>{u&&v>=p.length-2&&u()},[v]),vj({active:t&&!!n},L=>{n?.(L)},[n]),_B(E,p,{active:t,minus:"up",plus:"down",set:I,loop:a});let x=v-r,C=v+r;C>p.length&&(x-=C-p.length,C=p.length),x<0&&(C+=-x,x=0),C>=p.length&&(C=p.length-1);let R=[];for(let L=x;L<=C;++L){let U=p[L],J=t&&U===E;R.push(La.default.createElement(C0.Box,{key:U,height:o},La.default.createElement(C0.Box,{marginLeft:1,marginRight:1},La.default.createElement(C0.Text,null,J?La.default.createElement(C0.Text,{color:"cyan",bold:!0},">"):" ")),La.default.createElement(C0.Box,null,La.default.cloneElement(e[L],{active:J}))))}return La.default.createElement(C0.Box,{flexDirection:"column",width:"100%"},R)}});var zwe,ep,Xwe,Sj,Zwe,Pj=Et(()=>{zwe=$e(ic()),ep=$e(on()),Xwe=ve("readline"),Sj=ep.default.createContext(null),Zwe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,zwe.useStdin)();(0,ep.useEffect)(()=>{r&&r(!0),e&&(0,Xwe.emitKeypressEvents)(e)},[e,r]);let[o,a]=(0,ep.useState)(new Map),n=(0,ep.useMemo)(()=>({getAll:()=>o,get:u=>o.get(u),set:(u,A)=>a(new Map([...o,[u,A]]))}),[o,a]);return ep.default.createElement(Sj.Provider,{value:n,children:t})}});var bj={};Vt(bj,{useMinistore:()=>$wt});function $wt(t,e){let r=(0,hQ.useContext)(Sj);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof t>"u")return r.getAll();let o=(0,hQ.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>"u"&&(a=e),[a,o]}var hQ,xj=Et(()=>{hQ=$e(on());Pj()});var dQ={};Vt(dQ,{renderForm:()=>eIt});async function eIt(t,e,{stdin:r,stdout:o,stderr:a}){let n,u=p=>{let{exit:h}=(0,gQ.useApp)();fm({active:!0},(E,I)=>{I.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:A}=(0,gQ.render)(kj.default.createElement(Zwe,null,kj.default.createElement(t,{...e,useSubmit:u})),{stdin:r,stdout:o,stderr:a});return await A(),n}var gQ,kj,mQ=Et(()=>{gQ=$e(ic()),kj=$e(on());Pj();UB()});var rIe=_(HB=>{"use strict";Object.defineProperty(HB,"__esModule",{value:!0});HB.UncontrolledTextInput=void 0;var eIe=on(),Qj=on(),$we=ic(),pm=rQ(),tIe=({value:t,placeholder:e="",focus:r=!0,mask:o,highlightPastedText:a=!1,showCursor:n=!0,onChange:u,onSubmit:A})=>{let[{cursorOffset:p,cursorWidth:h},E]=Qj.useState({cursorOffset:(t||"").length,cursorWidth:0});Qj.useEffect(()=>{E(R=>{if(!r||!n)return R;let L=t||"";return R.cursorOffset>L.length-1?{cursorOffset:L.length,cursorWidth:0}:R})},[t,r,n]);let I=a?h:0,v=o?o.repeat(t.length):t,x=v,C=e?pm.grey(e):void 0;if(n&&r){C=e.length>0?pm.inverse(e[0])+pm.grey(e.slice(1)):pm.inverse(" "),x=v.length>0?"":pm.inverse(" ");let R=0;for(let L of v)R>=p-I&&R<=p?x+=pm.inverse(L):x+=L,R++;v.length>0&&p===v.length&&(x+=pm.inverse(" "))}return $we.useInput((R,L)=>{if(L.upArrow||L.downArrow||L.ctrl&&R==="c"||L.tab||L.shift&&L.tab)return;if(L.return){A&&A(t);return}let U=p,J=t,te=0;L.leftArrow?n&&U--:L.rightArrow?n&&U++:L.backspace||L.delete?p>0&&(J=t.slice(0,p-1)+t.slice(p,t.length),U--):(J=t.slice(0,p)+R+t.slice(p,t.length),U+=R.length,R.length>1&&(te=R.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:te}),J!==t&&u(J)},{isActive:r}),eIe.createElement($we.Text,null,e?v.length>0?x:C:x)};HB.default=tIe;HB.UncontrolledTextInput=t=>{let[e,r]=Qj.useState("");return eIe.createElement(tIe,Object.assign({},t,{value:e,onChange:r}))}});var sIe={};Vt(sIe,{Pad:()=>Fj});var nIe,iIe,Fj,Rj=Et(()=>{nIe=$e(ic()),iIe=$e(on()),Fj=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${"-".repeat(t-1)}`:" ";return iIe.default.createElement(nIe.Text,{dimColor:!e},r)}});var oIe={};Vt(oIe,{ItemOptions:()=>tIt});var GB,I0,tIt,aIe=Et(()=>{GB=$e(ic()),I0=$e(on());AQ();cQ();Rj();tIt=function({active:t,skewer:e,options:r,value:o,onChange:a,sizes:n=[]}){let u=r.filter(({label:p})=>!!p).map(({value:p})=>p),A=r.findIndex(p=>p.value===o&&p.label!="");return _B(o,u,{active:t,minus:"left",plus:"right",set:a}),I0.default.createElement(I0.default.Fragment,null,r.map(({label:p},h)=>{let E=h===A,I=n[h]-1||0,v=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),x=Math.max(0,I-v.length-2);return p?I0.default.createElement(GB.Box,{key:p,width:I,marginLeft:1},I0.default.createElement(GB.Text,{wrap:"truncate"},I0.default.createElement(Ij,{active:E})," ",p),e?I0.default.createElement(Fj,{active:t,length:x}):null):I0.default.createElement(GB.Box,{key:`spacer-${h}`,width:I,marginLeft:1})}))}});var BIe=_((zJt,IIe)=>{var jj;IIe.exports=()=>(typeof jj>"u"&&(jj=ve("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),jj)});var qIe=_((wzt,GIe)=>{var Xj=Symbol("arg flag"),Oa=class extends Error{constructor(e,r){super(e),this.name="ArgError",this.code=r,Object.setPrototypeOf(this,Oa.prototype)}};function sv(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:o=!1}={}){if(!t)throw new Oa("argument specification object is required","ARG_CONFIG_NO_SPEC");let a={_:[]},n={},u={};for(let A of Object.keys(t)){if(!A)throw new Oa("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(A[0]!=="-")throw new Oa(`argument key must start with '-' but found: '${A}'`,"ARG_CONFIG_NONOPT_KEY");if(A.length===1)throw new Oa(`argument key must have a name; singular '-' keys are not allowed: ${A}`,"ARG_CONFIG_NONAME_KEY");if(typeof t[A]=="string"){n[A]=t[A];continue}let p=t[A],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]=="function"){let[E]=p;p=(I,v,x=[])=>(x.push(E(I,v,x[x.length-1])),x),h=E===Boolean||E[Xj]===!0}else if(typeof p=="function")h=p===Boolean||p[Xj]===!0;else throw new Oa(`type missing or not a function or valid array type: ${A}`,"ARG_CONFIG_VAD_TYPE");if(A[1]!=="-"&&A.length>2)throw new Oa(`short argument keys (with a single hyphen) must have only one character: ${A}`,"ARG_CONFIG_SHORTOPT_TOOLONG");u[A]=[p,h]}for(let A=0,p=e.length;A0){a._=a._.concat(e.slice(A));break}if(h==="--"){a._=a._.concat(e.slice(A+1));break}if(h.length>1&&h[0]==="-"){let E=h[1]==="-"||h.length===2?[h]:h.slice(1).split("").map(I=>`-${I}`);for(let I=0;I1&&e[A+1][0]==="-"&&!(e[A+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(L===Number||typeof BigInt<"u"&&L===BigInt))){let J=x===R?"":` (alias for ${R})`;throw new Oa(`option requires argument: ${x}${J}`,"ARG_MISSING_REQUIRED_LONGARG")}a[R]=L(e[A+1],R,a[R]),++A}else a[R]=L(C,R,a[R])}}else a._.push(h)}return a}sv.flag=t=>(t[Xj]=!0,t);sv.COUNT=sv.flag((t,e,r)=>(r||0)+1);sv.ArgError=Oa;GIe.exports=sv});var ZIe=_((Jzt,XIe)=>{var tG;XIe.exports=()=>(typeof tG>"u"&&(tG=ve("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),tG)});var n1e=_((aG,lG)=>{(function(t){aG&&typeof aG=="object"&&typeof lG<"u"?lG.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 a1e=_((KXt,o1e)=>{"use strict";cG.ifExists=ZIt;var YC=ve("util"),sc=ve("path"),i1e=n1e(),JIt=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,zIt={createPwshFile:!0,createCmdFile:i1e(),fs:ve("fs")},XIt=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function s1e(t){let e={...zIt,...t},r=e.fs;return e.fs_={chmod:r.chmod?YC.promisify(r.chmod):async()=>{},mkdir:YC.promisify(r.mkdir),readFile:YC.promisify(r.readFile),stat:YC.promisify(r.stat),unlink:YC.promisify(r.unlink),writeFile:YC.promisify(r.writeFile)},e}async function cG(t,e,r){let o=s1e(r);await o.fs_.stat(t),await e1t(t,e,o)}function ZIt(t,e,r){return cG(t,e,r).catch(()=>{})}function $It(t,e){return e.fs_.unlink(t).catch(()=>{})}async function e1t(t,e,r){let o=await s1t(t,r);return await t1t(e,r),r1t(t,e,o,r)}function t1t(t,e){return e.fs_.mkdir(sc.dirname(t),{recursive:!0})}function r1t(t,e,r,o){let a=s1e(o),n=[{generator:l1t,extension:""}];return a.createCmdFile&&n.push({generator:a1t,extension:".cmd"}),a.createPwshFile&&n.push({generator:c1t,extension:".ps1"}),Promise.all(n.map(u=>o1t(t,e+u.extension,r,u.generator,a)))}function n1t(t,e){return $It(t,e)}function i1t(t,e){return u1t(t,e)}async function s1t(t,e){let a=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(JIt);if(!a){let n=sc.extname(t).toLowerCase();return{program:XIt.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function o1t(t,e,r,o,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",u=[r.additionalArgs,n].filter(A=>A).join(" ");return a=Object.assign({},a,{prog:r.program,args:u}),await n1t(e,a),await a.fs_.writeFile(e,o(t,e,a),"utf8"),i1t(e,a)}function a1t(t,e,r){let a=sc.relative(sc.dirname(e),t).split("/").join("\\"),n=sc.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,u,A=r.prog,p=r.args||"",h=uG(r.nodePath).win32;A?(u=`"%~dp0\\${A}.exe"`,a=n):(A=n,p="",a="");let E=r.progArgs?`${r.progArgs.join(" ")} `:"",I=h?`@SET NODE_PATH=${h}\r +`:"";return u?I+=`@IF EXIST ${u} (\r + ${u} ${p} ${a} ${E}%*\r +) ELSE (\r + @SETLOCAL\r + @SET PATHEXT=%PATHEXT:;.JS;=;%\r + ${A} ${p} ${a} ${E}%*\r +)\r +`:I+=`@${A} ${p} ${a} ${E}%*\r +`,I}function l1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n;o=o.split("\\").join("/");let u=sc.isAbsolute(o)?`"${o}"`:`"$basedir/${o}"`,A=r.args||"",p=uG(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,o=u):(a=u,A="",o="");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 + +`,I=r.nodePath?`export NODE_PATH="${p}" +`:"";return n?E+=`${I}if [ -x ${n} ]; then + exec ${n} ${A} ${o} ${h}"$@" +else + exec ${a} ${A} ${o} ${h}"$@" +fi +`:E+=`${I}${a} ${A} ${o} ${h}"$@" +exit $? +`,E}function c1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,u;o=o.split("\\").join("/");let A=sc.isAbsolute(o)?`"${o}"`:`"$basedir/${o}"`,p=r.args||"",h=uG(r.nodePath),E=h.win32,I=h.posix;n?(u=`"$basedir/${r.prog}$exe"`,o=A):(n=A,p="",o="");let v=r.progArgs?`${r.progArgs.join(" ")} `:"",x=`#!/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&&(x+=` else { + $env:NODE_PATH="${I}" +}`),u?x+=` +$ret=0 +if (Test-Path ${u}) { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${u} ${p} ${o} ${v}$args + } else { + & ${u} ${p} ${o} ${v}$args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${n} ${p} ${o} ${v}$args + } else { + & ${n} ${p} ${o} ${v}$args + } + $ret=$LASTEXITCODE +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $ret +`:x+=` +# Support pipeline input +if ($MyInvocation.ExpectingInput) { + $input | & ${n} ${p} ${o} ${v}$args +} else { + & ${n} ${p} ${o} ${v}$args +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $LASTEXITCODE +`,x}function u1t(t,e){return e.fs_.chmod(t,493)}function uG(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(sc.delimiter):Array.from(t),r={};for(let o=0;o`/mnt/${A.toLowerCase()}`):e[o];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[o]={win32:a,posix:n}}return r}o1e.exports=cG});var vG=_((h$t,b1e)=>{b1e.exports=ve("stream")});var F1e=_((g$t,Q1e)=>{"use strict";function x1e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function O1t(t){for(var e=1;e0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:"unshift",value:function(r){var o={data:r,next:this.head};this.length===0&&(this.tail=o),this.head=o,++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 o=this.head,a=""+o.data;o=o.next;)a+=r+o.data;return a}},{key:"concat",value:function(r){if(this.length===0)return xQ.alloc(0);for(var o=xQ.allocUnsafe(r>>>0),a=this.head,n=0;a;)q1t(a.data,o,n),n+=a.data.length,a=a.next;return o}},{key:"consume",value:function(r,o){var a;return ru.length?u.length:r;if(A===u.length?n+=u:n+=u.slice(0,r),r-=A,r===0){A===u.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(A));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var o=xQ.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(o),r-=a.data.length;a=a.next;){var u=a.data,A=r>u.length?u.length:r;if(u.copy(o,o.length-r,0,A),r-=A,r===0){A===u.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=u.slice(A));break}++n}return this.length-=n,o}},{key:G1t,value:function(r,o){return DG(this,O1t({},o,{depth:0,customInspect:!1}))}}]),t}()});var PG=_((d$t,T1e)=>{"use strict";function Y1t(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(SG,this,t)):process.nextTick(SG,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(kQ,r):(r._writableState.errorEmitted=!0,process.nextTick(R1e,r,n)):process.nextTick(R1e,r,n):e?(process.nextTick(kQ,r),e(n)):process.nextTick(kQ,r)}),this)}function R1e(t,e){SG(t,e),kQ(t)}function kQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function W1t(){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 SG(t,e){t.emit("error",e)}function K1t(t,e){var r=t._readableState,o=t._writableState;r&&r.autoDestroy||o&&o.autoDestroy?t.destroy(e):t.emit("error",e)}T1e.exports={destroy:Y1t,undestroy:W1t,errorOrDestroy:K1t}});var Q0=_((m$t,O1e)=>{"use strict";var L1e={};function ac(t,e,r){r||(r=Error);function o(n,u,A){return typeof e=="string"?e:e(n,u,A)}class a extends r{constructor(u,A,p){super(o(u,A,p))}}a.prototype.name=r.name,a.prototype.code=t,L1e[t]=a}function N1e(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(o=>String(o)),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 V1t(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function J1t(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function z1t(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}ac("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);ac("ERR_INVALID_ARG_TYPE",function(t,e,r){let o;typeof e=="string"&&V1t(e,"not ")?(o="must not be",e=e.replace(/^not /,"")):o="must be";let a;if(J1t(t," argument"))a=`The ${t} ${o} ${N1e(e,"type")}`;else{let n=z1t(t,".")?"property":"argument";a=`The "${t}" ${n} ${o} ${N1e(e,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);ac("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");ac("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});ac("ERR_STREAM_PREMATURE_CLOSE","Premature close");ac("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});ac("ERR_MULTIPLE_CALLBACK","Callback called multiple times");ac("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");ac("ERR_STREAM_WRITE_AFTER_END","write after end");ac("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);ac("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);ac("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");O1e.exports.codes=L1e});var bG=_((y$t,M1e)=>{"use strict";var X1t=Q0().codes.ERR_INVALID_OPT_VALUE;function Z1t(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function $1t(t,e,r,o){var a=Z1t(e,o,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=o?r:"highWaterMark";throw new X1t(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}M1e.exports={getHighWaterMark:$1t}});var U1e=_((E$t,xG)=>{typeof Object.create=="function"?xG.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:xG.exports=function(e,r){if(r){e.super_=r;var o=function(){};o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e}}});var F0=_((C$t,QG)=>{try{if(kG=ve("util"),typeof kG.inherits!="function")throw"";QG.exports=kG.inherits}catch{QG.exports=U1e()}var kG});var H1e=_((w$t,_1e)=>{_1e.exports=ve("util").deprecate});var TG=_((I$t,K1e)=>{"use strict";K1e.exports=Ri;function G1e(t){var e=this;this.next=null,this.entry=null,this.finish=function(){S2t(e,t)}}var zC;Ri.WritableState=mv;var e2t={deprecate:H1e()},q1e=vG(),FQ=ve("buffer").Buffer,t2t=global.Uint8Array||function(){};function r2t(t){return FQ.from(t)}function n2t(t){return FQ.isBuffer(t)||t instanceof t2t}var RG=PG(),i2t=bG(),s2t=i2t.getHighWaterMark,R0=Q0().codes,o2t=R0.ERR_INVALID_ARG_TYPE,a2t=R0.ERR_METHOD_NOT_IMPLEMENTED,l2t=R0.ERR_MULTIPLE_CALLBACK,c2t=R0.ERR_STREAM_CANNOT_PIPE,u2t=R0.ERR_STREAM_DESTROYED,A2t=R0.ERR_STREAM_NULL_VALUES,f2t=R0.ERR_STREAM_WRITE_AFTER_END,p2t=R0.ERR_UNKNOWN_ENCODING,XC=RG.errorOrDestroy;F0()(Ri,q1e);function h2t(){}function mv(t,e,r){zC=zC||Cm(),t=t||{},typeof r!="boolean"&&(r=e instanceof zC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=s2t(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=t.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){w2t(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 G1e(this)}mv.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(mv.prototype,"buffer",{get:e2t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var QQ;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(QQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Ri,Symbol.hasInstance,{value:function(e){return QQ.call(this,e)?!0:this!==Ri?!1:e&&e._writableState instanceof mv}})):QQ=function(e){return e instanceof this};function Ri(t){zC=zC||Cm();var e=this instanceof zC;if(!e&&!QQ.call(Ri,this))return new Ri(t);this._writableState=new mv(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)),q1e.call(this)}Ri.prototype.pipe=function(){XC(this,new c2t)};function g2t(t,e){var r=new f2t;XC(t,r),process.nextTick(e,r)}function d2t(t,e,r,o){var a;return r===null?a=new A2t:typeof r!="string"&&!e.objectMode&&(a=new o2t("chunk",["string","Buffer"],r)),a?(XC(t,a),process.nextTick(o,a),!1):!0}Ri.prototype.write=function(t,e,r){var o=this._writableState,a=!1,n=!o.objectMode&&n2t(t);return n&&!FQ.isBuffer(t)&&(t=r2t(t)),typeof e=="function"&&(r=e,e=null),n?e="buffer":e||(e=o.defaultEncoding),typeof r!="function"&&(r=h2t),o.ending?g2t(this,r):(n||d2t(this,o,t,r))&&(o.pendingcb++,a=y2t(this,o,n,t,e,r)),a};Ri.prototype.cork=function(){this._writableState.corked++};Ri.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Y1e(this,t))};Ri.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 p2t(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Ri.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function m2t(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=FQ.from(e,r)),e}Object.defineProperty(Ri.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function y2t(t,e,r,o,a,n){if(!r){var u=m2t(e,o,a);o!==u&&(r=!0,a="buffer",o=u)}var A=e.objectMode?1:o.length;e.length+=A;var p=e.length{"use strict";var P2t=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};J1e.exports=EA;var V1e=OG(),LG=TG();F0()(EA,V1e);for(NG=P2t(LG.prototype),RQ=0;RQ{var NQ=ve("buffer"),ip=NQ.Buffer;function z1e(t,e){for(var r in t)e[r]=t[r]}ip.from&&ip.alloc&&ip.allocUnsafe&&ip.allocUnsafeSlow?X1e.exports=NQ:(z1e(NQ,MG),MG.Buffer=ZC);function ZC(t,e,r){return ip(t,e,r)}z1e(ip,ZC);ZC.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return ip(t,e,r)};ZC.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var o=ip(t);return e!==void 0?typeof r=="string"?o.fill(e,r):o.fill(e):o.fill(0),o};ZC.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return ip(t)};ZC.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return NQ.SlowBuffer(t)}});var HG=_(e2e=>{"use strict";var _G=Z1e().Buffer,$1e=_G.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 k2t(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 Q2t(t){var e=k2t(t);if(typeof e!="string"&&(_G.isEncoding===$1e||!$1e(t)))throw new Error("Unknown encoding: "+t);return e||t}e2e.StringDecoder=yv;function yv(t){this.encoding=Q2t(t);var e;switch(this.encoding){case"utf16le":this.text=O2t,this.end=M2t,e=4;break;case"utf8":this.fillLast=T2t,e=4;break;case"base64":this.text=U2t,this.end=_2t,e=3;break;default:this.write=H2t,this.end=j2t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=_G.allocUnsafe(e)}yv.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 F2t(t,e,r){var o=e.length-1;if(o=0?(a>0&&(t.lastNeed=a-1),a):--o=0?(a>0&&(t.lastNeed=a-2),a):--o=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function R2t(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 T2t(t){var e=this.lastTotal-this.lastNeed,r=R2t(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 N2t(t,e){var r=F2t(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var o=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,o),t.toString("utf8",e,o)}function L2t(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function O2t(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var o=r.charCodeAt(r.length-1);if(o>=55296&&o<=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 M2t(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 U2t(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 _2t(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function H2t(t){return t.toString(this.encoding)}function j2t(t){return t&&t.length?this.write(t):""}});var LQ=_((D$t,n2e)=>{"use strict";var t2e=Q0().codes.ERR_STREAM_PREMATURE_CLOSE;function G2t(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,o=new Array(r),a=0;a{"use strict";var OQ;function T0(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var W2t=LQ(),N0=Symbol("lastResolve"),wm=Symbol("lastReject"),Ev=Symbol("error"),MQ=Symbol("ended"),Im=Symbol("lastPromise"),jG=Symbol("handlePromise"),Bm=Symbol("stream");function L0(t,e){return{value:t,done:e}}function K2t(t){var e=t[N0];if(e!==null){var r=t[Bm].read();r!==null&&(t[Im]=null,t[N0]=null,t[wm]=null,e(L0(r,!1)))}}function V2t(t){process.nextTick(K2t,t)}function J2t(t,e){return function(r,o){t.then(function(){if(e[MQ]){r(L0(void 0,!0));return}e[jG](r,o)},o)}}var z2t=Object.getPrototypeOf(function(){}),X2t=Object.setPrototypeOf((OQ={get stream(){return this[Bm]},next:function(){var e=this,r=this[Ev];if(r!==null)return Promise.reject(r);if(this[MQ])return Promise.resolve(L0(void 0,!0));if(this[Bm].destroyed)return new Promise(function(u,A){process.nextTick(function(){e[Ev]?A(e[Ev]):u(L0(void 0,!0))})});var o=this[Im],a;if(o)a=new Promise(J2t(o,this));else{var n=this[Bm].read();if(n!==null)return Promise.resolve(L0(n,!1));a=new Promise(this[jG])}return this[Im]=a,a}},T0(OQ,Symbol.asyncIterator,function(){return this}),T0(OQ,"return",function(){var e=this;return new Promise(function(r,o){e[Bm].destroy(null,function(a){if(a){o(a);return}r(L0(void 0,!0))})})}),OQ),z2t),Z2t=function(e){var r,o=Object.create(X2t,(r={},T0(r,Bm,{value:e,writable:!0}),T0(r,N0,{value:null,writable:!0}),T0(r,wm,{value:null,writable:!0}),T0(r,Ev,{value:null,writable:!0}),T0(r,MQ,{value:e._readableState.endEmitted,writable:!0}),T0(r,jG,{value:function(n,u){var A=o[Bm].read();A?(o[Im]=null,o[N0]=null,o[wm]=null,n(L0(A,!1))):(o[N0]=n,o[wm]=u)},writable:!0}),r));return o[Im]=null,W2t(e,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=o[wm];n!==null&&(o[Im]=null,o[N0]=null,o[wm]=null,n(a)),o[Ev]=a;return}var u=o[N0];u!==null&&(o[Im]=null,o[N0]=null,o[wm]=null,u(L0(void 0,!0))),o[MQ]=!0}),e.on("readable",V2t.bind(null,o)),o};i2e.exports=Z2t});var c2e=_((P$t,l2e)=>{"use strict";function o2e(t,e,r,o,a,n,u){try{var A=t[n](u),p=A.value}catch(h){r(h);return}A.done?e(p):Promise.resolve(p).then(o,a)}function $2t(t){return function(){var e=this,r=arguments;return new Promise(function(o,a){var n=t.apply(e,r);function u(p){o2e(n,o,a,u,A,"next",p)}function A(p){o2e(n,o,a,u,A,"throw",p)}u(void 0)})}}function a2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function eBt(t){for(var e=1;e{"use strict";E2e.exports=mn;var $C;mn.ReadableState=p2e;var b$t=ve("events").EventEmitter,f2e=function(e,r){return e.listeners(r).length},wv=vG(),UQ=ve("buffer").Buffer,iBt=global.Uint8Array||function(){};function sBt(t){return UQ.from(t)}function oBt(t){return UQ.isBuffer(t)||t instanceof iBt}var GG=ve("util"),en;GG&&GG.debuglog?en=GG.debuglog("stream"):en=function(){};var aBt=F1e(),zG=PG(),lBt=bG(),cBt=lBt.getHighWaterMark,_Q=Q0().codes,uBt=_Q.ERR_INVALID_ARG_TYPE,ABt=_Q.ERR_STREAM_PUSH_AFTER_EOF,fBt=_Q.ERR_METHOD_NOT_IMPLEMENTED,pBt=_Q.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,ew,qG,YG;F0()(mn,wv);var Cv=zG.errorOrDestroy,WG=["error","close","destroy","pause","resume"];function hBt(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 p2e(t,e,r){$C=$C||Cm(),t=t||{},typeof r!="boolean"&&(r=e instanceof $C),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=cBt(this,t,"readableHighWaterMark",r),this.buffer=new aBt,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&&(ew||(ew=HG().StringDecoder),this.decoder=new ew(t.encoding),this.encoding=t.encoding)}function mn(t){if($C=$C||Cm(),!(this instanceof mn))return new mn(t);var e=this instanceof $C;this._readableState=new p2e(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),wv.call(this)}Object.defineProperty(mn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});mn.prototype.destroy=zG.destroy;mn.prototype._undestroy=zG.undestroy;mn.prototype._destroy=function(t,e){e(t)};mn.prototype.push=function(t,e){var r=this._readableState,o;return r.objectMode?o=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=UQ.from(t,e),e=""),o=!0),h2e(this,t,e,!1,o)};mn.prototype.unshift=function(t){return h2e(this,t,null,!0,!1)};function h2e(t,e,r,o,a){en("readableAddChunk",e);var n=t._readableState;if(e===null)n.reading=!1,mBt(t,n);else{var u;if(a||(u=gBt(n,e)),u)Cv(t,u);else if(n.objectMode||e&&e.length>0)if(typeof e!="string"&&!n.objectMode&&Object.getPrototypeOf(e)!==UQ.prototype&&(e=sBt(e)),o)n.endEmitted?Cv(t,new pBt):KG(t,n,e,!0);else if(n.ended)Cv(t,new ABt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?KG(t,n,e,!1):JG(t,n)):KG(t,n,e,!1)}else o||(n.reading=!1,JG(t,n))}return!n.ended&&(n.length=u2e?t=u2e:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function A2e(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=dBt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}mn.prototype.read=function(t){en("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 en("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?VG(this):HQ(this),null;if(t=A2e(t,e),t===0&&e.ended)return e.length===0&&VG(this),null;var o=e.needReadable;en("need readable",o),(e.length===0||e.length-t0?a=m2e(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&&VG(this)),a!==null&&this.emit("data",a),a};function mBt(t,e){if(en("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?HQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,g2e(t)))}}function HQ(t){var e=t._readableState;en("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(en("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(g2e,t))}function g2e(t){var e=t._readableState;en("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,XG(t)}function JG(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(yBt,t,e))}function yBt(t,e){for(;!e.reading&&!e.ended&&(e.length1&&y2e(o.pipes,t)!==-1)&&!h&&(en("false write response, pause",o.awaitDrain),o.awaitDrain++),r.pause())}function v(L){en("onerror",L),R(),t.removeListener("error",v),f2e(t,"error")===0&&Cv(t,L)}hBt(t,"error",v);function x(){t.removeListener("finish",C),R()}t.once("close",x);function C(){en("onfinish"),t.removeListener("close",x),R()}t.once("finish",C);function R(){en("unpipe"),r.unpipe(t)}return t.emit("pipe",r),o.flowing||(en("pipe resume"),r.resume()),t};function EBt(t){return function(){var r=t._readableState;en("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&f2e(t,"data")&&(r.flowing=!0,XG(t))}}mn.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 o=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n0,o.flowing!==!1&&this.resume()):t==="readable"&&!o.endEmitted&&!o.readableListening&&(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,en("on readable",o.length,o.reading),o.length?HQ(this):o.reading||process.nextTick(CBt,this)),r};mn.prototype.addListener=mn.prototype.on;mn.prototype.removeListener=function(t,e){var r=wv.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(d2e,this),r};mn.prototype.removeAllListeners=function(t){var e=wv.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(d2e,this),e};function d2e(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 CBt(t){en("readable nexttick read 0"),t.read(0)}mn.prototype.resume=function(){var t=this._readableState;return t.flowing||(en("resume"),t.flowing=!t.readableListening,wBt(this,t)),t.paused=!1,this};function wBt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(IBt,t,e))}function IBt(t,e){en("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),XG(t),e.flowing&&!e.reading&&t.read(0)}mn.prototype.pause=function(){return en("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(en("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function XG(t){var e=t._readableState;for(en("flow",e.flowing);e.flowing&&t.read()!==null;);}mn.prototype.wrap=function(t){var e=this,r=this._readableState,o=!1;t.on("end",function(){if(en("wrapped end"),r.decoder&&!r.ended){var u=r.decoder.end();u&&u.length&&e.push(u)}e.push(null)}),t.on("data",function(u){if(en("wrapped data"),r.decoder&&(u=r.decoder.write(u)),!(r.objectMode&&u==null)&&!(!r.objectMode&&(!u||!u.length))){var A=e.push(u);A||(o=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]=="function"&&(this[a]=function(A){return function(){return t[A].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 VG(t){var e=t._readableState;en("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(BBt,e,t))}function BBt(t,e){if(en("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"&&(mn.from=function(t,e){return YG===void 0&&(YG=c2e()),YG(mn,t,e)});function y2e(t,e){for(var r=0,o=t.length;r{"use strict";w2e.exports=sp;var jQ=Q0().codes,vBt=jQ.ERR_METHOD_NOT_IMPLEMENTED,DBt=jQ.ERR_MULTIPLE_CALLBACK,SBt=jQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,PBt=jQ.ERR_TRANSFORM_WITH_LENGTH_0,GQ=Cm();F0()(sp,GQ);function bBt(t,e){var r=this._transformState;r.transforming=!1;var o=r.writecb;if(o===null)return this.emit("error",new DBt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),o(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length{"use strict";B2e.exports=Iv;var I2e=ZG();F0()(Iv,I2e);function Iv(t){if(!(this instanceof Iv))return new Iv(t);I2e.call(this,t)}Iv.prototype._transform=function(t,e,r){r(null,t)}});var x2e=_((F$t,b2e)=>{"use strict";var $G;function kBt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var P2e=Q0().codes,QBt=P2e.ERR_MISSING_ARGS,FBt=P2e.ERR_STREAM_DESTROYED;function D2e(t){if(t)throw t}function RBt(t){return t.setHeader&&typeof t.abort=="function"}function TBt(t,e,r,o){o=kBt(o);var a=!1;t.on("close",function(){a=!0}),$G===void 0&&($G=LQ()),$G(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,RBt(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();o(u||new FBt("pipe"))}}}function S2e(t){t()}function NBt(t,e){return t.pipe(e)}function LBt(t){return!t.length||typeof t[t.length-1]!="function"?D2e:t.pop()}function OBt(){for(var t=arguments.length,e=new Array(t),r=0;r0;return TBt(u,p,h,function(E){a||(a=E),E&&n.forEach(S2e),!p&&(n.forEach(S2e),o(a))})});return e.reduce(NBt)}b2e.exports=OBt});var tw=_((lc,vv)=>{var Bv=ve("stream");process.env.READABLE_STREAM==="disable"&&Bv?(vv.exports=Bv.Readable,Object.assign(vv.exports,Bv),vv.exports.Stream=Bv):(lc=vv.exports=OG(),lc.Stream=Bv||lc,lc.Readable=lc,lc.Writable=TG(),lc.Duplex=Cm(),lc.Transform=ZG(),lc.PassThrough=v2e(),lc.finished=LQ(),lc.pipeline=x2e())});var F2e=_((R$t,Q2e)=>{"use strict";var{Buffer:lu}=ve("buffer"),k2e=Symbol.for("BufferList");function ni(t){if(!(this instanceof ni))return new ni(t);ni._init.call(this,t)}ni._init=function(e){Object.defineProperty(this,k2e,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};ni.prototype._new=function(e){return new ni(e)};ni.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let o=0;othis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};ni.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)};ni.prototype.copy=function(e,r,o,a){if((typeof o!="number"||o<0)&&(o=0),(typeof a!="number"||a>this.length)&&(a=this.length),o>=this.length||a<=0)return e||lu.alloc(0);let n=!!e,u=this._offset(o),A=a-o,p=A,h=n&&r||0,E=u[1];if(o===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:lu.concat(this._bufs,this.length);for(let I=0;Iv)this._bufs[I].copy(e,h,E),h+=v;else{this._bufs[I].copy(e,h,E,E+p),h+=v;break}p-=v,E&&(E=0)}return e.length>h?e.slice(0,h):e};ni.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 o=this._offset(e),a=this._offset(r),n=this._bufs.slice(o[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),o[1]!==0&&(n[0]=n[0].slice(o[1])),this._new(n)};ni.prototype.toString=function(e,r,o){return this.slice(r,o).toString(e)};ni.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};ni.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let o=this._offset(e),a=o[0],n=o[1];for(;a=t.length){let p=u.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=u.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};ni.prototype._match=function(t,e){if(this.length-t{"use strict";var eq=tw().Duplex,MBt=F0(),Dv=F2e();function Uo(t){if(!(this instanceof Uo))return new Uo(t);if(typeof t=="function"){this._callback=t;let e=function(o){this._callback&&(this._callback(o),this._callback=null)}.bind(this);this.on("pipe",function(o){o.on("error",e)}),this.on("unpipe",function(o){o.removeListener("error",e)}),t=null}Dv._init.call(this,t),eq.call(this)}MBt(Uo,eq);Object.assign(Uo.prototype,Dv.prototype);Uo.prototype._new=function(e){return new Uo(e)};Uo.prototype._write=function(e,r,o){this._appendBuffer(e),typeof o=="function"&&o()};Uo.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)};Uo.prototype.end=function(e){eq.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Uo.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Uo.prototype._isBufferList=function(e){return e instanceof Uo||e instanceof Dv||Uo.isBufferList(e)};Uo.isBufferList=Dv.isBufferList;qQ.exports=Uo;qQ.exports.BufferListStream=Uo;qQ.exports.BufferList=Dv});var nq=_(nw=>{var UBt=Buffer.alloc,_Bt="0000000000000000000",HBt="7777777777777777777",T2e="0".charCodeAt(0),N2e=Buffer.from("ustar\0","binary"),jBt=Buffer.from("00","binary"),GBt=Buffer.from("ustar ","binary"),qBt=Buffer.from(" \0","binary"),YBt=parseInt("7777",8),Sv=257,rq=263,WBt=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},KBt=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},VBt=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},L2e=function(t,e,r,o){for(;re?HBt.slice(0,e)+" ":_Bt.slice(0,e-t.length)+t+" "};function JBt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],o=t.length-1;o>0;o--){var a=t[o];e?r.push(a):r.push(255-a)}var n=0,u=r.length;for(o=0;o=Math.pow(10,r)&&r++,e+r+t};nw.decodeLongPath=function(t,e){return rw(t,0,t.length,e)};nw.encodePax=function(t){var e="";t.name&&(e+=tq(" path="+t.name+` +`)),t.linkname&&(e+=tq(" linkpath="+t.linkname+` +`));var r=t.pax;if(r)for(var o in r)e+=tq(" "+o+"="+r[o]+` +`);return Buffer.from(e)};nw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var a=r.indexOf("/");if(a===-1)return null;o+=o?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(o)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(O0(t.mode&YBt,6),100),e.write(O0(t.uid,6),108),e.write(O0(t.gid,6),116),e.write(O0(t.size,11),124),e.write(O0(t.mtime.getTime()/1e3|0,11),136),e[156]=T2e+VBt(t.type),t.linkname&&e.write(t.linkname,157),N2e.copy(e,Sv),jBt.copy(e,rq),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(O0(t.devmajor||0,6),329),e.write(O0(t.devminor||0,6),337),o&&e.write(o,345),e.write(O0(O2e(e),6),148),e)};nw.decode=function(t,e,r){var o=t[156]===0?0:t[156]-T2e,a=rw(t,0,100,e),n=M0(t,100,8),u=M0(t,108,8),A=M0(t,116,8),p=M0(t,124,12),h=M0(t,136,12),E=KBt(o),I=t[157]===0?null:rw(t,157,100,e),v=rw(t,265,32),x=rw(t,297,32),C=M0(t,329,8),R=M0(t,337,8),L=O2e(t);if(L===8*32)return null;if(L!==M0(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(N2e.compare(t,Sv,Sv+6)===0)t[345]&&(a=rw(t,345,155,e)+"/"+a);else if(!(GBt.compare(t,Sv,Sv+6)===0&&qBt.compare(t,rq,rq+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return o===0&&a&&a[a.length-1]==="/"&&(o=5),{name:a,mode:n,uid:u,gid:A,size:p,mtime:new Date(1e3*h),type:E,linkname:I,uname:v,gname:x,devmajor:C,devminor:R}}});var q2e=_((L$t,G2e)=>{var U2e=ve("util"),zBt=R2e(),Pv=nq(),_2e=tw().Writable,H2e=tw().PassThrough,j2e=function(){},M2e=function(t){return t&=511,t&&512-t},XBt=function(t,e){var r=new YQ(t,e);return r.end(),r},ZBt=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},YQ=function(t,e){this._parent=t,this.offset=e,H2e.call(this,{autoDestroy:!1})};U2e.inherits(YQ,H2e);YQ.prototype.destroy=function(t){this._parent.destroy(t)};var op=function(t){if(!(this instanceof op))return new op(t);_2e.call(this,t),t=t||{},this._offset=0,this._buffer=zBt(),this._missing=0,this._partial=!1,this._onparse=j2e,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,o=function(){e._continue()},a=function(v){if(e._locked=!1,v)return e.destroy(v);e._stream||o()},n=function(){e._stream=null;var v=M2e(e._header.size);v?e._parse(v,u):e._parse(512,I),e._locked||o()},u=function(){e._buffer.consume(M2e(e._header.size)),e._parse(512,I),o()},A=function(){var v=e._header.size;e._paxGlobal=Pv.decodePax(r.slice(0,v)),r.consume(v),n()},p=function(){var v=e._header.size;e._pax=Pv.decodePax(r.slice(0,v)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(v),n()},h=function(){var v=e._header.size;this._gnuLongPath=Pv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},E=function(){var v=e._header.size;this._gnuLongLinkPath=Pv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},I=function(){var v=e._offset,x;try{x=e._header=Pv.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(C){e.emit("error",C)}if(r.consume(512),!x){e._parse(512,I),o();return}if(x.type==="gnu-long-path"){e._parse(x.size,h),o();return}if(x.type==="gnu-long-link-path"){e._parse(x.size,E),o();return}if(x.type==="pax-global-header"){e._parse(x.size,A),o();return}if(x.type==="pax-header"){e._parse(x.size,p),o();return}if(e._gnuLongPath&&(x.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(x.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=x=ZBt(x,e._pax),e._pax=null),e._locked=!0,!x.size||x.type==="directory"){e._parse(512,I),e.emit("entry",x,XBt(e,v),a);return}e._stream=new YQ(e,v),e.emit("entry",x,e._stream,a),e._parse(x.size,n),o()};this._onheader=I,this._parse(512,I)};U2e.inherits(op,_2e);op.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};op.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};op.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=j2e,this._overflow?this._write(this._overflow,void 0,t):t()}};op.prototype._write=function(t,e,r){if(!this._destroyed){var o=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.lengthn&&(u=t.slice(n),t=t.slice(0,n)),o?o.end(t):a.append(t),this._overflow=u,this._onparse()}};op.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};G2e.exports=op});var W2e=_((O$t,Y2e)=>{Y2e.exports=ve("fs").constants||ve("constants")});var X2e=_((M$t,z2e)=>{var iw=W2e(),K2e=LM(),KQ=F0(),$Bt=Buffer.alloc,V2e=tw().Readable,sw=tw().Writable,evt=ve("string_decoder").StringDecoder,WQ=nq(),tvt=parseInt("755",8),rvt=parseInt("644",8),J2e=$Bt(1024),sq=function(){},iq=function(t,e){e&=511,e&&t.push(J2e.slice(0,512-e))};function nvt(t){switch(t&iw.S_IFMT){case iw.S_IFBLK:return"block-device";case iw.S_IFCHR:return"character-device";case iw.S_IFDIR:return"directory";case iw.S_IFIFO:return"fifo";case iw.S_IFLNK:return"symlink"}return"file"}var VQ=function(t){sw.call(this),this.written=0,this._to=t,this._destroyed=!1};KQ(VQ,sw);VQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};VQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var JQ=function(){sw.call(this),this.linkname="",this._decoder=new evt("utf-8"),this._destroyed=!1};KQ(JQ,sw);JQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};JQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var bv=function(){sw.call(this),this._destroyed=!1};KQ(bv,sw);bv.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};bv.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var CA=function(t){if(!(this instanceof CA))return new CA(t);V2e.call(this,t),this._drain=sq,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};KQ(CA,V2e);CA.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=sq);var o=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=nvt(t.mode)),t.mode||(t.mode=t.type==="directory"?tvt:rvt),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 iq(o,t.size),a?process.nextTick(r):this._drain=r,new bv}if(t.type==="symlink"&&!t.linkname){var n=new JQ;return K2e(n,function(A){if(A)return o.destroy(),r(A);t.linkname=n.linkname,o._encode(t),r()}),n}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new bv;var u=new VQ(this);return this._stream=u,K2e(u,function(A){if(o._stream=null,A)return o.destroy(),r(A);if(u.written!==t.size)return o.destroy(),r(new Error("size mismatch"));iq(o,t.size),o._finalizing&&o.finalize(),r()}),u}};CA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(J2e),this.push(null))};CA.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())};CA.prototype._encode=function(t){if(!t.pax){var e=WQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};CA.prototype._encodePax=function(t){var e=WQ.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(WQ.encode(r)),this.push(e),iq(this,e.length),r.size=t.size,r.type=t.type,this.push(WQ.encode(r))};CA.prototype._read=function(t){var e=this._drain;this._drain=sq,e()};z2e.exports=CA});var Z2e=_(oq=>{oq.extract=q2e();oq.pack=X2e()});var uBe=_((ier,cBe)=>{"use strict";var vm=class{constructor(e,r,o){this.__specs=e||{},Object.keys(this.__specs).forEach(a=>{if(typeof this.__specs[a]=="string"){let n=this.__specs[a],u=this.__specs[n];if(u){let A=u.aliases||[];A.push(a,n),u.aliases=[...new Set(A)],this.__specs[a]=u}else throw new Error(`Alias refers to invalid key: ${n} -> ${a}`)}}),this.__opts=r||{},this.__providers=aBe(o.filter(a=>a!=null&&typeof a=="object")),this.__isFiggyPudding=!0}get(e){return fq(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[o,a]of this.entries())e.call(r,a,o,this)}toJSON(){let e={};return this.forEach((r,o)=>{e[o]=r}),e}*entries(e){for(let o of Object.keys(this.__specs))yield[o,this.get(o)];let r=e||this.__opts.other;if(r){let o=new Set;for(let a of this.__providers){let n=a.entries?a.entries(r):yvt(a);for(let[u,A]of n)r(u)&&!o.has(u)&&(o.add(u),yield[u,A])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new vm(this.__specs,this.__opts,aBe(this.__providers).concat(e)),lBe)}};try{let t=ve("util");vm.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch{}function dvt(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function fq(t,e,r){let o=t.__specs[e];if(r&&!o&&(!t.__opts.other||!t.__opts.other(e)))dvt(e);else{o||(o={});let a;for(let n of t.__providers){if(a=oBe(e,n),a===void 0&&o.aliases&&o.aliases.length){for(let u of o.aliases)if(u!==e&&(a=oBe(u,n),a!==void 0))break}if(a!==void 0)break}return a===void 0&&o.default!==void 0?typeof o.default=="function"?o.default(t):o.default:a}}function oBe(t,e){let r;return e.__isFiggyPudding?r=fq(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var lBe={has(t,e){return e in t.__specs&&fq(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in vm.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};cBe.exports=mvt;function mvt(t,e){function r(...o){return new Proxy(new vm(t,e,o),lBe)}return r}function aBe(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function yvt(t){return Object.keys(t).map(e=>[e,t[e]])}});var pBe=_((ser,BA)=>{"use strict";var kv=ve("crypto"),Evt=uBe(),Cvt=ve("stream").Transform,ABe=["sha256","sha384","sha512"],wvt=/^[a-z0-9+/]+(?:=?=?)$/i,Ivt=/^([^-]+)-([^?]+)([?\S*]*)$/,Bvt=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,vvt=/^[\x21-\x7E]+$/,ia=Evt({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>Fvt},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),_0=class{get isHash(){return!0}constructor(e,r){r=ia(r);let o=!!r.strict;this.source=e.trim();let a=this.source.match(o?Bvt:Ivt);if(!a||o&&!ABe.some(u=>u===a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];this.options=n?n.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=ia(e),e.strict&&!(ABe.some(o=>o===this.algorithm)&&this.digest.match(wvt)&&(this.options||[]).every(o=>o.match(vvt))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Dm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=ia(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(o=>this[o].map(a=>_0.prototype.toString.call(a,e)).filter(a=>a.length).join(r)).filter(o=>o.length).join(r)}concat(e,r){r=ia(r);let o=typeof e=="string"?e:xv(e,r);return IA(`${this.toString(r)} ${o}`,r)}hexDigest(){return IA(this,{single:!0}).hexDigest()}match(e,r){r=ia(r);let o=IA(e,r),a=o.pickAlgorithm(r);return this[a]&&o[a]&&this[a].find(n=>o[a].find(u=>n.digest===u.digest))||!1}pickAlgorithm(e){e=ia(e);let r=e.pickAlgorithm,o=Object.keys(this);if(!o.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return o.reduce((a,n)=>r(a,n)||a)}};BA.exports.parse=IA;function IA(t,e){if(e=ia(e),typeof t=="string")return pq(t,e);if(t.algorithm&&t.digest){let r=new Dm;return r[t.algorithm]=[t],pq(xv(r,e),e)}else return pq(xv(t,e),e)}function pq(t,e){return e.single?new _0(t,e):t.trim().split(/\s+/).reduce((r,o)=>{let a=new _0(o,e);if(a.algorithm&&a.digest){let n=a.algorithm;r[n]||(r[n]=[]),r[n].push(a)}return r},new Dm)}BA.exports.stringify=xv;function xv(t,e){return e=ia(e),t.algorithm&&t.digest?_0.prototype.toString.call(t,e):typeof t=="string"?xv(IA(t,e),e):Dm.prototype.toString.call(t,e)}BA.exports.fromHex=Dvt;function Dvt(t,e,r){r=ia(r);let o=r.options&&r.options.length?`?${r.options.join("?")}`:"";return IA(`${e}-${Buffer.from(t,"hex").toString("base64")}${o}`,r)}BA.exports.fromData=Svt;function Svt(t,e){e=ia(e);let r=e.algorithms,o=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((a,n)=>{let u=kv.createHash(n).update(t).digest("base64"),A=new _0(`${n}-${u}${o}`,e);if(A.algorithm&&A.digest){let p=A.algorithm;a[p]||(a[p]=[]),a[p].push(A)}return a},new Dm)}BA.exports.fromStream=Pvt;function Pvt(t,e){e=ia(e);let r=e.Promise||Promise,o=hq(e);return new r((a,n)=>{t.pipe(o),t.on("error",n),o.on("error",n);let u;o.on("integrity",A=>{u=A}),o.on("end",()=>a(u)),o.on("data",()=>{})})}BA.exports.checkData=bvt;function bvt(t,e,r){if(r=ia(r),e=IA(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let o=e.pickAlgorithm(r),a=kv.createHash(o).update(t).digest("base64"),n=IA({algorithm:o,digest:a}),u=n.match(e,r);if(u||!r.error)return u;if(typeof r.size=="number"&&t.length!==r.size){let A=new Error(`data size mismatch when checking ${e}. + Wanted: ${r.size} + Found: ${t.length}`);throw A.code="EBADSIZE",A.found=t.length,A.expected=r.size,A.sri=e,A}else{let A=new Error(`Integrity checksum failed when using ${o}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw A.code="EINTEGRITY",A.found=n,A.expected=e,A.algorithm=o,A.sri=e,A}}BA.exports.checkStream=xvt;function xvt(t,e,r){r=ia(r);let o=r.Promise||Promise,a=hq(r.concat({integrity:e}));return new o((n,u)=>{t.pipe(a),t.on("error",u),a.on("error",u);let A;a.on("verified",p=>{A=p}),a.on("end",()=>n(A)),a.on("data",()=>{})})}BA.exports.integrityStream=hq;function hq(t){t=ia(t);let e=t.integrity&&IA(t.integrity,t),r=e&&Object.keys(e).length,o=r&&e.pickAlgorithm(t),a=r&&e[o],n=Array.from(new Set(t.algorithms.concat(o?[o]:[]))),u=n.map(kv.createHash),A=0,p=new Cvt({transform(h,E,I){A+=h.length,u.forEach(v=>v.update(h,E)),I(null,h,E)}}).on("end",()=>{let h=t.options&&t.options.length?`?${t.options.join("?")}`:"",E=IA(u.map((v,x)=>`${n[x]}-${v.digest("base64")}${h}`).join(" "),t),I=r&&E.match(e,t);if(typeof t.size=="number"&&A!==t.size){let v=new Error(`stream size mismatch when checking ${e}. + Wanted: ${t.size} + Found: ${A}`);v.code="EBADSIZE",v.found=A,v.expected=t.size,v.sri=e,p.emit("error",v)}else if(t.integrity&&!I){let v=new Error(`${e} integrity checksum failed when using ${o}: wanted ${a} but got ${E}. (${A} bytes)`);v.code="EINTEGRITY",v.found=E,v.expected=a,v.algorithm=o,v.sri=e,p.emit("error",v)}else p.emit("size",A),p.emit("integrity",E),I&&p.emit("verified",I)});return p}BA.exports.create=kvt;function kvt(t){t=ia(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",o=e.map(kv.createHash);return{update:function(a,n){return o.forEach(u=>u.update(a,n)),this},digest:function(a){return e.reduce((u,A)=>{let p=o.shift().digest("base64"),h=new _0(`${A}-${p}${r}`,t);if(h.algorithm&&h.digest){let E=h.algorithm;u[E]||(u[E]=[]),u[E].push(h)}return u},new Dm)}}}var Qvt=new Set(kv.getHashes()),fBe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>Qvt.has(t));function Fvt(t,e){return fBe.indexOf(t.toLowerCase())>=fBe.indexOf(e.toLowerCase())?t:e}});var jBe=_((lir,HBe)=>{var FDt=lL();function RDt(t){return FDt(t)?void 0:t}HBe.exports=RDt});var qBe=_((cir,GBe)=>{var TDt=Hb(),NDt=x8(),LDt=R8(),ODt=Gd(),MDt=dd(),UDt=jBe(),_Dt=v_(),HDt=b8(),jDt=1,GDt=2,qDt=4,YDt=_Dt(function(t,e){var r={};if(t==null)return r;var o=!1;e=TDt(e,function(n){return n=ODt(n,t),o||(o=n.length>1),n}),MDt(t,HDt(t),r),o&&(r=NDt(r,jDt|GDt|qDt,UDt));for(var a=e.length;a--;)LDt(r,e[a]);return r});GBe.exports=YDt});St();Ye();St();var JBe=ve("child_process"),zBe=$e(td());jt();var AC=new Map([]);var a2={};Vt(a2,{BaseCommand:()=>ut,WorkspaceRequiredError:()=>rr,getCli:()=>$pe,getDynamicLibs:()=>Zpe,getPluginConfiguration:()=>pC,openWorkspace:()=>fC,pluginCommands:()=>AC,runExit:()=>nk});jt();var ut=class extends nt{constructor(){super(...arguments);this.cwd=ge.String("--cwd",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<"u")throw new it("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()}};Ye();St();jt();var rr=class extends it{constructor(e,r){let o=V.relative(e,r),a=V.join(e,Ot.fileName);super(`This command can only be run from within a workspace of your project (${o} isn't a workspace of ${a}).`)}};Ye();St();nA();Nl();k1();jt();var RAt=$e(zn());Za();var Zpe=()=>new Map([["@yarnpkg/cli",a2],["@yarnpkg/core",o2],["@yarnpkg/fslib",Vw],["@yarnpkg/libzip",x1],["@yarnpkg/parsers",rI],["@yarnpkg/shell",T1],["clipanion",hI],["semver",RAt],["typanion",Vo]]);Ye();async function fC(t,e){let{project:r,workspace:o}=await Pt.find(t,e);if(!o)throw new rr(r.cwd,e);return o}Ye();St();nA();Nl();k1();jt();var eSt=$e(zn());Za();var $8={};Vt($8,{AddCommand:()=>kh,BinCommand:()=>Qh,CacheCleanCommand:()=>Fh,ClipanionCommand:()=>Kd,ConfigCommand:()=>Lh,ConfigGetCommand:()=>Rh,ConfigSetCommand:()=>Th,ConfigUnsetCommand:()=>Nh,DedupeCommand:()=>Oh,EntryCommand:()=>mC,ExecCommand:()=>Mh,ExplainCommand:()=>Hh,ExplainPeerRequirementsCommand:()=>Uh,HelpCommand:()=>Vd,InfoCommand:()=>jh,LinkCommand:()=>qh,NodeCommand:()=>Yh,PluginCheckCommand:()=>Wh,PluginImportCommand:()=>Jh,PluginImportSourcesCommand:()=>zh,PluginListCommand:()=>Kh,PluginRemoveCommand:()=>Xh,PluginRuntimeCommand:()=>Zh,RebuildCommand:()=>$h,RemoveCommand:()=>e0,RunCommand:()=>t0,RunIndexCommand:()=>Xd,SetResolutionCommand:()=>r0,SetVersionCommand:()=>_h,SetVersionSourcesCommand:()=>Vh,UnlinkCommand:()=>n0,UpCommand:()=>Jf,VersionCommand:()=>Jd,WhyCommand:()=>i0,WorkspaceCommand:()=>a0,WorkspacesListCommand:()=>o0,YarnCommand:()=>Gh,dedupeUtils:()=>pk,default:()=>Sgt,suggestUtils:()=>zc});var kde=$e(td());Ye();Ye();Ye();jt();var _0e=$e(f2());Za();var zc={};Vt(zc,{Modifier:()=>B8,Strategy:()=>uk,Target:()=>p2,WorkspaceModifier:()=>N0e,applyModifier:()=>$ft,extractDescriptorFromPath:()=>v8,extractRangeModifier:()=>L0e,fetchDescriptorFrom:()=>D8,findProjectDescriptors:()=>U0e,getModifier:()=>h2,getSuggestedDescriptors:()=>g2,makeWorkspaceDescriptor:()=>M0e,toWorkspaceModifier:()=>O0e});Ye();Ye();St();var I8=$e(zn()),Xft="workspace:",p2=(o=>(o.REGULAR="dependencies",o.DEVELOPMENT="devDependencies",o.PEER="peerDependencies",o))(p2||{}),B8=(o=>(o.CARET="^",o.TILDE="~",o.EXACT="",o))(B8||{}),N0e=(o=>(o.CARET="^",o.TILDE="~",o.EXACT="*",o))(N0e||{}),uk=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(uk||{});function h2(t,e){return t.exact?"":t.caret?"^":t.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var Zft=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function L0e(t,{project:e}){let r=t.match(Zft);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function $ft(t,e){let{protocol:r,source:o,params:a,selector:n}=W.parseRange(t.range);return I8.default.valid(n)&&(n=`${e}${t.range}`),W.makeDescriptor(t,W.makeRange({protocol:r,source:o,params:a,selector:n}))}function O0e(t){switch(t){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function M0e(t,e){return W.makeDescriptor(t.anchoredDescriptor,`${Xft}${O0e(e)}`)}async function U0e(t,{project:e,target:r}){let o=new Map,a=n=>{let u=o.get(n.descriptorHash);return u||o.set(n.descriptorHash,u={descriptor:n,locators:[]}),u};for(let n of e.workspaces)if(r==="peerDependencies"){let u=n.manifest.peerDependencies.get(t.identHash);u!==void 0&&a(u).locators.push(n.anchoredLocator)}else{let u=n.manifest.dependencies.get(t.identHash),A=n.manifest.devDependencies.get(t.identHash);r==="devDependencies"?A!==void 0?a(A).locators.push(n.anchoredLocator):u!==void 0&&a(u).locators.push(n.anchoredLocator):u!==void 0?a(u).locators.push(n.anchoredLocator):A!==void 0&&a(A).locators.push(n.anchoredLocator)}return o}async function v8(t,{cwd:e,workspace:r}){return await ept(async o=>{V.isAbsolute(t)||(t=V.relative(r.cwd,V.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:a}=r,n=await D8(W.makeIdent(null,"archive"),t,{project:r.project,cache:o,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let u=new Qi,A=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:o,fetcher:p,report:u,resolver:A},E=A.bindDescriptor(n,r.anchoredLocator,h),I=W.convertDescriptorToLocator(E),v=await p.fetch(I,h),x=await Ot.find(v.prefixPath,{baseFs:v.packageFs});if(!x.name)throw new Error("Target path doesn't have a name");return W.makeDescriptor(x.name,t)})}async function g2(t,{project:e,workspace:r,cache:o,target:a,fixed:n,modifier:u,strategies:A,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let[h,E]=t.range!=="unknown"?n||kr.validRange(t.range)||!t.range.match(/^[a-z0-9._-]+$/i)?[t.range,"latest"]:["unknown",t.range]:["unknown","latest"];if(h!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${W.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let I=typeof r<"u"&&r!==null&&r.manifest[a].get(t.identHash)||null,v=[],x=[],C=async R=>{try{await R()}catch(L){x.push(L)}};for(let R of A){if(v.length>=p)break;switch(R){case"keep":await C(async()=>{I&&v.push({descriptor:I,name:`Keep ${W.prettyDescriptor(e.configuration,I)}`,reason:"(no changes)"})});break;case"reuse":await C(async()=>{for(let{descriptor:L,locators:U}of(await U0e(t,{project:e,target:a})).values()){if(U.length===1&&U[0].locatorHash===r.anchoredLocator.locatorHash&&A.includes("keep"))continue;let J=`(originally used by ${W.prettyLocator(e.configuration,U[0])}`;J+=U.length>1?` and ${U.length-1} other${U.length>2?"s":""})`:")",v.push({descriptor:L,name:`Reuse ${W.prettyDescriptor(e.configuration,L)}`,reason:J})}});break;case"cache":await C(async()=>{for(let L of e.storedDescriptors.values())L.identHash===t.identHash&&v.push({descriptor:L,name:`Reuse ${W.prettyDescriptor(e.configuration,L)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await C(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let L=e.tryWorkspaceByIdent(t);if(L===null)return;let U=M0e(L,u);v.push({descriptor:U,name:`Attach ${W.prettyDescriptor(e.configuration,U)}`,reason:`(local workspace at ${de.pretty(e.configuration,L.relativeCwd,de.Type.PATH)})`})});break;case"latest":{let L=e.configuration.get("enableNetwork"),U=e.configuration.get("enableOfflineMode");await C(async()=>{if(a==="peerDependencies")v.push({descriptor:W.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!L&&!U)v.push({descriptor:null,name:"Resolve from latest",reason:de.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let J=await D8(t,E,{project:e,cache:o,workspace:r,modifier:u});J&&v.push({descriptor:J,name:`Use ${W.prettyDescriptor(e.configuration,J)}`,reason:`(resolved from ${U?"the cache":"latest"})`})}})}break}}return{suggestions:v.slice(0,p),rejections:x.slice(0,p)}}async function D8(t,e,{project:r,cache:o,workspace:a,preserveModifier:n=!0,modifier:u}){let A=r.configuration.normalizeDependency(W.makeDescriptor(t,e)),p=new Qi,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),I={project:r,fetcher:h,cache:o,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},v={...I,resolver:E,fetchOptions:I},x=E.bindDescriptor(A,a.anchoredLocator,v),C=await E.getCandidates(x,{},v);if(C.length===0)return null;let R=C[0],{protocol:L,source:U,params:J,selector:te}=W.parseRange(W.convertToManifestRange(R.reference));if(L===r.configuration.get("defaultProtocol")&&(L=null),I8.default.valid(te)){let ae=te;if(typeof u<"u")te=u+te;else if(n!==!1){let me=typeof n=="string"?n:A.range;te=L0e(me,{project:r})+te}let fe=W.makeDescriptor(R,W.makeRange({protocol:L,source:U,params:J,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(fe),{},v)).length!==1&&(te=ae)}return W.makeDescriptor(R,W.makeRange({protocol:L,source:U,params:J,selector:te}))}async function ept(t){return await oe.mktempPromise(async e=>{let r=Ke.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Lr(e,{configuration:r,check:!1,immutable:!1}))})}var kh=class extends ut{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:Ks(pl)});this.silent=ge.Boolean("--silent",{hidden:!0});this.packages=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get("preferInteractive"),p=A||r.get("preferReuse"),h=h2(this,o),E=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(U=>typeof U<"u"),I=A?1/0:1,v=await Promise.all(this.packages.map(async U=>{let J=U.match(/^\.{0,2}\//)?await v8(U,{cwd:this.context.cwd,workspace:a}):W.tryParseDescriptor(U),te=U.match(/^(https?:|git@github)/);if(te)throw new it(`It seems you are trying to add a package using a ${de.pretty(r,`${te[0]}...`,de.Type.RANGE)} url; we now require package names to be explicitly specified. +Try running the command again with the package name prefixed: ${de.pretty(r,"yarn add",de.Type.CODE)} ${de.pretty(r,W.makeDescriptor(W.makeIdent(null,"my-package"),`${te[0]}...`),de.Type.DESCRIPTOR)}`);if(!J)throw new it(`The ${de.pretty(r,U,de.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ae=tpt(a,J,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ae.map(async ce=>{let me=await g2(J,{project:o,workspace:a,cache:n,fixed:u,target:ce,modifier:h,strategies:E,maxResults:I});return{request:J,suggestedDescriptors:me,target:ce}}))})).then(U=>U.flat()),x=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async U=>{for(let{request:J,suggestedDescriptors:{suggestions:te,rejections:ae}}of v)if(te.filter(ce=>ce.descriptor!==null).length===0){let[ce]=ae;if(typeof ce>"u")throw new Error("Assertion failed: Expected an error to have been set");o.configuration.get("enableNetwork")?U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range`):U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),U.reportSeparator(),U.reportExceptionOnce(ce)}});if(x.hasErrors())return x.exitCode();let C=!1,R=[],L=[];for(let{suggestedDescriptors:{suggestions:U},target:J}of v){let te,ae=U.filter(he=>he.descriptor!==null),fe=ae[0].descriptor,ce=ae.every(he=>W.areDescriptorsEqual(he.descriptor,fe));ae.length===1||ce?te=fe:(C=!0,{answer:te}=await(0,_0e.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:U.map(({descriptor:he,name:Be,reason:we})=>he?{name:Be,hint:we,descriptor:he}:{name:Be,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(he){return this.find(he,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=a.manifest[J].get(te.identHash);(typeof me>"u"||me.descriptorHash!==te.descriptorHash)&&(a.manifest[J].set(te.identHash,te),this.optional&&(J==="dependencies"?a.manifest.ensureDependencyMeta({...te,range:"unknown"}).optional=!0:J==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...te,range:"unknown"}).optional=!0)),typeof me>"u"?R.push([a,J,te,E]):L.push([a,J,me,te]))}return await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyAddition,R),await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyReplacement,L),C&&this.context.stdout.write(` +`),await o.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};kh.paths=[["add"]],kh.usage=nt.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"]]});function tpt(t,e,{dev:r,peer:o,preferDev:a,optional:n}){let u=t.manifest["dependencies"].has(e.identHash),A=t.manifest["devDependencies"].has(e.identHash),p=t.manifest["peerDependencies"].has(e.identHash);if((r||o)&&u)throw new it(`Package "${W.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&&!o&&p)throw new it(`Package "${W.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&&A)throw new it(`Package "${W.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&&!o&&p)throw new it(`Package "${W.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 it(`Package "${W.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return o&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:A?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}Ye();Ye();jt();var Qh=class extends ut{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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await Pt.find(r,this.context.cwd);if(await o.restoreInstallState(),this.name){let A=(await un.getPackageAccessibleBinaries(a,{project:o})).get(this.name);if(!A)throw new it(`Couldn't find a binary named "${this.name}" for package "${W.prettyLocator(r,a)}"`);let[,p]=A;return this.context.stdout.write(`${p} +`),0}return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async u=>{let A=await un.getPackageAccessibleBinaries(a,{project:o}),h=Array.from(A.keys()).reduce((E,I)=>Math.max(E,I.length),0);for(let[E,[I,v]]of A)u.reportJson({name:E,source:W.stringifyIdent(I),path:v});if(this.verbose)for(let[E,[I]]of A)u.reportInfo(null,`${E.padEnd(h," ")} ${W.prettyLocator(r,I)}`);else for(let E of A.keys())u.reportInfo(null,E)})).exitCode()}};Qh.paths=[["bin"]],Qh.usage=nt.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"]]});Ye();St();jt();var Fh=class extends ut{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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await Lr.find(r);return(await Nt.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&o.mirrorCwd!==null,u=!this.mirror;n&&(await oe.removePromise(o.mirrorCwd),await r.triggerHook(A=>A.cleanGlobalArtifacts,r)),u&&await oe.removePromise(o.cwd)})).exitCode()}};Fh.paths=[["cache","clean"],["cache","clear"]],Fh.usage=nt.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"]]});Ye();jt();var j0e=$e(d2()),S8=ve("util"),Rh=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(o)>"u")throw new it(`Couldn't find a configuration settings named "${o}"`);let u=r.getSpecial(o,{hideSecrets:!this.unsafe,getNativePaths:!0}),A=_e.convertMapsToIndexableObjects(u),p=a?(0,j0e.default)(A,a):A,h=await Nt.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();S8.inspect.styles.name="cyan",this.context.stdout.write(`${(0,S8.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} +`)}return h.exitCode()}};Rh.paths=[["config","get"]],Rh.usage=nt.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"]]});Ye();jt();var Fge=$e(k8()),Rge=$e(d2()),Tge=$e(Q8()),F8=ve("util"),Th=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it("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 it(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new it("This setting only affects the file it's in, and thus cannot be set from the CLI");let A=this.json?JSON.parse(this.value):this.value;await(this.home?C=>Ke.updateHomeConfiguration(C):C=>Ke.updateConfiguration(o(),C))(C=>{if(n){let R=(0,Fge.default)(C);return(0,Tge.default)(R,this.name,A),R}else return{...C,[a]:A}});let E=(await Ke.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),I=_e.convertMapsToIndexableObjects(E),v=n?(0,Rge.default)(I,n):I;return(await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async C=>{F8.inspect.styles.name="cyan",C.reportInfo(0,`Successfully set ${this.name} to ${(0,F8.inspect)(v,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};Th.paths=[["config","set"]],Th.usage=nt.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"`]]});Ye();jt();var Yge=$e(k8()),Wge=$e(Mge()),Kge=$e(T8()),Nh=class extends ut{constructor(){super(...arguments);this.home=ge.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it("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 it(`Couldn't find a configuration settings named "${a}"`);let A=this.home?h=>Ke.updateHomeConfiguration(h):h=>Ke.updateConfiguration(o(),h);return(await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await A(I=>{if(!(0,Wge.default)(I,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,I;let v=n?(0,Yge.default)(I):{...I};return(0,Kge.default)(v,this.name),v}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Nh.paths=[["config","unset"]],Nh.usage=nt.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"]]});Ye();St();jt();var fk=ve("util"),Lh=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins,{strict:!1}),o=await LE({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(o!==null)return o;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,u=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async A=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)A.reportError(34,`Invalid configuration key "${p}" in ${h}`);A.reportSeparator()}if(this.json)for(let p of a){let h=r.settings.get(p);typeof h>"u"&&A.reportError(34,`No configuration key named "${p}"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),I=r.sources.get(p)??"",v=I&&I[0]!=="<"?ue.fromPortablePath(I):I;A.reportJson({key:p,effective:E,source:v,...h})}else{let p={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},h={},E={children:h};for(let I of a){if(this.noDefaults&&!r.sources.has(I))continue;let v=r.settings.get(I),x=r.sources.get(I)??"",C=r.getSpecial(I,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:"Description",value:de.tuple(de.Type.MARKDOWN,{text:v.description,format:this.cli.format(),paragraphs:!1})},Source:{label:"Source",value:de.tuple(x[0]==="<"?de.Type.CODE:de.Type.PATH,x)}};h[I]={value:de.tuple(de.Type.CODE,I),children:R};let L=(U,J)=>{for(let[te,ae]of J)if(ae instanceof Map){let fe={};U[te]={children:fe},L(fe,ae)}else U[te]={label:te,value:de.tuple(de.Type.NO_HINT,(0,fk.inspect)(ae,p))}};C instanceof Map?L(R,C):R.Value={label:"Value",value:de.tuple(de.Type.NO_HINT,(0,fk.inspect)(C,p))}}a.length!==1&&(n=void 0),$s.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<"u"){let A=a[0],p=(0,fk.inspect)(r.getSpecial(A,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get("enableColors")});this.context.stdout.write(` +`),this.context.stdout.write(`${p} +`)}return u.exitCode()}};Lh.paths=[["config"]],Lh.usage=nt.Usage({description:"display the current configuration",details:` + This command prints the current active configuration settings. + `,examples:[["Print the active configuration settings","$0 config"]]});Ye();jt();Za();var pk={};Vt(pk,{Strategy:()=>m2,acceptedStrategies:()=>O0t,dedupe:()=>N8});Ye();Ye();var Vge=$e(Zo()),m2=(e=>(e.HIGHEST="highest",e))(m2||{}),O0t=new Set(Object.values(m2)),M0t={highest:async(t,e,{resolver:r,fetcher:o,resolveOptions:a,fetchOptions:n})=>{let u=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`);_e.getSetWithDefault(u,E.identHash).add(h)}let A=new Map(_e.mapAndFilter(t.storedDescriptors.values(),p=>W.isVirtualDescriptor(p)?_e.mapAndFilter.skip:[p.descriptorHash,_e.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=A.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 I=t.originalPackages.get(E);if(typeof I>"u")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let v=r.getResolutionDependencies(p,a),x=Object.fromEntries(await _e.allSettledSafe(Object.entries(v).map(async([te,ae])=>{let fe=A.get(ae.descriptorHash);if(typeof fe>"u")throw new Error(`Assertion failed: The descriptor (${ae.descriptorHash}) should have been registered`);let ce=await fe.promise;if(!ce)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[te,ce.updatedPackage]})));if(e.length&&!Vge.default.isMatch(W.stringifyIdent(p),e)||!r.shouldPersistResolution(I,a))return I;let C=u.get(p.identHash);if(typeof C>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(C.size===1)return I;let R=[...C].map(te=>{let ae=t.originalPackages.get(te);if(typeof ae>"u")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ae}),L=await r.getSatisfying(p,x,R,a),U=L.locators?.[0];if(typeof U>"u"||!L.sorted)return I;let J=t.originalPackages.get(U.locatorHash);if(typeof J>"u")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return J}).then(async v=>{let x=await t.preparePackage(v,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:I,updatedPackage:v,resolvedPackage:x})}).catch(v=>{h.reject(v)})}return[...A.values()].map(p=>p.promise)}};async function N8(t,{strategy:e,patterns:r,cache:o,report:a}){let{configuration:n}=t,u=new Qi,A=n.makeResolver(),p=n.makeFetcher(),h={cache:o,checksums:t.storedChecksums,fetcher:p,project:t,report:u,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:A,report:u,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let I=M0t[e],v=await I(t,r,{resolver:A,resolveOptions:E,fetcher:p,fetchOptions:h}),x=Xs.progressViaCounter(v.length);await a.reportProgress(x);let C=0;await Promise.all(v.map(U=>U.then(J=>{if(J===null||J.currentPackage.locatorHash===J.updatedPackage.locatorHash)return;C++;let{descriptor:te,currentPackage:ae,updatedPackage:fe}=J;a.reportInfo(0,`${W.prettyDescriptor(n,te)} can be deduped from ${W.prettyLocator(n,ae)} to ${W.prettyLocator(n,fe)}`),a.reportJson({descriptor:W.stringifyDescriptor(te),currentResolution:W.stringifyLocator(ae),updatedResolution:W.stringifyLocator(fe)}),t.storedResolutions.set(te.descriptorHash,fe.locatorHash)}).finally(()=>x.tick())));let R;switch(C){case 0:R="No packages";break;case 1:R="One package";break;default:R=`${C} packages`}let L=de.pretty(n,e,de.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${L} strategy`),C})}var Oh=class extends ut{constructor(){super(...arguments);this.strategy=ge.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:Ks(m2)});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:Ks(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=await Lr.find(r);await o.restoreInstallState({restoreResolutions:!1});let n=0,u=await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async A=>{n=await N8(o,{strategy:this.strategy,patterns:this.patterns,cache:a,report:A})});return u.hasErrors()?u.exitCode():this.check?n?1:0:await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Oh.paths=[["dedupe"]],Oh.usage=nt.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"]]});Ye();jt();var Kd=class extends ut{async execute(){let{plugins:e}=await Ke.find(this.context.cwd,this.context.plugins),r=[];for(let u of e){let{commands:A}=u[1];if(A){let h=as.from(A).definitions();r.push([u[0],h])}}let o=this.cli.definitions(),a=(u,A)=>u.split(" ").slice(1).join()===A.split(" ").slice(1).join(),n=Jge()["@yarnpkg/builder"].bundles.standard;for(let u of r){let A=u[1];for(let p of A)o.find(h=>a(h.path,p.path)).plugin={name:u[0],isDefault:n.includes(u[0])}}this.context.stdout.write(`${JSON.stringify(o,null,2)} +`)}};Kd.paths=[["--clipanion=definitions"]];var Vd=class extends ut{async execute(){this.context.stdout.write(this.cli.usage(null))}};Vd.paths=[["help"],["--help"],["-h"]];Ye();St();jt();var mC=class extends ut{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!W.tryParseIdent(this.leadingArgument)){let r=V.resolve(this.context.cwd,ue.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};Ye();var Jd=class extends ut{async execute(){this.context.stdout.write(`${rn||""} +`)}};Jd.paths=[["-v"],["--version"]];Ye();Ye();jt();var Mh=class extends ut{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await Pt.find(r,this.context.cwd);return await o.restoreInstallState(),await un.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:o})}};Mh.paths=[["exec"]],Mh.usage=nt.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"']]});Ye();jt();Za();var Uh=class extends ut{constructor(){super(...arguments);this.hash=ge.String({validator:oS(Cy(),[oI(/^p[0-9a-f]{5}$/)])})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),await o.applyLightResolution(),await _0t(this.hash,o,{stdout:this.context.stdout})}};Uh.paths=[["explain","peer-requirements"]],Uh.usage=nt.Usage({description:"explain a set of peer requirements",details:` + A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. + + When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. + + When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. + + **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). + `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});async function _0t(t,e,r){let o=e.peerWarnings.find(n=>n.hash===t);if(typeof o>"u")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Nt.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async n=>{let u=de.mark(e.configuration);switch(o.type){case 2:{n.reportInfo(0,`We have a problem with ${de.pretty(e.configuration,o.requested,de.Type.IDENT)}, which is provided with version ${W.prettyReference(e.configuration,o.version)}.`),n.reportInfo(0,"It is needed by the following direct dependencies of workspaces in your project:"),n.reportSeparator();for(let h of o.requesters.values()){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error("Assertion failed: Expected the package to be registered");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error("Assertion failed: Expected the package to list the peer dependency");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,` ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}let A=[...o.links.values()].filter(h=>!o.requesters.has(h.locatorHash));if(A.length>0){n.reportSeparator(),n.reportInfo(0,`However, those packages themselves have more dependencies listing ${W.prettyIdent(e.configuration,o.requested)} as peer dependency:`),n.reportSeparator();for(let h of A){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error("Assertion failed: Expected the package to be registered");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error("Assertion failed: Expected the package to list the peer dependency");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,` ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}}let p=Array.from(o.links.values(),h=>{let E=e.storedPackages.get(h.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: Expected the package to be registered");let I=E.peerDependencies.get(o.requested.identHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the ident to be registered");return I.range});if(p.length>1){let h=kr.simplifyRanges(p);n.reportSeparator(),h===null?(n.reportInfo(0,"Unfortunately, put together, we found no single range that can satisfy all those peer requirements."),n.reportInfo(0,`Your best option may be to try to upgrade some dependencies with ${de.pretty(e.configuration,"yarn up",de.Type.CODE)}, or silence the warning via ${de.pretty(e.configuration,"logFilters",de.Type.CODE)}.`)):n.reportInfo(0,`Put together, the final range we computed is ${de.pretty(e.configuration,h,de.Type.RANGE)}`)}}break;default:n.reportInfo(0,`The ${de.pretty(e.configuration,"yarn explain peer-requirements",de.Type.CODE)} command doesn't support this warning type yet.`);break}})).exitCode()}Ye();jt();Za();Ye();Ye();St();jt();var zge=$e(zn()),_h=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let A=r.sources.get("yarnPath");if(!A)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(V.contains(p,A))return 0}let o=()=>{if(typeof rn>"u")throw new it("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(A,p)=>({version:p,url:A.replace(/\{\}/g,p)});if(this.version==="self")a={url:o(),version:rn??"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 y2(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await y2(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}[\\/]/)||ue.isAbsolute(this.version))a={url:`file://${V.resolve(ue.toPortablePath(this.version))}`,version:"file"};else if(kr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(kr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(kr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await H0t(r,this.version));else throw new it(`Invalid version descriptor "${this.version}"`);return(await Nt.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async A=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(A.reportInfo(0,`Retrieving ${de.pretty(r,a.url,de.Type.PATH)}`),await oe.readFilePromise(a.url.slice(h.length))):(A.reportInfo(0,`Downloading ${de.pretty(r,a.url,de.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await L8(r,a.version,p,{report:A,useYarnPath:this.useYarnPath})})).exitCode()}};_h.paths=[["set","version"]],_h.usage=nt.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 function H0t(t,e){let o=(await nn.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(a=>kr.satisfiesWithPrereleases(a,e));if(o.length===0)throw new it(`No matching release found for range ${de.pretty(t,e,de.Type.RANGE)}.`);return o[0]}async function y2(t,e){let r=await nn.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new it(`Tag ${de.pretty(t,e,de.Type.RANGE)} not found`);return r.latest[e]}async function L8(t,e,r,{report:o,useYarnPath:a}){let n,u=async()=>(typeof n>"u"&&(n=await r()),n);if(e===null){let te=await u();await oe.mktempPromise(async ae=>{let fe=V.join(ae,"yarn.cjs");await oe.writeFilePromise(fe,te);let{stdout:ce}=await Ur.execvp(process.execPath,[ue.fromPortablePath(fe),"--version"],{cwd:ae,env:{...t.env,YARN_IGNORE_PATH:"1"}});if(e=ce.trim(),!zge.default.valid(e))throw new Error(`Invalid semver version. ${de.pretty(t,"yarn --version",de.Type.CODE)} returned: +${e}`)})}let A=t.projectCwd??t.startingCwd,p=V.resolve(A,".yarn/releases"),h=V.resolve(p,`yarn-${e}.cjs`),E=V.relative(t.startingCwd,h),I=_e.isTaggedYarnVersion(e),v=t.get("yarnPath"),x=!I,C=x||!!v||!!a;if(a===!1){if(x)throw new zt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");C=!1}else!C&&!process.env.COREPACK_ROOT&&(o.reportWarning(0,`You don't seem to have ${de.applyHyperlink(t,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${de.applyHyperlink(t,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),C=!0);if(C){let te=await u();o.reportInfo(0,`Saving the new release in ${de.pretty(t,E,"magenta")}`),await oe.removePromise(V.dirname(h)),await oe.mkdirPromise(V.dirname(h),{recursive:!0}),await oe.writeFilePromise(h,te,{mode:493}),await Ke.updateConfiguration(A,{yarnPath:V.relative(A,h)})}else await oe.removePromise(V.dirname(h)),await Ke.updateConfiguration(A,{yarnPath:Ke.deleteProperty});let R=await Ot.tryFind(A)||new Ot;R.packageManager=`yarn@${I?e:await y2(t,"stable")}`;let L={};R.exportTo(L);let U=V.join(A,Ot.fileName),J=`${JSON.stringify(L,null,R.indent)} +`;return await oe.changeFilePromise(U,J,{automaticNewlines:!0}),{bundleVersion:e}}function Xge(t){return wr[AS(t)]}var j0t=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function G0t(t){let r=`https://repo.yarnpkg.com/${_e.isTaggedYarnVersion(rn)?rn:await y2(t,"canary")}/packages/gatsby/content/advanced/error-codes.md`,o=await nn.get(r,{configuration:t});return new Map(Array.from(o.toString().matchAll(j0t),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=Xge(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 Hh=class extends ut{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:aI(Cy(),[oI(/^YN[0-9]{4}$/)])});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let o=Xge(this.code),a=de.pretty(r,o,de.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),A=(await G0t(r)).get(this.code),p=typeof A<"u"?de.jsonOrPretty(this.json,r,de.tuple(de.Type.MARKDOWN,{text:A,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}: +${de.jsonOrPretty(this.json,r,de.tuple(de.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md"))} +`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:o,details:p})} +`):this.context.stdout.write(`${n} + +${p} +`)}else{let o={children:_e.mapAndFilter(Object.entries(wr),([a,n])=>Number.isNaN(Number(a))?_e.mapAndFilter.skip:{label:Wu(Number(a)),value:de.tuple(de.Type.CODE,n)})};$s.emitTree(o,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Hh.paths=[["explain"]],Hh.usage=nt.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"]]});Ye();St();jt();var Zge=$e(Zo()),jh=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a&&!this.all)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=new Set(this.extra);this.cache&&u.add("cache"),this.dependents&&u.add("dependents"),this.manifest&&u.add("manifest");let A=(ae,{recursive:fe})=>{let ce=ae.anchoredLocator.locatorHash,me=new Map,he=[ce];for(;he.length>0;){let Be=he.shift();if(me.has(Be))continue;let we=o.storedPackages.get(Be);if(typeof we>"u")throw new Error("Assertion failed: Expected the package to be registered");if(me.set(Be,we),W.isVirtualLocator(we)&&he.push(W.devirtualizeLocator(we).locatorHash),!(!fe&&Be!==ce))for(let g of we.dependencies.values()){let Ee=o.storedResolutions.get(g.descriptorHash);if(typeof Ee>"u")throw new Error("Assertion failed: Expected the resolution to be registered");he.push(Ee)}}return me.values()},p=({recursive:ae})=>{let fe=new Map;for(let ce of o.workspaces)for(let me of A(ce,{recursive:ae}))fe.set(me.locatorHash,me);return fe.values()},h=({all:ae,recursive:fe})=>ae&&fe?o.storedPackages.values():ae?p({recursive:fe}):A(a,{recursive:fe}),E=({all:ae,recursive:fe})=>{let ce=h({all:ae,recursive:fe}),me=this.patterns.map(we=>{let g=W.parseLocator(we),Ee=Zge.default.makeRe(W.stringifyIdent(g)),Se=W.isVirtualLocator(g),le=Se?W.devirtualizeLocator(g):g;return ne=>{let ee=W.stringifyIdent(ne);if(!Ee.test(ee))return!1;if(g.reference==="unknown")return!0;let Ie=W.isVirtualLocator(ne),Fe=Ie?W.devirtualizeLocator(ne):ne;return!(Se&&Ie&&g.reference!==ne.reference||le.reference!==Fe.reference)}}),he=_e.sortMap([...ce],we=>W.stringifyLocator(we));return{selection:he.filter(we=>me.length===0||me.some(g=>g(we))),sortedLookup:he}},{selection:I,sortedLookup:v}=E({all:this.all,recursive:this.recursive});if(I.length===0)throw new it("No package matched your request");let x=new Map;if(this.dependents)for(let ae of v)for(let fe of ae.dependencies.values()){let ce=o.storedResolutions.get(fe.descriptorHash);if(typeof ce>"u")throw new Error("Assertion failed: Expected the resolution to be registered");_e.getArrayWithDefault(x,ce).push(ae)}let C=new Map;for(let ae of v){if(!W.isVirtualLocator(ae))continue;let fe=W.devirtualizeLocator(ae);_e.getArrayWithDefault(C,fe.locatorHash).push(ae)}let R={},L={children:R},U=r.makeFetcher(),J={project:o,fetcher:U,cache:n,checksums:o.storedChecksums,report:new Qi,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ae,fe,ce)=>{if(!fe.has("manifest"))return;let me=await U.fetch(ae,J),he;try{he=await Ot.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}ce("Manifest",{License:de.tuple(de.Type.NO_HINT,he.license),Homepage:de.tuple(de.Type.URL,he.raw.homepage??null)})},async(ae,fe,ce)=>{if(!fe.has("cache"))return;let me=o.storedChecksums.get(ae.locatorHash)??null,he=n.getLocatorPath(ae,me),Be;if(he!==null)try{Be=await oe.statPromise(he)}catch{}let we=typeof Be<"u"?[Be.size,de.Type.SIZE]:void 0;ce("Cache",{Checksum:de.tuple(de.Type.NO_HINT,me),Path:de.tuple(de.Type.PATH,he),Size:we})}];for(let ae of I){let fe=W.isVirtualLocator(ae);if(!this.virtuals&&fe)continue;let ce={},me={value:[ae,de.Type.LOCATOR],children:ce};if(R[W.stringifyLocator(ae)]=me,this.nameOnly){delete me.children;continue}let he=C.get(ae.locatorHash);typeof he<"u"&&(ce.Instances={label:"Instances",value:de.tuple(de.Type.NUMBER,he.length)}),ce.Version={label:"Version",value:de.tuple(de.Type.NO_HINT,ae.version)};let Be=(g,Ee)=>{let Se={};if(ce[g]=Se,Array.isArray(Ee))Se.children=Ee.map(le=>({value:le}));else{let le={};Se.children=le;for(let[ne,ee]of Object.entries(Ee))typeof ee>"u"||(le[ne]={label:ne,value:ee})}};if(!fe){for(let g of te)await g(ae,u,Be);await r.triggerHook(g=>g.fetchPackageInfo,ae,u,Be)}ae.bin.size>0&&!fe&&Be("Exported Binaries",[...ae.bin.keys()].map(g=>de.tuple(de.Type.PATH,g)));let we=x.get(ae.locatorHash);typeof we<"u"&&we.length>0&&Be("Dependents",we.map(g=>de.tuple(de.Type.LOCATOR,g))),ae.dependencies.size>0&&!fe&&Be("Dependencies",[...ae.dependencies.values()].map(g=>{let Ee=o.storedResolutions.get(g.descriptorHash),Se=typeof Ee<"u"?o.storedPackages.get(Ee)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:Se})})),ae.peerDependencies.size>0&&fe&&Be("Peer dependencies",[...ae.peerDependencies.values()].map(g=>{let Ee=ae.dependencies.get(g.identHash),Se=typeof Ee<"u"?o.storedResolutions.get(Ee.descriptorHash)??null:null,le=Se!==null?o.storedPackages.get(Se)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:le})}))}$s.emitTree(L,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};jh.paths=[["info"]],jh.usage=nt.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"]]});Ye();St();Nl();var hk=$e(td());jt();var O8=$e(zn());Za();var q0t=[{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"}],Gh=class extends ut{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:Ks(pl)});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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let o=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await LE({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:!hk.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:!hk.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:!o},{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:!hk.default.NETLIFY}]);if(a!==null)return a;let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new it(`${de.pretty(r,"--immutable",de.Type.CODE)} and ${de.pretty(r,"--immutable-cache",de.Type.CODE)} cannot be used with ${de.pretty(r,"--mode=update-lockfile",de.Type.CODE)}`);let u=(this.immutable??r.get("enableImmutableInstalls"))&&!n,A=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{let U=!1;await K0t(r,u)&&(L.reportInfo(48,"Automatically removed core plugins that are now builtins \u{1F44D}"),U=!0),await W0t(r,u)&&(L.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),U=!0),U&&L.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{if(Ke.telemetry?.isNew)Ke.telemetry.commitTips(),L.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),L.reportInfo(65,`Run ${de.pretty(r,"yarn config set --home enableTelemetry 0",de.Type.CODE)} to disable`),L.reportSeparator();else if(Ke.telemetry?.shouldShowTips){let U=await nn.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let J=null;if(rn!==null){let ae=O8.default.prerelease(rn)?"canary":"stable",fe=U.latest[ae];O8.default.gt(fe,rn)&&(J=[ae,fe])}if(J)Ke.telemetry.commitTips(),L.reportInfo(88,`${de.applyStyle(r,`A new ${J[0]} version of Yarn is available:`,de.Style.BOLD)} ${W.prettyReference(r,J[1])}!`),L.reportInfo(88,`Upgrade now by running ${de.pretty(r,`yarn set version ${J[1]}`,de.Type.CODE)}`),L.reportSeparator();else{let te=Ke.telemetry.selectTip(U.tips);te&&(L.reportInfo(89,de.pretty(r,te.message,de.Type.MARKDOWN_INLINE)),te.url&&L.reportInfo(89,`Learn more at ${te.url}`),L.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await Pt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{let U={};for(let J of q0t)J.selector(E)&&typeof r.sources.get(J.name)>"u"&&(r.use("",{[J.name]:J.value},p.cwd,{overwrite:!0}),U[J.name]=J.value);Object.keys(U).length>0&&(await Ke.updateConfiguration(p.cwd,U),L.reportInfo(87,"Migrated your project to the latest Yarn version \u{1F680}"),L.reportSeparator())});if(R.hasErrors())return R.exitCode()}let I=await Lr.find(r,{immutable:A,check:this.checkCache});if(!h)throw new rr(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let v=r.get("enableHardenedMode");v&&typeof r.sources.get("enableHardenedMode")>"u"&&await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{R.reportWarning(0,"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled."),R.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${de.applyHyperlink(r,"documentation","https://yarnpkg.com/features/security#hardened-mode")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??v)&&(p.lockfileNeedsRefresh=!0);let x=this.checkResolutions??v;return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:I,report:R,immutable:u,checkResolutions:x,mode:this.mode})})).exitCode()}};Gh.paths=[["install"],nt.Default],Gh.usage=nt.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"]]});var Y0t="<<<<<<<";async function W0t(t,e){if(!t.projectCwd)return!1;let r=V.join(t.projectCwd,dr.lockfile);if(!await oe.existsPromise(r)||!(await oe.readFilePromise(r,"utf8")).includes(Y0t))return!1;if(e)throw new zt(47,"Cannot autofix a lockfile when running an immutable install");let a=await Ur.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Ur.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0&&(a=await Ur.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0)throw new zt(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 A=>{let p=await Ur.execvp("git",["show",`${A}:./${dr.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new zt(83,`Git returned an error when trying to access the lockfile content in ${A}`);try{return Ki(p.stdout)}catch{throw new zt(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(A=>!!A.__metadata);for(let A of n){if(A.__metadata.version<7)for(let p of Object.keys(A)){if(p==="__metadata")continue;let h=W.parseDescriptor(p,!0),E=t.normalizeDependency(h),I=W.stringifyDescriptor(E);I!==p&&(A[I]=A[p],delete A[p])}for(let p of Object.keys(A)){if(p==="__metadata")continue;let h=A[p].checksum;typeof h=="string"&&h.includes("/")||(A[p].checksum=`${A.__metadata.cacheKey}/${h}`)}}let u=Object.assign({},...n);u.__metadata.version=`${Math.min(...n.map(A=>parseInt(A.__metadata.version??0)))}`,u.__metadata.cacheKey="merged";for(let[A,p]of Object.entries(u))typeof p=="string"&&delete u[A];return await oe.changeFilePromise(r,Ba(u),{automaticNewlines:!0}),!0}async function K0t(t,e){if(!t.projectCwd)return!1;let r=[],o=V.join(t.projectCwd,".yarn/plugins/@yarnpkg");return await Ke.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let u=n.filter(A=>{if(!A.path)return!0;let p=V.resolve(t.projectCwd,A.path),h=v1.has(A.spec)&&V.contains(o,p);return h&&r.push(p),!h});return u.length===0?Ke.deleteProperty:u.length===n.length?n:u}},{immutable:e})?(await Promise.all(r.map(async n=>{await oe.removePromise(n)})),!0):!1}Ye();St();jt();var qh=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=o.topLevelWorkspace,A=[];for(let p of this.destinations){let h=V.resolve(this.context.cwd,ue.toPortablePath(p)),E=await Ke.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await Pt.find(E,h);if(o.cwd===I.cwd)throw new it(`Invalid destination '${p}'; Can't link the project to itself`);if(!v)throw new rr(I.cwd,h);if(this.all){let x=!1;for(let C of I.workspaces)C.manifest.name&&(!C.manifest.private||this.private)&&(A.push(C),x=!0);if(!x)throw new it(`No workspace found to be linked in the target project: ${p}`)}else{if(!v.manifest.name)throw new it(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(v.manifest.private&&!this.private)throw new it(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);A.push(v)}}for(let p of A){let h=W.stringifyIdent(p.anchoredLocator),E=this.relative?V.relative(o.cwd,p.cwd):p.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};qh.paths=[["link"]],qh.usage=nt.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"]]});jt();var Yh=class extends ut{constructor(){super(...arguments);this.args=ge.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};Yh.paths=[["node"]],Yh.usage=nt.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"]]});Ye();jt();var Wh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await Ke.findRcFiles(this.context.cwd);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let u of o)if(!!u.data?.plugins)for(let A of u.data.plugins){if(!A.checksum||!A.spec.match(/^https?:/))continue;let p=await nn.get(A.spec,{configuration:r}),h=wn.makeHash(p);if(A.checksum===h)continue;let E=de.pretty(r,A.path,de.Type.PATH),I=de.pretty(r,A.spec,de.Type.URL),v=`${E} is different from the file provided by ${I}`;n.reportJson({...A,newChecksum:h}),n.reportError(0,v)}})).exitCode()}};Wh.paths=[["plugin","check"]],Wh.usage=nt.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"]]});Ye();Ye();St();jt();var nde=ve("os");Ye();St();jt();var $ge=ve("os");Ye();Nl();jt();var V0t="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function zd(t,e){let r=await nn.get(V0t,{configuration:t}),o=Ki(r.toString());return Object.fromEntries(Object.entries(o).filter(([a,n])=>!e||kr.satisfiesWithPrereleases(e,n.range??"<4.0.0-rc.1")))}var Kh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await zd(r,rn);for(let[u,{experimental:A,...p}]of Object.entries(n)){let h=u;A&&(h+=" [experimental]"),a.reportJson({name:u,experimental:A,...p}),a.reportInfo(null,h)}})).exitCode()}};Kh.paths=[["plugin","list"]],Kh.usage=nt.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"]]});var J0t=/^[0-9]+$/,z0t=process.platform==="win32";function ede(t){return J0t.test(t)?`pull/${t}/head`:t}var X0t=({repository:t,branch:e},r)=>[["git","init",ue.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",ede(e)],["git","reset","--hard","FETCH_HEAD"]],Z0t=({branch:t})=>[["git","fetch","origin","--depth=1",ede(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx","-e","packages/yarnpkg-cli/bundles"]],$0t=({plugins:t,noMinify:e},r,o)=>[["yarn","build:cli",...new Array().concat(...t.map(a=>["--plugin",V.resolve(o,a)])),...e?["--no-minify"]:[],"|"],[z0t?"move":"mv","packages/yarnpkg-cli/bundles/yarn.js",ue.fromPortablePath(r),"|"]],Vh=class extends ut{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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=typeof this.installPath<"u"?V.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):V.resolve(ue.toPortablePath((0,$ge.tmpdir)()),"yarnpkg-sources",wn.makeHash(this.repository).slice(0,6));return(await Nt.start({configuration:r,stdout:this.context.stdout},async u=>{await M8(this,{configuration:r,report:u,target:a}),u.reportSeparator(),u.reportInfo(0,"Building a fresh bundle"),u.reportSeparator();let A=await Ur.execvp("git",["rev-parse","--short","HEAD"],{cwd:a,strict:!0}),p=V.join(a,`packages/yarnpkg-cli/bundles/yarn-${A.stdout.trim()}.js`);oe.existsSync(p)||(await E2($0t(this,p,a),{configuration:r,context:this.context,target:a}),u.reportSeparator());let h=await oe.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await L8(r,null,async()=>h,{report:u});this.skipPlugins||await egt(this,E,{project:o,report:u,target:a})}})).exitCode()}};Vh.paths=[["set","version","from","sources"]],Vh.usage=nt.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 function E2(t,{configuration:e,context:r,target:o}){for(let[a,...n]of t){let u=n[n.length-1]==="|";if(u&&n.pop(),u)await Ur.pipevp(a,n,{cwd:o,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${de.pretty(e,` $ ${[a,...n].join(" ")}`,"grey")} +`);try{await Ur.execvp(a,n,{cwd:o,strict:!0})}catch(A){throw r.stdout.write(A.stdout||A.stack),A}}}}async function M8(t,{configuration:e,report:r,target:o}){let a=!1;if(!t.force&&oe.existsSync(V.join(o,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await E2(Z0t(t),{configuration:e,context:t.context,target:o}),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 oe.removePromise(o),await oe.mkdirPromise(o,{recursive:!0}),await E2(X0t(t,o),{configuration:e,context:t.context,target:o}))}async function egt(t,e,{project:r,report:o,target:a}){let n=await zd(r.configuration,e),u=new Set(Object.keys(n));for(let A of r.configuration.plugins.keys())!u.has(A)||await U8(A,t,{project:r,report:o,target:a})}Ye();Ye();St();jt();var tde=$e(zn()),rde=ve("vm");var Jh=class extends ut{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Pt.find(r,this.context.cwd),u,A;if(this.name.match(/^\.{0,2}[\\/]/)||ue.isAbsolute(this.name)){let p=V.resolve(this.context.cwd,ue.toPortablePath(this.name));a.reportInfo(0,`Reading ${de.pretty(r,p,de.Type.PATH)}`),u=V.relative(n.cwd,p),A=await oe.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new zt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}u=this.name,p=this.name}else{let h=W.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!tde.default.valid(h.reference))throw new zt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let E=W.stringifyIdent(h),I=await zd(r,rn);if(!Object.hasOwn(I,E)){let v=`Couldn't find a plugin named ${W.prettyIdent(r,h)} on the remote registry. +`;throw r.plugins.has(E)?v+=`A plugin named ${W.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:v+=`Note that only the plugins referenced on our website (${de.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",de.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${de.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",de.Type.URL)}).`,new zt(51,v)}u=E,p=I[E].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${E}/${h.reference}/`):rn!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${rn}/`))}a.reportInfo(0,`Downloading ${de.pretty(r,p,"green")}`),A=await nn.get(p,{configuration:r})}await _8(u,A,{checksum:this.checksum,project:n,report:a})})).exitCode()}};Jh.paths=[["plugin","import"]],Jh.usage=nt.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 function _8(t,e,{checksum:r=!0,project:o,report:a}){let{configuration:n}=o,u={},A={exports:u};(0,rde.runInNewContext)(e.toString(),{module:A,exports:u});let h=`.yarn/plugins/${A.exports.name}.cjs`,E=V.resolve(o.cwd,h);a.reportInfo(0,`Saving the new plugin in ${de.pretty(n,h,"magenta")}`),await oe.mkdirPromise(V.dirname(E),{recursive:!0}),await oe.writeFilePromise(E,e);let I={path:h,spec:t};r&&(I.checksum=wn.makeHash(e)),await Ke.addPlugin(o.cwd,[I])}var tgt=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],zh=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=typeof this.installPath<"u"?V.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):V.resolve(ue.toPortablePath((0,nde.tmpdir)()),"yarnpkg-sources",wn.makeHash(this.repository).slice(0,6));return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:u}=await Pt.find(r,this.context.cwd),A=W.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=W.stringifyIdent(A),h=await zd(r,rn);if(!Object.hasOwn(h,p))throw new zt(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 M8(this,{configuration:r,report:n,target:o}),await U8(E,this,{project:u,report:n,target:o})})).exitCode()}};zh.paths=[["plugin","import","from","sources"]],zh.usage=nt.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 function U8(t,{context:e,noMinify:r},{project:o,report:a,target:n}){let u=t.replace(/@yarnpkg\//,""),{configuration:A}=o;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${u}`),a.reportSeparator(),await E2(tgt({pluginName:u,noMinify:r},n),{configuration:A,context:e,target:n}),a.reportSeparator();let p=V.resolve(n,`packages/${u}/bundles/${t}.js`),h=await oe.readFilePromise(p);await _8(t,h,{project:o,report:a})}Ye();St();jt();var Xh=class extends ut{constructor(){super(...arguments);this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let u=this.name,A=W.parseIdent(u);if(!r.plugins.has(u))throw new it(`${W.prettyIdent(r,A)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${u}.cjs`,h=V.resolve(o.cwd,p);oe.existsSync(h)&&(n.reportInfo(0,`Removing ${de.pretty(r,p,de.Type.PATH)}...`),await oe.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await Ke.updateConfiguration(o.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let I=E.filter(v=>v.path!==p);return I.length===0?Ke.deleteProperty:I.length===E.length?E:I}})})).exitCode()}};Xh.paths=[["plugin","remove"]],Xh.usage=nt.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"]]});Ye();jt();var Zh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let u=this.context.plugins.plugins.has(n),A=n;u&&(A+=" [builtin]"),a.reportJson({name:n,builtin:u}),a.reportInfo(null,`${A}`)}})).exitCode()}};Zh.paths=[["plugin","runtime"]],Zh.usage=nt.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"]]});Ye();Ye();jt();var $h=class extends ut{constructor(){super(...arguments);this.idents=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=new Set;for(let A of this.idents)u.add(W.parseIdent(A).identHash);if(await o.restoreInstallState({restoreResolutions:!1}),await o.resolveEverything({cache:n,report:new Qi}),u.size>0)for(let A of o.storedPackages.values())u.has(A.identHash)&&(o.storedBuildState.delete(A.locatorHash),o.skippedBuilds.delete(A.locatorHash));else o.storedBuildState.clear(),o.skippedBuilds.clear();return await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};$h.paths=[["rebuild"]],$h.usage=nt.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"]]});Ye();Ye();Ye();jt();var H8=$e(Zo());Za();var e0=class extends ut{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:Ks(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.all?o.workspaces:[a],A=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,E=[];for(let C of this.patterns){let R=!1,L=W.parseIdent(C);for(let U of u){let J=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,H8.default)(J,C))U.manifest.peerDependenciesMeta.delete(te),h=!0,R=!0;for(let te of A){let ae=U.manifest.getForScope(te),fe=[...ae.values()].map(ce=>W.stringifyIdent(ce));for(let ce of(0,H8.default)(fe,W.stringifyIdent(L))){let{identHash:me}=W.parseIdent(ce),he=ae.get(me);if(typeof he>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");U.manifest[te].delete(me),E.push([U,te,he]),h=!0,R=!0}}}R||p.push(C)}let I=p.length>1?"Patterns":"Pattern",v=p.length>1?"don't":"doesn't",x=this.all?"any":"this";if(p.length>0)throw new it(`${I} ${de.prettyList(r,p,de.Type.CODE)} ${v} match any packages referenced by ${x} workspace`);return h?(await r.triggerMultipleHooks(C=>C.afterWorkspaceDependencyRemoval,E),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};e0.paths=[["remove"]],e0.usage=nt.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}'"]]});Ye();Ye();jt();var ide=ve("util"),Xd=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return(await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async u=>{let A=a.manifest.scripts,p=_e.sortMap(A.keys(),I=>I),h={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},E=p.reduce((I,v)=>Math.max(I,v.length),0);for(let[I,v]of A.entries())u.reportInfo(null,`${I.padEnd(E," ")} ${(0,ide.inspect)(v,h)}`),u.reportJson({name:I,script:v})})).exitCode()}};Xd.paths=[["run"]];Ye();Ye();jt();var t0=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a,locator:n}=await Pt.find(r,this.context.cwd);await o.restoreInstallState();let u=this.topLevel?o.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await un.hasPackageScript(u,this.scriptName,{project:o}))return await un.executePackageScript(u,this.scriptName,this.args,{project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let A=await un.getPackageAccessibleBinaries(u,{project:o});if(A.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 un.executePackageAccessibleBinary(u,this.scriptName,this.args,{cwd:this.context.cwd,project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:A})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let E=(await Promise.all(o.workspaces.map(async I=>I.manifest.scripts.has(this.scriptName)?I:null))).filter(I=>I!==null);if(E.length===1)return await un.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 it(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${W.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 it(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${W.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new it("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,I]of AC)for(let v of I)if(h.length>=v.length&&JSON.stringify(h.slice(0,v.length))===JSON.stringify(v))throw new it(`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 it(`Couldn't find a script named "${this.scriptName}".`)}}};t0.paths=[["run"]],t0.usage=nt.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"]]});Ye();Ye();jt();var r0=class extends ut{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(await o.restoreInstallState({restoreResolutions:!1}),!a)throw new rr(o.cwd,this.context.cwd);let u=W.parseDescriptor(this.descriptor,!0),A=W.makeDescriptor(u,this.resolution);return o.storedDescriptors.set(u.descriptorHash,u),o.storedDescriptors.set(A.descriptorHash,A),o.resolutionAliases.set(u.descriptorHash,A.descriptorHash),await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};r0.paths=[["set","resolution"]],r0.usage=nt.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 1.5.0"]]});Ye();St();jt();var sde=$e(Zo()),n0=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=o.topLevelWorkspace,A=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of u.manifest.resolutions)h.startsWith("portal:")&&A.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=V.resolve(this.context.cwd,ue.toPortablePath(p));if(_e.isPathLike(p)){let E=await Ke.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await Pt.find(E,h);if(!v)throw new rr(I.cwd,h);if(this.all){for(let x of I.workspaces)x.manifest.name&&A.add(W.stringifyIdent(x.anchoredLocator));if(A.size===0)throw new it("No workspace found to be unlinked in the target project")}else{if(!v.manifest.name)throw new it("The target workspace doesn't have a name and thus cannot be unlinked");A.add(W.stringifyIdent(v.anchoredLocator))}}else{let E=[...u.manifest.resolutions.map(({pattern:I})=>I.descriptor.fullName)];for(let I of(0,sde.default)(E,p))A.add(I)}}return u.manifest.resolutions=u.manifest.resolutions.filter(({pattern:p})=>!A.has(p.descriptor.fullName)),await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};n0.paths=[["unlink"]],n0.usage=nt.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}'"]]});Ye();Ye();Ye();jt();var ode=$e(f2()),j8=$e(Zo());Za();var Jf=class extends ut{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:Ks(pl)});this.patterns=ge.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=[...o.storedDescriptors.values()],A=u.map(E=>W.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(W.parseDescriptor(E).range!=="unknown")throw new it("Ranges aren't allowed when using --recursive");for(let I of(0,j8.default)(A,E)){let v=W.parseIdent(I);p.add(v.identHash)}}let h=u.filter(E=>p.has(E.identHash));for(let E of h)o.storedDescriptors.delete(E.descriptorHash),o.storedResolutions.delete(E.descriptorHash);return await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get("preferInteractive"),p=h2(this,o),h=A?["keep","reuse","project","latest"]:["project","latest"],E=[],I=[];for(let L of this.patterns){let U=!1,J=W.parseDescriptor(L),te=W.stringifyIdent(J);for(let ae of o.workspaces)for(let fe of["dependencies","devDependencies"]){let me=[...ae.manifest.getForScope(fe).values()].map(Be=>W.stringifyIdent(Be)),he=te==="*"?me:(0,j8.default)(me,te);for(let Be of he){let we=W.parseIdent(Be),g=ae.manifest[fe].get(we.identHash);if(typeof g>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let Ee=W.makeDescriptor(we,J.range);E.push(Promise.resolve().then(async()=>[ae,fe,g,await g2(Ee,{project:o,workspace:ae,cache:n,target:fe,fixed:u,modifier:p,strategies:h})])),U=!0}}U||I.push(L)}if(I.length>1)throw new it(`Patterns ${de.prettyList(r,I,de.Type.CODE)} don't match any packages referenced by any workspace`);if(I.length>0)throw new it(`Pattern ${de.prettyList(r,I,de.Type.CODE)} doesn't match any packages referenced by any workspace`);let v=await Promise.all(E),x=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async L=>{for(let[,,U,{suggestions:J,rejections:te}]of v){let ae=J.filter(fe=>fe.descriptor!==null);if(ae.length===0){let[fe]=te;if(typeof fe>"u")throw new Error("Assertion failed: Expected an error to have been set");let ce=this.cli.error(fe);o.configuration.get("enableNetwork")?L.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range + +${ce}`):L.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled) + +${ce}`)}else ae.length>1&&!A&&L.reportError(27,`${W.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let C=!1,R=[];for(let[L,U,,{suggestions:J}]of v){let te,ae=J.filter(he=>he.descriptor!==null),fe=ae[0].descriptor,ce=ae.every(he=>W.areDescriptorsEqual(he.descriptor,fe));ae.length===1||ce?te=fe:(C=!0,{answer:te}=await(0,ode.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${W.prettyWorkspace(r,L)} \u276F ${U}?`,choices:J.map(({descriptor:he,name:Be,reason:we})=>he?{name:Be,hint:we,descriptor:he}:{name:Be,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(he){return this.find(he,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=L.manifest[U].get(te.identHash);if(typeof me>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(me.descriptorHash!==te.descriptorHash)L.manifest[U].set(te.identHash,te),R.push([L,U,me,te]);else{let he=r.makeResolver(),Be={project:o,resolver:he},we=r.normalizeDependency(me),g=he.bindDescriptor(we,L.anchoredLocator,Be);o.forgetResolution(g)}}return await r.triggerMultipleHooks(L=>L.afterWorkspaceDependencyReplacement,R),C&&this.context.stdout.write(` +`),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Jf.paths=[["up"]],Jf.usage=nt.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'"]]}),Jf.schema=[cI("recursive",qu.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];Ye();Ye();Ye();jt();var i0=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=W.parseIdent(this.package).identHash,u=this.recursive?ngt(o,n,{configuration:r,peers:this.peers}):rgt(o,n,{configuration:r,peers:this.peers});$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};i0.paths=[["why"]],i0.usage=nt.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"]]});function rgt(t,e,{configuration:r,peers:o}){let a=_e.sortMap(t.storedPackages.values(),A=>W.stringifyLocator(A)),n={},u={children:n};for(let A of a){let p={};for(let E of A.dependencies.values()){if(!o&&A.peerDependencies.has(E.identHash))continue;let I=t.storedResolutions.get(E.descriptorHash);if(!I)throw new Error("Assertion failed: The resolution should have been registered");let v=t.storedPackages.get(I);if(!v)throw new Error("Assertion failed: The package should have been registered");if(v.identHash!==e)continue;{let C=W.stringifyLocator(A);n[C]={value:[A,de.Type.LOCATOR],children:p}}let x=W.stringifyLocator(v);p[x]={value:[{descriptor:E,locator:v},de.Type.DEPENDENT]}}}return u}function ngt(t,e,{configuration:r,peers:o}){let a=_e.sortMap(t.workspaces,v=>W.stringifyLocator(v.anchoredLocator)),n=new Set,u=new Set,A=v=>{if(n.has(v.locatorHash))return u.has(v.locatorHash);if(n.add(v.locatorHash),v.identHash===e)return u.add(v.locatorHash),!0;let x=!1;v.identHash===e&&(x=!0);for(let C of v.dependencies.values()){if(!o&&v.peerDependencies.has(C.identHash))continue;let R=t.storedResolutions.get(C.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let L=t.storedPackages.get(R);if(!L)throw new Error("Assertion failed: The package should have been registered");A(L)&&(x=!0)}return x&&u.add(v.locatorHash),x};for(let v of a)A(v.anchoredPackage);let p=new Set,h={},E={children:h},I=(v,x,C)=>{if(!u.has(v.locatorHash))return;let R=C!==null?de.tuple(de.Type.DEPENDENT,{locator:v,descriptor:C}):de.tuple(de.Type.LOCATOR,v),L={},U={value:R,children:L},J=W.stringifyLocator(v);if(x[J]=U,!p.has(v.locatorHash)&&(p.add(v.locatorHash),!(C!==null&&t.tryWorkspaceByLocator(v))))for(let te of v.dependencies.values()){if(!o&&v.peerDependencies.has(te.identHash))continue;let ae=t.storedResolutions.get(te.descriptorHash);if(!ae)throw new Error("Assertion failed: The resolution should have been registered");let fe=t.storedPackages.get(ae);if(!fe)throw new Error("Assertion failed: The package should have been registered");I(fe,L,te)}};for(let v of a)I(v.anchoredPackage,h,null);return E}Ye();var Z8={};Vt(Z8,{GitFetcher:()=>w2,GitResolver:()=>I2,default:()=>vgt,gitUtils:()=>ra});Ye();St();var ra={};Vt(ra,{TreeishProtocols:()=>C2,clone:()=>X8,fetchBase:()=>bde,fetchChangedFiles:()=>xde,fetchChangedWorkspaces:()=>Igt,fetchRoot:()=>Pde,isGitUrl:()=>CC,lsRemote:()=>Sde,normalizeLocator:()=>wgt,normalizeRepoUrl:()=>yC,resolveUrl:()=>z8,splitRepoUrl:()=>s0,validateRepoUrl:()=>J8});Ye();St();jt();var Bde=$e(Cde()),vde=$e(mU()),EC=$e(ve("querystring")),K8=$e(zn());function W8(t,e,r){let o=t.indexOf(r);return t.lastIndexOf(e,o>-1?o:1/0)}function wde(t){try{return new URL(t)}catch{return}}function Egt(t){let e=W8(t,"@","#"),r=W8(t,":","#");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),W8(t,":","#")===-1&&t.indexOf("//")===-1&&(t=`ssh://${t}`),t}function Ide(t){return wde(t)||wde(Egt(t))}function yC(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=Ide(t);r&&(t=r.href),t=t.replace(/^git\+([^:]+):/,"$1:")}return t}function Dde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var Cgt=[/^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\/(.+)?$/],C2=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(C2||{});function CC(t){return t?Cgt.some(e=>!!t.match(e)):!1}function s0(t){t=yC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=t.slice(0,e),o=t.slice(e+1);if(o.match(/^[a-z]+=/)){let a=EC.default.parse(o);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(C2).find(p=>Object.hasOwn(a,p)),[u,A]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(C2))delete a[p];return{repo:r,treeish:{protocol:u,request:A},extra:a}}else{let a=o.indexOf(":"),[n,u]=a===-1?[null,o]:[o.slice(0,a),o.slice(a+1)];return{repo:r,treeish:{protocol:n,request:u},extra:{}}}}function wgt(t){return W.makeLocator(t,yC(t.reference))}function J8(t,{configuration:e}){let r=yC(t,{git:!0});if(!nn.getNetworkSettings(`https://${(0,Bde.default)(r).resource}`,{configuration:e}).enableNetwork)throw new zt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function Sde(t,e){let r=J8(t,{configuration:e}),o=await V8("listing refs",["ls-remote",r],{cwd:e.startingCwd,env:Dde()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,u;for(;(u=n.exec(o.stdout))!==null;)a.set(u[2],u[1]);return a}async function z8(t,e){let{repo:r,treeish:{protocol:o,request:a},extra:n}=s0(t),u=await Sde(r,e),A=(h,E)=>{switch(h){case"commit":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return EC.default.stringify({...n,commit:E})}case"head":{let I=u.get(E==="HEAD"?E:`refs/heads/${E}`);if(typeof I>"u")throw new Error(`Unknown head ("${E}")`);return EC.default.stringify({...n,commit:I})}case"tag":{let I=u.get(`refs/tags/${E}`);if(typeof I>"u")throw new Error(`Unknown tag ("${E}")`);return EC.default.stringify({...n,commit:I})}case"semver":{let I=kr.validRange(E);if(!I)throw new Error(`Invalid range ("${E}")`);let v=new Map([...u.entries()].filter(([C])=>C.startsWith("refs/tags/")).map(([C,R])=>[K8.default.parse(C.slice(10)),R]).filter(C=>C[0]!==null)),x=K8.default.maxSatisfying([...v.keys()],I);if(x===null)throw new Error(`No matching range ("${E}")`);return EC.default.stringify({...n,commit:v.get(x)})}case null:{let I;if((I=p("commit",E))!==null||(I=p("tag",E))!==null||(I=p("head",E))!==null)return I;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 A(h,E)}catch{return null}};return yC(`${r}#${A(o,a)}`)}async function X8(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:o,request:a}}=s0(t);if(o!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=J8(r,{configuration:e}),u=await oe.mktempPromise(),A={cwd:u,env:Dde()};return await V8("cloning the repository",["clone","-c core.autocrlf=false",n,ue.fromPortablePath(u)],A,{configuration:e,normalizedRepoUrl:n}),await V8("switching branch",["checkout",`${a}`],A,{configuration:e,normalizedRepoUrl:n}),u})}async function Pde(t){let e,r=t;do{if(e=r,await oe.existsPromise(V.join(e,".git")))return e;r=V.dirname(e)}while(r!==e);return null}async function bde(t,{baseRefs:e}){if(e.length===0)throw new it("Can't run this command with zero base refs specified.");let r=[];for(let A of e){let{code:p}=await Ur.execvp("git",["merge-base",A,"HEAD"],{cwd:t});p===0&&r.push(A)}if(r.length===0)throw new it(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:o}=await Ur.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),a=o.trim(),{stdout:n}=await Ur.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:t,strict:!0}),u=n.trim();return{hash:a,title:u}}async function xde(t,{base:e,project:r}){let o=_e.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await Ur.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>V.resolve(t,ue.toPortablePath(h))),{stdout:u}=await Ur.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),A=u.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>V.resolve(t,ue.toPortablePath(h))),p=[...new Set([...n,...A].sort())];return o?p.filter(h=>!V.relative(r.cwd,h).match(o)):p}async function Igt({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new it("This command can only be run from within a Yarn project");let r=[V.resolve(e.cwd,dr.lockfile),V.resolve(e.cwd,e.configuration.get("cacheFolder")),V.resolve(e.cwd,e.configuration.get("installStatePath")),V.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(u=>u.populateYarnPaths,e,u=>{u!=null&&r.push(u)});let o=await Pde(e.configuration.projectCwd);if(o==null)throw new it("This command can only be run on Git repositories");let a=await bde(o,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),n=await xde(o,{base:a.hash,project:e});return new Set(_e.mapAndFilter(n,u=>{let A=e.tryWorkspaceByFilePath(u);return A===null?_e.mapAndFilter.skip:r.some(p=>u.startsWith(p))?_e.mapAndFilter.skip:A}))}async function V8(t,e,r,{configuration:o,normalizedRepoUrl:a}){try{return await Ur.execvp("git",e,{...r,strict:!0})}catch(n){if(!(n instanceof Ur.ExecError))throw n;let u=n.reportExtra,A=n.stderr.toString();throw new zt(1,`Failed ${t}`,p=>{p.reportError(1,` ${de.prettyField(o,{label:"Repository URL",value:de.tuple(de.Type.URL,a)})}`);for(let h of A.matchAll(/^(.+?): (.*)$/gm)){let[,E,I]=h;E=E.toLowerCase();let v=E==="error"?"Error":`${(0,vde.default)(E)} Error`;p.reportError(1,` ${de.prettyField(o,{label:v,value:de.tuple(de.Type.NO_HINT,I)})}`)}u?.(p)})}}var w2=class{supports(e,r){return CC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,o);let n={...r,checksums:a},u=await this.downloadHosted(e,n);if(u!==null)return u;let[A,p,h]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:A,releaseFs:p,prefixPath:W.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(o=>o.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let o=await X8(e.reference,r.project.configuration),a=s0(e.reference),n=V.join(o,"package.tgz");await un.prepareExternalProject(o,n,{configuration:r.project.configuration,report:r.report,workspace:a.extra.workspace,locator:e});let u=await oe.readFilePromise(n);return await _e.releaseAfterUseAsync(async()=>await Xi.convertToZip(u,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1}))}};Ye();Ye();var I2=class{supportsDescriptor(e,r){return CC(e.range)}supportsLocator(e,r){return CC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=await z8(e.range,o.project.configuration);return[W.makeLocator(e,a)]}async getSatisfying(e,r,o,a){let n=s0(e.range);return{locators:o.filter(A=>{if(A.identHash!==e.identHash)return!1;let p=s0(A.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 Bgt={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:[w2],resolvers:[I2]};var vgt=Bgt;jt();var o0=class extends ut{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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let u=this.since?await ra.fetchChangedWorkspaces({ref:this.since,project:o}):o.workspaces,A=new Set(u);if(this.recursive)for(let p of[...u].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)A.add(h);for(let p of A){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let I=new Set,v=new Set;for(let x of Ot.hardDependencies)for(let[C,R]of h.getForScope(x)){let L=o.tryWorkspaceByDescriptor(R);L===null?o.workspacesByIdent.has(C)&&v.add(R):I.add(L)}E={workspaceDependencies:Array.from(I).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(v).map(x=>W.stringifyDescriptor(x))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?W.stringifyIdent(h.name):null,...E})}})).exitCode()}};o0.paths=[["workspaces","list"]],o0.usage=nt.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 "});Ye();Ye();jt();var a0=class extends ut{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=o.workspaces,u=new Map(n.map(p=>[W.stringifyIdent(p.anchoredLocator),p])),A=u.get(this.workspaceName);if(A===void 0){let p=Array.from(u.keys()).sort();throw new it(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: + - ${p.join(` + - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:A.cwd})}};a0.paths=[["workspace"]],a0.usage=nt.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"]]});var Dgt={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:kde.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:[Fh,Rh,Th,Nh,r0,Vh,_h,o0,Kd,Vd,mC,Jd,kh,Qh,Lh,Oh,Mh,Uh,Hh,jh,Gh,qh,n0,Yh,Wh,zh,Jh,Xh,Kh,Zh,$h,e0,Xd,t0,Jf,i0,a0]},Sgt=Dgt;var iH={};Vt(iH,{default:()=>bgt});Ye();var kt={optional:!0},eH=[["@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:kt,zenObservable:kt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:kt,zenObservable:kt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:kt}}],["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"]:kt,["postcss-jsx"]:kt,["postcss-less"]:kt,["postcss-markdown"]:kt,["postcss-scss"]:kt}}],["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:kt}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:kt}}],["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:kt,"vue-template-compiler":kt}}],["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:kt,"utf-8-validate":kt}}],["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":kt,"vuetify-loader":kt}}],["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":kt}}],["@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":kt}}],["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":kt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:kt}}],["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:kt,tinyliquid:kt,"liquid-node":kt,jade:kt,"then-jade":kt,dust:kt,"dustjs-helpers":kt,"dustjs-linkedin":kt,swig:kt,"swig-templates":kt,"razor-tmpl":kt,atpl:kt,liquor:kt,twig:kt,ejs:kt,eco:kt,jazz:kt,jqtpl:kt,hamljs:kt,hamlet:kt,whiskers:kt,"haml-coffee":kt,"hogan.js":kt,templayed:kt,handlebars:kt,underscore:kt,lodash:kt,pug:kt,"then-pug":kt,qejs:kt,walrus:kt,mustache:kt,just:kt,ect:kt,mote:kt,toffee:kt,dot:kt,"bracket-template":kt,ractive:kt,nunjucks:kt,htmling:kt,"babel-core":kt,plates:kt,"react-dom":kt,react:kt,"arc-templates":kt,vash:kt,slm:kt,marko:kt,teacup:kt,"coffee-script":kt,squirrelly:kt,twing:kt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":kt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":kt,vue:kt}}],["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:kt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:kt}}],["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":kt,"webpack-command":kt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":kt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":kt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:kt,jimp:kt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":kt,"eslint-import-resolver-typescript":kt,"eslint-import-resolver-webpack":kt,"@typescript-eslint/parser":kt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":kt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":kt}}],["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:kt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:kt}}],["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"]:kt}}],["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:kt}}],["@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:kt}}],["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:kt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":kt}}],["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"}}]];var tH;function Qde(){return typeof tH>"u"&&(tH=ve("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()),tH}var rH;function Fde(){return typeof rH>"u"&&(rH=ve("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()),rH}var nH;function Rde(){return typeof nH>"u"&&(nH=ve("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),nH}var Tde=new Map([[W.makeIdent(null,"fsevents").identHash,Qde],[W.makeIdent(null,"resolve").identHash,Fde],[W.makeIdent(null,"typescript").identHash,Rde]]),Pgt={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,o]of eH)e(W.parseDescriptor(r,!0),o)},getBuiltinPatch:async(t,e)=>{let r="compat/";if(!e.startsWith(r))return;let o=W.parseIdent(e.slice(r.length)),a=Tde.get(o.identHash)?.();return typeof a<"u"?a:null},reduceDependency:async(t,e,r,o)=>typeof Tde.get(t.identHash)>"u"?t:W.makeDescriptor(t,W.makeRange({protocol:"patch:",source:W.stringifyDescriptor(t),selector:`optional!builtin`,params:null}))}},bgt=Pgt;var wH={};Vt(wH,{ConstraintsCheckCommand:()=>h0,ConstraintsQueryCommand:()=>f0,ConstraintsSourceCommand:()=>p0,default:()=>tdt});Ye();Ye();v2();var IC=class{constructor(e){this.project=e}createEnvironment(){let e=new wC(["cwd","ident"]),r=new wC(["workspace","type","ident"]),o=new wC(["ident"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,u=new Map;for(let A of this.project.storedPackages.values()){let p=Array.from(A.peerDependencies.values(),h=>[W.stringifyIdent(h),h.range]);n.set(A.locatorHash,{workspace:null,ident:W.stringifyIdent(A),version:A.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional===!0))})}for(let A of this.project.storedPackages.values()){let p=n.get(A.locatorHash);p.dependencies=new Map(Array.from(A.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 I=n.get(E);if(typeof I>"u")throw new Error("Assertion failed: The package should have been registered");return[W.stringifyIdent(h),I]})),p.dependencies.delete(p.ident)}for(let A of this.project.workspaces){let p=W.stringifyIdent(A.anchoredLocator),h=A.manifest.exportTo({}),E=n.get(A.anchoredLocator.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");let I=(R,L,{caller:U=Ji.getCaller()}={})=>{let J=B2(R),te=_e.getMapWithDefault(a.manifestUpdates,A.cwd),ae=_e.getMapWithDefault(te,J),fe=_e.getSetWithDefault(ae,L);U!==null&&fe.add(U)},v=R=>I(R,void 0,{caller:Ji.getCaller()}),x=R=>{_e.getArrayWithDefault(a.reportedErrors,A.cwd).push(R)},C=e.insert({cwd:A.relativeCwd,ident:p,manifest:h,pkg:E,set:I,unset:v,error:x});u.set(A,C);for(let R of Ot.allDependencies)for(let L of A.manifest[R].values()){let U=W.stringifyIdent(L),J=()=>{I([R,U],void 0,{caller:Ji.getCaller()})},te=fe=>{I([R,U],fe,{caller:Ji.getCaller()})},ae=null;if(R!=="peerDependencies"&&(R!=="dependencies"||!A.manifest.devDependencies.has(L.identHash))){let fe=A.anchoredPackage.dependencies.get(L.identHash);if(fe){if(typeof fe>"u")throw new Error("Assertion failed: The dependency should have been registered");let ce=this.project.storedResolutions.get(fe.descriptorHash);if(typeof ce>"u")throw new Error("Assertion failed: The resolution should have been registered");let me=n.get(ce);if(typeof me>"u")throw new Error("Assertion failed: The package should have been registered");ae=me}}r.insert({workspace:C,ident:U,range:L.range,type:R,resolution:ae,update:te,delete:J,error:x})}}for(let A of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(A);if(!p)continue;let h=u.get(p);if(typeof h>"u")throw new Error("Assertion failed: The workspace should have been registered");let E=n.get(A.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:o,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)}},o=await this.project.loadUserConfig();return o?.constraints?(await o.constraints(r),e.result):null}};Ye();Ye();jt();var f0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=ge.String()}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),b2)),o=await Ke.find(this.context.cwd,this.context.plugins),{project:a}=await Pt.find(o,this.context.cwd),n=await r.find(a),u=this.query;return u.endsWith(".")||(u=`${u}.`),(await Nt.start({configuration:o,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(u)){let E=Array.from(Object.entries(h)),I=E.length,v=E.reduce((x,[C])=>Math.max(x,C.length),0);for(let x=0;x(x2(),b2)),o=await Ke.find(this.context.cwd,this.context.plugins),{project:a}=await Pt.find(o,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};p0.paths=[["constraints","source"]],p0.usage=nt.Usage({category:"Constraints-related commands",description:"print the source code for the constraints",details:"\n This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\n ",examples:[["Prints the source code","yarn constraints source"],["Print the source code and the fact database","yarn constraints source -v"]]});Ye();Ye();jt();v2();var h0=class extends ut{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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);await o.restoreInstallState();let a=await o.loadUserConfig(),n;if(a?.constraints)n=new IC(o);else{let{Constraints:h}=await Promise.resolve().then(()=>(x2(),b2));n=await h.find(o)}let u,A=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:I,remainingErrors:v}=gk(o,E,{fix:this.fix}),x=[];for(let[C,R]of I){let L=C.manifest.indent;C.manifest=new Ot,C.manifest.indent=L,C.manifest.load(R),x.push(C.persistManifest())}if(await Promise.all(x),!(I.size>0&&h>1)){u=Hde(v,{configuration:r}),A=!1,p=!0;for(let[,C]of v)for(let R of C)R.fixable?A=!0:p=!1}}if(u.children.length===0)return 0;if(A){let h=p?`Those errors can all be fixed by running ${de.pretty(r,"yarn constraints --fix",de.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${de.pretty(r,"yarn constraints --fix",de.Type.CODE)}`;await Nt.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return u.children=_e.sortMap(u.children,h=>h.value[1]),$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};h0.paths=[["constraints"]],h0.usage=nt.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"]]});v2();var edt={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:[f0,p0,h0],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get("enableConstraintsChecks"))return;let r=await t.loadUserConfig(),o;if(r?.constraints)o=new IC(t);else{let{Constraints:u}=await Promise.resolve().then(()=>(x2(),b2));o=await u.find(t)}let a=await o.process();if(!a)return;let{remainingErrors:n}=gk(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[u,A]of n)for(let p of A)e(84,`${de.pretty(t.configuration,u.anchoredLocator,de.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${de.pretty(t.configuration,"yarn constraints",de.Type.CODE)} for more details`)}}},tdt=edt;var IH={};Vt(IH,{CreateCommand:()=>tm,DlxCommand:()=>g0,default:()=>ndt});Ye();jt();var tm=class extends ut{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()}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let o=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=W.parseDescriptor(o),n=a.name.match(/^create(-|$)/)?a:a.scope?W.makeIdent(a.scope,`create-${a.name}`):W.makeIdent(null,`create-${a.name}`),u=W.stringifyIdent(n);return a.range!=="unknown"&&(u+=`@${a.range}`),this.cli.run(["dlx",...r,u,...this.args])}};tm.paths=[["create"]];Ye();Ye();St();jt();var g0=class extends ut{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()}async execute(){return Ke.telemetry=null,await oe.mktempPromise(async r=>{let o=V.join(r,`dlx-${process.pid}`);await oe.mkdirPromise(o),await oe.writeFilePromise(V.join(o,"package.json"),`{} +`),await oe.writeFilePromise(V.join(o,"yarn.lock"),"");let a=V.join(o,".yarnrc.yml"),n=await Ke.findProjectCwd(this.context.cwd),A={enableGlobalCache:!(await Ke.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Wu(68),level:de.LogLevel.Discard}]},p=n!==null?V.join(n,".yarnrc.yml"):null;p!==null&&oe.existsSync(p)?(await oe.copyFilePromise(p,a),await Ke.updateConfiguration(o,L=>{let U=_e.toMerged(L,A);return Array.isArray(L.plugins)&&(U.plugins=L.plugins.map(J=>{let te=typeof J=="string"?J:J.path,ae=ue.isAbsolute(te)?te:ue.resolve(ue.fromPortablePath(n),te);return typeof J=="string"?ae:{path:ae,spec:J.spec}})),U})):await oe.writeJsonPromise(a,A);let h=this.packages??[this.command],E=W.parseDescriptor(this.command).name,I=await this.cli.run(["add","--fixed","--",...h],{cwd:o,quiet:this.quiet});if(I!==0)return I;this.quiet||this.context.stdout.write(` +`);let v=await Ke.find(o,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,o);if(C===null)throw new rr(x.cwd,o);await x.restoreInstallState();let R=await un.getWorkspaceAccessibleBinaries(C);return R.has(E)===!1&&R.size===1&&typeof this.packages>"u"&&(E=Array.from(R)[0][0]),await un.executeWorkspaceAccessibleBinary(C,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};g0.paths=[["dlx"]],g0.usage=nt.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-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var rdt={commands:[tm,g0]},ndt=rdt;var DH={};Vt(DH,{ExecFetcher:()=>Q2,ExecResolver:()=>F2,default:()=>odt,execUtils:()=>Ek});Ye();Ye();St();var fA="exec:";var Ek={};Vt(Ek,{loadGeneratorFile:()=>k2,makeLocator:()=>vH,makeSpec:()=>pme,parseSpec:()=>BH});Ye();St();function BH(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?W.parseLocator(e.locator):null,path:o}}function pme({parentLocator:t,path:e,generatorHash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function vH(t,{parentLocator:e,path:r,generatorHash:o,protocol:a}){return W.makeLocator(t,pme({parentLocator:e,path:r,generatorHash:o,protocol:a}))}async function k2(t,e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(t,{protocol:e}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath)}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.join(u.prefixPath,a);return await A.readFilePromise(p,"utf8")}var Q2=class{supports(e,r){return!!e.reference.startsWith(fA)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:fA});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){let o=await k2(e.reference,fA,r);return oe.mktempPromise(async a=>{let n=V.join(a,"generator.js");return await oe.writeFilePromise(n,o),oe.mktempPromise(async u=>{if(await this.generatePackage(u,e,n,r),!oe.existsSync(V.join(u,"build")))throw new Error("The script should have generated a build directory");return await Xi.makeArchiveFromDirectory(V.join(u,"build"),{prefixPath:W.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(e,r,o,a){return await oe.mktempPromise(async n=>{let u=await un.makeScriptEnv({project:a.project,binFolder:n}),A=V.join(e,"runtime.js");return await oe.mktempPromise(async p=>{let h=V.join(p,"buildfile.log"),E=V.join(e,"generator"),I=V.join(e,"build");await oe.mkdirPromise(E),await oe.mkdirPromise(I);let v={tempDir:ue.fromPortablePath(E),buildDir:ue.fromPortablePath(I),locator:W.stringifyLocator(r)};await oe.writeFilePromise(A,` + // 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(v)}, + }, + enumerable: true, + }); + `);let x=u.NODE_OPTIONS||"",C=/\s*--require\s+\S*\.pnp\.c?js\s*/g;x=x.replace(C," ").trim(),u.NODE_OPTIONS=x;let{stdout:R,stderr:L}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${W.stringifyLocator(r)}) +`,prefix:W.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await Ur.pipevp(process.execPath,["--require",ue.fromPortablePath(A),ue.fromPortablePath(o),W.stringifyIdent(r)],{cwd:e,env:u,stdin:null,stdout:R,stderr:L});if(U!==0)throw oe.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${de.pretty(a.project.configuration,h,de.Type.PATH)})`)})})}};Ye();Ye();var idt=2,F2=class{supportsDescriptor(e,r){return!!e.range.startsWith(fA)}supportsLocator(e,r){return!!e.reference.startsWith(fA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=BH(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=await k2(W.makeRange({protocol:fA,source:a,selector:a,params:{locator:W.stringifyLocator(n)}}),fA,o.fetchOptions),A=wn.makeHash(`${idt}`,u).slice(0,6);return[vH(e,{parentLocator:n,path:a,generatorHash:A,protocol:fA})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 sdt={fetchers:[Q2],resolvers:[F2]},odt=sdt;var PH={};Vt(PH,{FileFetcher:()=>L2,FileResolver:()=>O2,TarballFileFetcher:()=>M2,TarballFileResolver:()=>U2,default:()=>cdt,fileUtils:()=>rm});Ye();St();var SC=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,R2=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Ui="file:";var rm={};Vt(rm,{fetchArchiveFromLocator:()=>N2,makeArchiveFromLocator:()=>Ck,makeBufferFromLocator:()=>SH,makeLocator:()=>PC,makeSpec:()=>hme,parseSpec:()=>T2});Ye();St();function T2(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?W.parseLocator(e.locator):null,path:o}}function hme({parentLocator:t,path:e,hash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function PC(t,{parentLocator:e,path:r,hash:o,protocol:a}){return W.makeLocator(t,hme({parentLocator:e,path:r,hash:o,protocol:a}))}async function N2(t,e){let{parentLocator:r,path:o}=W.parseFileStyleRange(t.reference,{protocol:Ui}),a=V.isAbsolute(o)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let u=n.packageFs,A=V.join(n.prefixPath,o);return await _e.releaseAfterUseAsync(async()=>await u.readFilePromise(A),n.releaseFs)}async function Ck(t,{protocol:e,fetchOptions:r,inMemory:o=!1}){let{parentLocator:a,path:n}=W.parseFileStyleRange(t.reference,{protocol:e}),u=V.isAbsolute(n)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(a,r),A=u.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,u.localPath)}:u;u!==A&&u.releaseFs&&u.releaseFs();let p=A.packageFs,h=V.join(A.prefixPath,n);return await _e.releaseAfterUseAsync(async()=>await Xi.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:W.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:o}),A.releaseFs)}async function SH(t,{protocol:e,fetchOptions:r}){return(await Ck(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var L2=class{supports(e,r){return!!e.reference.startsWith(Ui)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:Ui});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){return Ck(e,{protocol:Ui,fetchOptions:r})}};Ye();Ye();var adt=2,O2=class{supportsDescriptor(e,r){return e.range.match(SC)?!0:!!e.range.startsWith(Ui)}supportsLocator(e,r){return!!e.reference.startsWith(Ui)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return SC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=await SH(W.makeLocator(e,W.makeRange({protocol:Ui,source:a,selector:a,params:{locator:W.stringifyLocator(n)}})),{protocol:Ui,fetchOptions:o.fetchOptions}),A=wn.makeHash(`${adt}`,u).slice(0,6);return[PC(e,{parentLocator:n,path:a,hash:A,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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}}};Ye();var M2=class{supports(e,r){return R2.test(e.reference)?!!e.reference.startsWith(Ui):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromDisk(e,r){let o=await N2(e,r);return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();Ye();var U2=class{supportsDescriptor(e,r){return R2.test(e.range)?!!(e.range.startsWith(Ui)||SC.test(e.range)):!1}supportsLocator(e,r){return R2.test(e.reference)?!!e.reference.startsWith(Ui):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return SC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=PC(e,{parentLocator:n,path:a,hash:"",protocol:Ui}),A=await N2(u,o.fetchOptions),p=wn.makeHash(A).slice(0,6);return[PC(e,{parentLocator:n,path:a,hash:p,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 ldt={fetchers:[M2,L2],resolvers:[U2,O2]},cdt=ldt;var kH={};Vt(kH,{GithubFetcher:()=>_2,default:()=>Adt,githubUtils:()=>wk});Ye();St();var wk={};Vt(wk,{invalidGithubUrlMessage:()=>mme,isGithubUrl:()=>bH,parseGithubUrl:()=>xH});var gme=$e(ve("querystring")),dme=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function bH(t){return t?dme.some(e=>!!t.match(e)):!1}function xH(t){let e;for(let A of dme)if(e=t.match(A),e)break;if(!e)throw new Error(mme(t));let[,r,o,a,n="master"]=e,{commit:u}=gme.default.parse(n);return n=u||n.replace(/[^:]*:/,""),{auth:r,username:o,reponame:a,treeish:n}}function mme(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var _2=class{supports(e,r){return!!bH(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await nn.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await oe.mktempPromise(async a=>{let n=new gn(a);await Xi.extractArchiveTo(o,n,{stripComponents:1});let u=ra.splitRepoUrl(e.reference),A=V.join(a,"package.tgz");await un.prepareExternalProject(a,A,{configuration:r.project.configuration,report:r.report,workspace:u.extra.workspace,locator:e});let p=await oe.readFilePromise(A);return await Xi.convertToZip(p,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:o,username:a,reponame:n,treeish:u}=xH(e.reference);return`https://${o?`${o}@`:""}github.com/${a}/${n}/archive/${u}.tar.gz`}};var udt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let o=new _2;if(!o.supports(e,r))return null;try{return await o.fetch(e,r)}catch{return null}}}},Adt=udt;var QH={};Vt(QH,{TarballHttpFetcher:()=>j2,TarballHttpResolver:()=>G2,default:()=>pdt});Ye();function H2(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 j2=class{supports(e,r){return H2(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await nn.get(e.reference,{configuration:r.project.configuration});return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();var G2=class{supportsDescriptor(e,r){return H2(e.range)}supportsLocator(e,r){return H2(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[W.convertDescriptorToLocator(e)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 fdt={fetchers:[j2],resolvers:[G2]},pdt=fdt;var FH={};Vt(FH,{InitCommand:()=>d0,default:()=>gdt});Ye();Ye();St();jt();var d0=class extends ut{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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return o!==null?await this.executeProxy(r,o):await this.executeRegular(r)}async executeProxy(r,o){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new it("Cannot use the --install flag from within a project subdirectory");oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=V.join(this.context.cwd,dr.lockfile);oe.existsSync(a)||await oe.writeFilePromise(a,"");let n=await this.cli.run(["set","version",o],{quiet:!0});if(n!==0)return n;let u=[];return this.private&&u.push("-p"),this.workspace&&u.push("-w"),this.name&&u.push(`-n=${this.name}`),this.yes&&u.push("-y"),await oe.mktempPromise(async A=>{let{code:p}=await Ur.pipevp("yarn",["init",...u],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await un.makeScriptEnv({binFolder:A})});return p})}async executeRegular(r){let o=null;try{o=(await Pt.find(r,this.context.cwd)).project}catch{o=null}oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ot.tryFind(this.context.cwd),n=a??new Ot,u=Object.fromEntries(r.get("initFields").entries());n.load(u),n.name=n.name??W.makeIdent(r.get("initScope"),this.name??V.basename(this.context.cwd)),n.packageManager=rn&&_e.isTaggedYarnVersion(rn)?`yarn@${rn}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await oe.mkdirPromise(V.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let A={};n.exportTo(A);let p=V.join(this.context.cwd,Ot.fileName);await oe.changeFilePromise(p,`${JSON.stringify(A,null,2)} +`,{automaticNewlines:!0});let h=[p],E=V.join(this.context.cwd,"README.md");if(oe.existsSync(E)||(await oe.writeFilePromise(E,`# ${W.stringifyIdent(n.name)} +`),h.push(E)),!o||o.cwd===this.context.cwd){let I=V.join(this.context.cwd,dr.lockfile);oe.existsSync(I)||(await oe.writeFilePromise(I,""),h.push(I));let x=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# 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(fe=>`${fe} +`).join(""),C=V.join(this.context.cwd,".gitignore");oe.existsSync(C)||(await oe.writeFilePromise(C,x),h.push(C));let L=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(fe=>`${fe} +`).join(""),U=V.join(this.context.cwd,".gitattributes");oe.existsSync(U)||(await oe.writeFilePromise(U,L),h.push(U));let J={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};_e.mergeIntoTarget(J,r.get("initEditorConfig"));let te=`root = true +`;for(let[fe,ce]of Object.entries(J)){te+=` +[${fe}] +`;for(let[me,he]of Object.entries(ce)){let Be=me.replace(/[A-Z]/g,we=>`_${we.toLowerCase()}`);te+=`${Be} = ${he} +`}}let ae=V.join(this.context.cwd,".editorconfig");oe.existsSync(ae)||(await oe.writeFilePromise(ae,te),h.push(ae)),await this.cli.run(["install"],{quiet:!0}),oe.existsSync(V.join(this.context.cwd,".git"))||(await Ur.execvp("git",["init"],{cwd:this.context.cwd}),await Ur.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await Ur.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};d0.paths=[["init"]],d0.usage=nt.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"]]});var hdt={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:[d0]},gdt=hdt;var Tj={};Vt(Tj,{SearchCommand:()=>w0,UpgradeInteractiveCommand:()=>B0,default:()=>nIt});Ye();var Eme=$e(ve("os"));function bC({stdout:t}){if(Eme.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")}jt();var Qye=$e(zH()),XH={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},fyt=(0,Qye.default)(XH.appId,XH.apiKey).initIndex(XH.indexName),ZH=async(t,e=0)=>await fyt.search(t,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:e,hitsPerPage:10});var jB=["regular","dev","peer"],w0=class extends ut{async execute(){bC(this.context);let{Gem:e}=await Promise.resolve().then(()=>(cQ(),Bj)),{ScrollableItems:r}=await Promise.resolve().then(()=>(pQ(),fQ)),{useKeypress:o}=await Promise.resolve().then(()=>(UB(),Wwe)),{useMinistore:a}=await Promise.resolve().then(()=>(xj(),bj)),{renderForm:n}=await Promise.resolve().then(()=>(mQ(),dQ)),{default:u}=await Promise.resolve().then(()=>$e(rIe())),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useEffect:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),x=()=>h.createElement(A,{flexDirection:"row"},h.createElement(A,{flexDirection:"column",width:48},h.createElement(A,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(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select a package.")),h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," again to change the target."))),h.createElement(A,{flexDirection:"column"},h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),C=()=>h.createElement(h.Fragment,null,h.createElement(A,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(A,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(A,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),R=()=>h.createElement(A,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),L=({hit:he,active:Be})=>{let[we,g]=a(he.name,null);o({active:Be},(le,ne)=>{if(ne.name!=="space")return;if(!we){g(jB[0]);return}let ee=jB.indexOf(we)+1;ee===jB.length?g(null):g(jB[ee])},[we,g]);let Ee=W.parseIdent(he.name),Se=W.prettyIdent(v,Ee);return h.createElement(A,null,h.createElement(A,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},Se)),h.createElement(A,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},he.owner.name)),h.createElement(A,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},he.version)),h.createElement(A,{width:16,marginLeft:1},h.createElement(p,null,he.humanDownloadsLast30Days)))},U=({name:he,active:Be})=>{let[we]=a(he,null),g=W.parseIdent(he);return h.createElement(A,null,h.createElement(A,{width:47},h.createElement(p,{bold:!0}," - ",W.prettyIdent(v,g))),jB.map(Ee=>h.createElement(A,{key:Ee,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(e,{active:we===Ee})," ",h.createElement(p,{bold:!0},Ee)))))},J=()=>h.createElement(A,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),ae=await n(({useSubmit:he})=>{let Be=a();he(Be);let we=Array.from(Be.keys()).filter(H=>Be.get(H)!==null),[g,Ee]=I(""),[Se,le]=I(0),[ne,ee]=I([]),Ie=H=>{H.match(/\t| /)||Ee(H)},Fe=async()=>{le(0);let H=await ZH(g);H.query===g&&ee(H.hits)},At=async()=>{let H=await ZH(g,Se+1);H.query===g&&H.page-1===Se&&(le(H.page),ee([...ne,...H.hits]))};return E(()=>{g?Fe():ee([])},[g]),h.createElement(A,{flexDirection:"column"},h.createElement(x,null),h.createElement(A,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(A,{width:41},h.createElement(u,{value:g,onChange:Ie,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(C,null)),ne.length?h.createElement(r,{radius:2,loop:!1,children:ne.map(H=>h.createElement(L,{key:H.name,hit:H,active:!1})),willReachEnd:At}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(A,{flexDirection:"row",marginTop:1},h.createElement(A,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(R,null)),we.length?we.map(H=>h.createElement(U,{key:H,name:H,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(J,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ae>"u")return 1;let fe=Array.from(ae.keys()).filter(he=>ae.get(he)==="regular"),ce=Array.from(ae.keys()).filter(he=>ae.get(he)==="dev"),me=Array.from(ae.keys()).filter(he=>ae.get(he)==="peer");return fe.length&&await this.cli.run(["add",...fe]),ce.length&&await this.cli.run(["add","--dev",...ce]),me&&await this.cli.run(["add","--peer",...me]),0}};w0.paths=[["search"]],w0.usage=nt.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"]]});Ye();jt();E_();var cIe=$e(zn()),lIe=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/,uIe=(t,e)=>t.length>0?[t.slice(0,e)].concat(uIe(t.slice(e),e)):[],B0=class extends ut{async execute(){bC(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(aIe(),oIe)),{Pad:r}=await Promise.resolve().then(()=>(Rj(),sIe)),{ScrollableItems:o}=await Promise.resolve().then(()=>(pQ(),fQ)),{useMinistore:a}=await Promise.resolve().then(()=>(xj(),bj)),{renderForm:n}=await Promise.resolve().then(()=>(mQ(),dQ)),{Box:u,Text:A}=await Promise.resolve().then(()=>$e(ic())),{default:p,useEffect:h,useRef:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,this.context.cwd),R=await Lr.find(v);if(!C)throw new rr(x.cwd,this.context.cwd);await x.restoreInstallState({restoreResolutions:!1});let L=this.context.stdout.rows-7,U=(Ee,Se)=>{let le=upe(Ee,Se),ne="";for(let ee of le)ee.added?ne+=de.pretty(v,ee.value,"green"):ee.removed||(ne+=ee.value);return ne},J=(Ee,Se)=>{if(Ee===Se)return Se;let le=W.parseRange(Ee),ne=W.parseRange(Se),ee=le.selector.match(lIe),Ie=ne.selector.match(lIe);if(!ee||!Ie)return U(Ee,Se);let Fe=["gray","red","yellow","green","magenta"],At=null,H="";for(let at=1;at{let ne=await zc.fetchDescriptorFrom(Ee,le,{project:x,cache:R,preserveModifier:Se,workspace:C});return ne!==null?ne.range:Ee.range},ae=async Ee=>{let Se=cIe.default.valid(Ee.range)?`^${Ee.range}`:Ee.range,[le,ne]=await Promise.all([te(Ee,Ee.range,Se).catch(()=>null),te(Ee,Ee.range,"latest").catch(()=>null)]),ee=[{value:null,label:Ee.range}];return le&&le!==Ee.range?ee.push({value:le,label:J(Ee.range,le)}):ee.push({value:null,label:""}),ne&&ne!==le&&ne!==Ee.range?ee.push({value:ne,label:J(Ee.range,ne)}):ee.push({value:null,label:""}),ee},fe=()=>p.createElement(u,{flexDirection:"row"},p.createElement(u,{flexDirection:"column",width:49},p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},""),"/",p.createElement(A,{bold:!0,color:"cyanBright"},"")," to select packages.")),p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},""),"/",p.createElement(A,{bold:!0,color:"cyanBright"},"")," to select versions."))),p.createElement(u,{flexDirection:"column"},p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"")," to install.")),p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"")," to abort.")))),ce=()=>p.createElement(u,{flexDirection:"row",paddingTop:1,paddingBottom:1},p.createElement(u,{width:50},p.createElement(A,{bold:!0},p.createElement(A,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Current")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Range")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Latest"))),me=({active:Ee,descriptor:Se,suggestions:le})=>{let[ne,ee]=a(Se.descriptorHash,null),Ie=W.stringifyIdent(Se),Fe=Math.max(0,45-Ie.length);return p.createElement(p.Fragment,null,p.createElement(u,null,p.createElement(u,{width:45},p.createElement(A,{bold:!0},W.prettyIdent(v,Se)),p.createElement(r,{active:Ee,length:Fe})),p.createElement(e,{active:Ee,options:le,value:ne,skewer:!0,onChange:ee,sizes:[17,17,17]})))},he=({dependencies:Ee})=>{let[Se,le]=I(Ee.map(()=>null)),ne=E(!0),ee=async Ie=>{let Fe=await ae(Ie);return Fe.filter(At=>At.label!=="").length<=1?null:{descriptor:Ie,suggestions:Fe}};return h(()=>()=>{ne.current=!1},[]),h(()=>{let Ie=Math.trunc(L*1.75),Fe=Ee.slice(0,Ie),At=Ee.slice(Ie),H=uIe(At,L),at=Fe.map(ee).reduce(async(Re,ke)=>{await Re;let xe=await ke;xe!==null&&(!ne.current||le(He=>{let Te=He.findIndex(je=>je===null),Je=[...He];return Je[Te]=xe,Je}))},Promise.resolve());H.reduce((Re,ke)=>Promise.all(ke.map(xe=>Promise.resolve().then(()=>ee(xe)))).then(async xe=>{xe=xe.filter(He=>He!==null),await Re,ne.current&&le(He=>{let Te=He.findIndex(Je=>Je===null);return He.slice(0,Te).concat(xe).concat(He.slice(Te+xe.length))})}),at).then(()=>{ne.current&&le(Re=>Re.filter(ke=>ke!==null))})},[]),Se.length?p.createElement(o,{radius:L>>1,children:Se.map((Ie,Fe)=>Ie!==null?p.createElement(me,{key:Fe,active:!1,descriptor:Ie.descriptor,suggestions:Ie.suggestions}):p.createElement(A,{key:Fe},"Loading..."))}):p.createElement(A,null,"No upgrades found")},we=await n(({useSubmit:Ee})=>{Ee(a());let Se=new Map;for(let ne of x.workspaces)for(let ee of["dependencies","devDependencies"])for(let Ie of ne.manifest[ee].values())x.tryWorkspaceByDescriptor(Ie)===null&&(Ie.range.startsWith("link:")||Se.set(Ie.descriptorHash,Ie));let le=_e.sortMap(Se.values(),ne=>W.stringifyDescriptor(ne));return p.createElement(u,{flexDirection:"column"},p.createElement(fe,null),p.createElement(ce,null),p.createElement(he,{dependencies:le}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof we>"u")return 1;let g=!1;for(let Ee of x.workspaces)for(let Se of["dependencies","devDependencies"]){let le=Ee.manifest[Se];for(let ne of le.values()){let ee=we.get(ne.descriptorHash);typeof ee<"u"&&ee!==null&&(le.set(ne.identHash,W.makeDescriptor(ne,ee)),g=!0)}}return g?await x.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:R}):0}};B0.paths=[["upgrade-interactive"]],B0.usage=nt.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"]]});var rIt={commands:[w0,B0]},nIt=rIt;var Nj={};Vt(Nj,{LinkFetcher:()=>qB,LinkResolver:()=>YB,PortalFetcher:()=>WB,PortalResolver:()=>KB,default:()=>sIt});Ye();St();var tp="portal:",rp="link:";var qB=class{supports(e,r){return!!e.reference.startsWith(rp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:rp});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:rp}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0}}};Ye();St();var YB=class{supportsDescriptor(e,r){return!!e.range.startsWith(rp)}supportsLocator(e,r){return!!e.reference.startsWith(rp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(rp.length);return[W.makeLocator(e,`${rp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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}}};Ye();St();var WB=class{supports(e,r){return!!e.reference.startsWith(tp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot}}};Ye();Ye();St();var KB=class{supportsDescriptor(e,r){return!!e.range.startsWith(tp)}supportsLocator(e,r){return!!e.reference.startsWith(tp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(tp.length);return[W.makeLocator(e,`${tp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.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 o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.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 iIt={fetchers:[qB,WB],resolvers:[YB,KB]},sIt=iIt;var yG={};Vt(yG,{NodeModulesLinker:()=>lv,NodeModulesMode:()=>hG,PnpLooseLinker:()=>cv,default:()=>w1t});St();Ye();St();St();var Oj=(t,e)=>`${t}@${e}`,AIe=(t,e)=>{let r=e.indexOf("#"),o=r>=0?e.substring(r+1):e;return Oj(t,o)};var hIe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),o=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:o,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},u;n.debugLevel>=0&&(u=Date.now());let A=fIt(t,n),p=!1,h=0;do p=Mj(A,[A],new Set([A.locator]),new Map,n).anotherRoundNeeded,n.fastLookupPossible=!1,h++;while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-u}ms, rounds: ${h}`),n.debugLevel>=1){let E=VB(A);if(Mj(A,[A],new Set([A.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: +${E}, next tree: +${VB(A)}`);let v=gIe(A);if(v)throw new Error(`${v}, after hoisting finished: +${VB(A)}`)}return n.debugLevel>=2&&console.log(VB(A)),pIt(A)},oIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=n=>{if(!o.has(n)){o.add(n);for(let u of n.hoistedDependencies.values())r.set(u.name,u);for(let u of n.dependencies.values())n.peerNames.has(u.name)||a(u)}};return a(e),r},aIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=new Set,n=(u,A)=>{if(o.has(u))return;o.add(u);for(let h of u.hoistedDependencies.values())if(!A.has(h.name)){let E;for(let I of t)E=I.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of u.dependencies.values())p.add(h.name);for(let h of u.dependencies.values())u.peerNames.has(h.name)||n(h,p)};return n(e,a),r},fIe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:o,ident:a,locator:n,dependencies:u,originalDependencies:A,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:I,hoistPriority:v,dependencyKind:x,hoistedFrom:C,hoistedTo:R}=e,L={name:r,references:new Set(o),ident:a,locator:n,dependencies:new Map(u),originalDependencies:new Map(A),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:I,hoistPriority:v,dependencyKind:x,hoistedFrom:new Map(C),hoistedTo:new Map(R)},U=L.dependencies.get(r);return U&&U.ident==L.ident&&L.dependencies.set(r,L),t.dependencies.set(L.name,L),L},lIt=(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 o=Array.from(e.keys());o.sort((a,n)=>{let u=e.get(a),A=e.get(n);return A.hoistPriority!==u.hoistPriority?A.hoistPriority-u.hoistPriority:A.peerDependents.size!==u.peerDependents.size?A.peerDependents.size-u.peerDependents.size:A.dependents.size-u.dependents.size});for(let a of o){let n=a.substring(0,a.indexOf("@",1)),u=a.substring(n.length+1);if(!t.peerNames.has(n)){let A=r.get(n);A||(A=[],r.set(n,A)),A.indexOf(u)<0&&A.push(u)}}return r},Lj=t=>{let e=new Set,r=(o,a=new Set)=>{if(!a.has(o)){a.add(o);for(let n of o.peerNames)if(!t.peerNames.has(n)){let u=t.dependencies.get(n);u&&!e.has(u)&&r(u,a)}e.add(o)}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||r(o);return e},Mj=(t,e,r,o,a,n=new Set)=>{let u=e[e.length-1];if(n.has(u))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(u);let A=hIt(u),p=lIt(u,A),h=t==u?new Map:a.fastLookupPossible?oIt(e):aIt(e),E,I=!1,v=!1,x=new Map(Array.from(p.entries()).map(([R,L])=>[R,L[0]])),C=new Map;do{let R=AIt(t,e,r,h,x,p,o,C,a);R.isGraphChanged&&(v=!0),R.anotherRoundNeeded&&(I=!0),E=!1;for(let[L,U]of p)U.length>1&&!u.dependencies.has(L)&&(x.delete(L),U.shift(),x.set(L,U[0]),E=!0)}while(E);for(let R of u.dependencies.values())if(!u.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let L=Mj(t,[...e,R],r,C,a);L.isGraphChanged&&(v=!0),L.anotherRoundNeeded&&(I=!0),r.delete(R.locator)}return{anotherRoundNeeded:I,isGraphChanged:v}},cIt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},uIt=(t,e,r,o,a,n,u,A,{outputReason:p,fastLookupPossible:h})=>{let E,I=null,v=new Set;p&&(E=`${Array.from(e).map(L=>no(L)).join("\u2192")}`);let x=r[r.length-1],R=!(o.ident===x.ident);if(p&&!R&&(I="- self-reference"),R&&(R=o.dependencyKind!==1,p&&!R&&(I="- workspace")),R&&o.dependencyKind===2&&(R=!cIt(o),p&&!R&&(I="- external soft link with unhoisted dependencies")),R&&(R=x.dependencyKind!==1||x.hoistedFrom.has(o.name)||e.size===1,p&&!R&&(I=x.reasons.get(o.name))),R&&(R=!t.peerNames.has(o.name),p&&!R&&(I=`- cannot shadow peer: ${no(t.originalDependencies.get(o.name).locator)} at ${E}`)),R){let L=!1,U=a.get(o.name);if(L=!U||U.ident===o.ident,p&&!L&&(I=`- filled by: ${no(U.locator)} at ${E}`),L)for(let J=r.length-1;J>=1;J--){let ae=r[J].dependencies.get(o.name);if(ae&&ae.ident!==o.ident){L=!1;let fe=A.get(x);fe||(fe=new Set,A.set(x,fe)),fe.add(o.name),p&&(I=`- filled by ${no(ae.locator)} at ${r.slice(0,J).map(ce=>no(ce.locator)).join("\u2192")}`);break}}R=L}if(R&&(R=n.get(o.name)===o.ident,p&&!R&&(I=`- filled by: ${no(u.get(o.name)[0])} at ${E}`)),R){let L=!0,U=new Set(o.peerNames);for(let J=r.length-1;J>=1;J--){let te=r[J];for(let ae of U){if(te.peerNames.has(ae)&&te.originalDependencies.has(ae))continue;let fe=te.dependencies.get(ae);fe&&t.dependencies.get(ae)!==fe&&(J===r.length-1?v.add(fe):(v=null,L=!1,p&&(I=`- peer dependency ${no(fe.locator)} from parent ${no(te.locator)} was not hoisted to ${E}`))),U.delete(ae)}if(!L)break}R=L}if(R&&!h)for(let L of o.hoistedDependencies.values()){let U=a.get(L.name)||t.dependencies.get(L.name);if(!U||L.ident!==U.ident){R=!1,p&&(I=`- previously hoisted dependency mismatch, needed: ${no(L.locator)}, available: ${no(U?.locator)}`);break}}return v!==null&&v.size>0?{isHoistable:2,dependsOn:v,reason:I}:{isHoistable:R?0:1,reason:I}},yQ=t=>`${t.name}@${t.locator}`,AIt=(t,e,r,o,a,n,u,A,p)=>{let h=e[e.length-1],E=new Set,I=!1,v=!1,x=(U,J,te,ae,fe)=>{if(E.has(ae))return;let ce=[...J,yQ(ae)],me=[...te,yQ(ae)],he=new Map,Be=new Map;for(let le of Lj(ae)){let ne=uIt(h,r,[h,...U,ae],le,o,a,n,A,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(le,ne),ne.isHoistable===2)for(let ee of ne.dependsOn){let Ie=he.get(ee.name)||new Set;Ie.add(le.name),he.set(ee.name,Ie)}}let we=new Set,g=(le,ne,ee)=>{if(!we.has(le)){we.add(le),Be.set(le,{isHoistable:1,reason:ee});for(let Ie of he.get(le.name)||[])g(ae.dependencies.get(Ie),ne,p.debugLevel>=2?`- peer dependency ${no(le.locator)} from parent ${no(ae.locator)} was not hoisted`:"")}};for(let[le,ne]of Be)ne.isHoistable===1&&g(le,ne,ne.reason);let Ee=!1;for(let le of Be.keys())if(!we.has(le)){v=!0;let ne=u.get(ae);ne&&ne.has(le.name)&&(I=!0),Ee=!0,ae.dependencies.delete(le.name),ae.hoistedDependencies.set(le.name,le),ae.reasons.delete(le.name);let ee=h.dependencies.get(le.name);if(p.debugLevel>=2){let Ie=Array.from(J).concat([ae.locator]).map(At=>no(At)).join("\u2192"),Fe=h.hoistedFrom.get(le.name);Fe||(Fe=[],h.hoistedFrom.set(le.name,Fe)),Fe.push(Ie),ae.hoistedTo.set(le.name,Array.from(e).map(At=>no(At.locator)).join("\u2192"))}if(!ee)h.ident!==le.ident&&(h.dependencies.set(le.name,le),fe.add(le));else for(let Ie of le.references)ee.references.add(Ie)}if(ae.dependencyKind===2&&Ee&&(I=!0),p.check){let le=gIe(t);if(le)throw new Error(`${le}, after hoisting dependencies of ${[h,...U,ae].map(ne=>no(ne.locator)).join("\u2192")}: +${VB(t)}`)}let Se=Lj(ae);for(let le of Se)if(we.has(le)){let ne=Be.get(le);if((a.get(le.name)===le.ident||!ae.reasons.has(le.name))&&ne.isHoistable!==0&&ae.reasons.set(le.name,ne.reason),!le.isHoistBorder&&me.indexOf(yQ(le))<0){E.add(ae);let Ie=fIe(ae,le);x([...U,ae],ce,me,Ie,R),E.delete(ae)}}},C,R=new Set(Lj(h)),L=Array.from(e).map(U=>yQ(U));do{C=R,R=new Set;for(let U of C){if(U.locator===h.locator||U.isHoistBorder)continue;let J=fIe(h,U);x([],Array.from(r),L,J,R)}}while(R.size>0);return{anotherRoundNeeded:I,isGraphChanged:v}},gIe=t=>{let e=[],r=new Set,o=new Set,a=(n,u,A)=>{if(r.has(n)||(r.add(n),o.has(n)))return;let p=new Map(u);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),I=()=>`${Array.from(o).concat([n]).map(v=>no(v.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let v=u.get(h.name);(v!==E||!v||v.ident!==h.ident)&&e.push(`${I()} - broken peer promise: expected ${h.ident} but found ${v&&v.ident}`)}else{let v=A.hoistedFrom.get(n.name),x=n.hoistedTo.get(h.name),C=`${v?` hoisted from ${v.join(", ")}`:""}`,R=`${x?` hoisted to ${x}`:""}`,L=`${I()}${C}`;E?E.ident!==h.ident&&e.push(`${L} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${L} - broken require promise: no required dependency ${h.name}${R} found`)}}o.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);o.delete(n)};return a(t,t.dependencies,t),e.join(` +`)},fIt=(t,e)=>{let{identName:r,name:o,reference:a,peerNames:n}=t,u={name:o,references:new Set([a]),locator:Oj(r,a),ident:AIe(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},A=new Map([[t,u]]),p=(h,E)=>{let I=A.get(h),v=!!I;if(!I){let{name:x,identName:C,reference:R,peerNames:L,hoistPriority:U,dependencyKind:J}=h,te=e.hoistingLimits.get(E.locator);I={name:x,references:new Set([R]),locator:Oj(C,R),ident:AIe(C,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(L),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(x):!1,hoistPriority:U||0,dependencyKind:J||0,hoistedFrom:new Map,hoistedTo:new Map},A.set(h,I)}if(E.dependencies.set(h.name,I),E.originalDependencies.set(h.name,I),v){let x=new Set,C=R=>{if(!x.has(R)){x.add(R),R.decoupled=!1;for(let L of R.dependencies.values())R.peerNames.has(L.name)||C(L)}};C(I)}else for(let x of h.dependencies)p(x,I)};for(let h of t.dependencies)p(h,u);return u},Uj=t=>t.substring(0,t.indexOf("@",1)),pIt=t=>{let e={name:t.name,identName:Uj(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),o=(a,n,u)=>{let A=r.has(a),p;if(n===a)p=u;else{let{name:h,references:E,locator:I}=a;p={name:h,identName:Uj(I),references:E,dependencies:new Set}}if(u.dependencies.add(p),!A){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||o(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())o(a,t,e);return e},hIt=t=>{let e=new Map,r=new Set([t]),o=u=>`${u.name}@${u.ident}`,a=u=>{let A=o(u),p=e.get(A);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(A,p)),p},n=(u,A)=>{let p=!!r.has(A);if(a(A).dependents.add(u.ident),!p){r.add(A);for(let E of A.dependencies.values()){let I=a(E);I.hoistPriority=Math.max(I.hoistPriority,E.hoistPriority),A.peerNames.has(E.name)?I.peerDependents.add(A.ident):n(A,E)}}};for(let u of t.dependencies.values())t.peerNames.has(u.name)||n(t,u);return e},no=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let o=t.substring(e+1);if(o==="workspace:.")return".";if(o){let a=(o.indexOf("#")>0?o.split("#")[1]:o).replace("npm:","");return o.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`},pIe=5e4,VB=t=>{let e=0,r=(a,n,u="")=>{if(e>pIe||n.has(a))return"";e++;let A=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":"")+(v!==E.name?`a:${E.name}:`:"")+no(E.locator)+(I?` ${I}`:"")} +`,p+=r(E,n,`${u}${hpIe?` +Tree is too large, part of the tree has been dunped +`:"")};var JB=(o=>(o.WORKSPACES="workspaces",o.DEPENDENCIES="dependencies",o.NONE="none",o))(JB||{}),dIe="node_modules",v0="$wsroot$";var zB=(t,e)=>{let{packageTree:r,hoistingLimits:o,errors:a,preserveSymlinksRequired:n}=dIt(t,e),u=null;if(a.length===0){let A=hIe(r,{hoistingLimits:o});u=yIt(t,A,e)}return{tree:u,errors:a,preserveSymlinksRequired:n}},gA=t=>`${t.name}@${t.reference}`,Hj=t=>{let e=new Map;for(let[r,o]of t.entries())if(!o.dirList){let a=e.get(o.locator);a||(a={target:o.target,linkType:o.linkType,locations:[],aliases:o.aliases},e.set(o.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((o,a)=>{let n=o.split(V.delimiter).length,u=a.split(V.delimiter).length;return a===o?0:n!==u?u-n:a>o?1:-1});return e},mIe=(t,e)=>{let r=W.isVirtualLocator(t)?W.devirtualizeLocator(t):t,o=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e;return W.areLocatorsEqual(r,o)},_j=(t,e,r,o)=>{if(t.linkType!=="SOFT")return!1;let a=ue.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return V.contains(o,a)===null},gIt=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 o=ue.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},u=t.getDependencyTreeRoots(),A=new Map,p=new Set,h=(v,x)=>{let C=gA(v);if(p.has(C))return;p.add(C);let R=t.getPackageInformation(v);if(R){let L=x?gA(x):"";if(gA(v)!==L&&R.linkType==="SOFT"&&!v.reference.startsWith("link:")&&!_j(R,v,t,o)){let U=yIe(R,v,t);(!A.get(U)||v.reference.startsWith("workspace:"))&&A.set(U,v)}for(let[U,J]of R.packageDependencies)J!==null&&(R.packagePeers.has(U)||h(t.getLocator(U,J),v))}};for(let v of u)h(v,null);let E=o.split(V.sep);for(let v of A.values()){let x=t.getPackageInformation(v),R=ue.toPortablePath(x.packageLocation.slice(0,-1)).split(V.sep).slice(E.length),L=n;for(let U of R){let J=L.children.get(U);J||(J={children:new Map},L.children.set(U,J)),L=J}L.workspaceLocator=v}let I=(v,x)=>{if(v.workspaceLocator){let C=gA(x),R=a.get(C);R||(R=new Set,a.set(C,R)),R.add(v.workspaceLocator)}for(let C of v.children.values())I(C,v.workspaceLocator||x)};for(let v of n.children.values())I(v,n.workspaceLocator);return a},dIt=(t,e)=>{let r=[],o=!1,a=new Map,n=gIt(t),u=t.getPackageInformation(t.topLevel);if(u===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let A=t.findPackageLocator(u.packageLocation);if(A===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=ue.toPortablePath(u.packageLocation.slice(0,-1)),h={name:A.name,identName:A.name,reference:A.reference,peerNames:u.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,I=(x,C)=>`${gA(C)}:${x}`,v=(x,C,R,L,U,J,te,ae)=>{let fe=I(x,R),ce=E.get(fe),me=!!ce;!me&&R.name===A.name&&R.reference===A.reference&&(ce=h,E.set(fe,h));let he=_j(C,R,t,p);if(!ce){let le=0;he?le=2:C.linkType==="SOFT"&&R.name.endsWith(v0)&&(le=1),ce={name:x,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:le===1?new Set:C.packagePeers,dependencyKind:le},E.set(fe,ce)}let Be;if(he?Be=2:U.linkType==="SOFT"?Be=1:Be=0,ce.hoistPriority=Math.max(ce.hoistPriority||0,Be),ae&&!he){let le=gA({name:L.identName,reference:L.reference}),ne=a.get(le)||new Set;a.set(le,ne),ne.add(ce.name)}let we=new Map(C.packageDependencies);if(e.project){let le=e.project.workspacesByCwd.get(ue.toPortablePath(C.packageLocation.slice(0,-1)));if(le){let ne=new Set([...Array.from(le.manifest.peerDependencies.values(),ee=>W.stringifyIdent(ee)),...Array.from(le.manifest.peerDependenciesMeta.keys())]);for(let ee of ne)we.has(ee)||(we.set(ee,J.get(ee)||null),ce.peerNames.add(ee))}}let g=gA({name:R.name.replace(v0,""),reference:R.reference}),Ee=n.get(g);if(Ee)for(let le of Ee)we.set(`${le.name}${v0}`,le.reference);(C!==U||C.linkType!=="SOFT"||!he&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(te)))&&L.dependencies.add(ce);let Se=R!==A&&C.linkType==="SOFT"&&!R.name.endsWith(v0)&&!he;if(!me&&!Se){let le=new Map;for(let[ne,ee]of we)if(ee!==null){let Ie=t.getLocator(ne,ee),Fe=t.getLocator(ne.replace(v0,""),ee),At=t.getPackageInformation(Fe);if(At===null)throw new Error("Assertion failed: Expected the package to have been registered");let H=_j(At,Ie,t,p);if(e.validateExternalSoftLinks&&e.project&&H){At.packageDependencies.size>0&&(o=!0);for(let[He,Te]of At.packageDependencies)if(Te!==null){let Je=W.parseLocator(Array.isArray(Te)?`${Te[0]}@${Te[1]}`:`${He}@${Te}`);if(gA(Je)!==gA(Ie)){let je=we.get(He);if(je){let b=W.parseLocator(Array.isArray(je)?`${je[0]}@${je[1]}`:`${He}@${je}`);mIe(b,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${R.name}@${R.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with parent dependency ${W.prettyLocator(e.project.configuration,b)}`})}else{let b=le.get(He);if(b){let w=b.target,P=W.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${He}@${w}`);mIe(P,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${R.name}@${R.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with dependency ${W.prettyLocator(e.project.configuration,P)} from sibling portal ${W.prettyIdent(e.project.configuration,W.parseIdent(b.portal.name))}`})}else le.set(He,{target:Je.reference,portal:Ie})}}}}let at=e.hoistingLimitsByCwd?.get(te),Re=H?te:V.relative(p,ue.toPortablePath(At.packageLocation))||Bt.dot,ke=e.hoistingLimitsByCwd?.get(Re);v(ne,At,Ie,ce,C,we,Re,at==="dependencies"||ke==="dependencies"||ke==="workspaces")}}};return v(A.name,u,A,h,u,u.packageDependencies,Bt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:o}};function yIe(t,e,r){let o=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return ue.toPortablePath(o||t.packageLocation)}function mIt(t,e,r){let o=e.getLocator(t.name.replace(v0,""),t.reference),a=e.getPackageInformation(o);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:ue.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:yIe(a,t,e)}}var yIt=(t,e,r)=>{let o=new Map,a=(E,I,v)=>{let{linkType:x,target:C}=mIt(E,t,r);return{locator:gA(E),nodePath:I,target:C,linkType:x,aliases:v}},n=E=>{let[I,v]=E.split("/");return v?{scope:I,name:v}:{scope:null,name:I}},u=new Set,A=(E,I,v)=>{if(u.has(E))return;u.add(E);let x=Array.from(E.references).sort().join("#");for(let C of E.dependencies){let R=Array.from(C.references).sort().join("#");if(C.identName===E.identName.replace(v0,"")&&R===x)continue;let L=Array.from(C.references).sort(),U={name:C.identName,reference:L[0]},{name:J,scope:te}=n(C.name),ae=te?[te,J]:[J],fe=V.join(I,dIe),ce=V.join(fe,...ae),me=`${v}/${U.name}`,he=a(U,v,L.slice(1)),Be=!1;if(he.linkType==="SOFT"&&r.project){let we=r.project.workspacesByCwd.get(he.target.slice(0,-1));Be=!!(we&&!we.manifest.name)}if(!C.name.endsWith(v0)&&!Be){let we=o.get(ce);if(we){if(we.dirList)throw new Error(`Assertion failed: ${ce} cannot merge dir node with leaf node`);{let Se=W.parseLocator(we.locator),le=W.parseLocator(he.locator);if(we.linkType!==he.linkType)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different link types ${we.nodePath}/${W.stringifyLocator(Se)} and ${v}/${W.stringifyLocator(le)}`);if(Se.identHash!==le.identHash)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different idents ${we.nodePath}/${W.stringifyLocator(Se)} and ${v}/s${W.stringifyLocator(le)}`);he.aliases=[...he.aliases,...we.aliases,W.parseLocator(we.locator).reference]}}o.set(ce,he);let g=ce.split("/"),Ee=g.indexOf(dIe);for(let Se=g.length-1;Ee>=0&&Se>Ee;Se--){let le=ue.toPortablePath(g.slice(0,Se).join(V.sep)),ne=g[Se],ee=o.get(le);if(!ee)o.set(le,{dirList:new Set([ne])});else if(ee.dirList){if(ee.dirList.has(ne))break;ee.dirList.add(ne)}}}A(C,he.linkType==="SOFT"?he.target:ce,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},"",[]),h=p.target;return o.set(h,p),A(e,h,""),o};Ye();Ye();St();St();nA();Nl();var oG={};Vt(oG,{PnpInstaller:()=>mm,PnpLinker:()=>P0,UnplugCommand:()=>x0,default:()=>VIt,getPnpPath:()=>b0,jsInstallUtils:()=>yA,pnpUtils:()=>av,quotePathIfNeeded:()=>r1e});St();var t1e=ve("url");Ye();Ye();St();St();var EIe={["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 EIt(t,e,r){let o="";o+="[";for(let a=0,n=t.length;a"u"||(A!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=EQ(p,h,e,r).replace(/^ +/g,""),A+=1)}return a+="}",a}function IIt(t,e,r){let o=Object.keys(t),a=`${r} `,n="";n+=r,n+=`{ +`;let u=0;for(let A=0,p=o.length;A"u"||(u!==0&&(n+=",",n+=` +`),n+=a,n+=JSON.stringify(h),n+=": ",n+=EQ(h,E,e,a).replace(/^ +/g,""),u+=1)}return u!==0&&(n+=` +`),n+=r,n+="}",n}function EQ(t,e,r,o){let{next:a}=EIe[r],n=a[t]||a["*"];return CIe(e,n,o)}function CIe(t,e,r){let{collapsed:o}=EIe[e];return Array.isArray(t)?o?EIt(t,e,r):CIt(t,e,r):typeof t=="object"&&t!==null?o?wIt(t,e,r):IIt(t,e,r):JSON.stringify(t)}function wIe(t){return CIe(t,"TOP_LEVEL","")}function XB(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function BIt(t){let e=new Map,r=XB(t.fallbackExclusionList||[],[({name:o,reference:a})=>o,({name:o,reference:a})=>a]);for(let{name:o,reference:a}of r){let n=e.get(o);typeof n>"u"&&e.set(o,n=new Set),n.add(a)}return Array.from(e).map(([o,a])=>[o,Array.from(a)])}function vIt(t){return XB(t.fallbackPool||[],([e])=>e)}function DIt(t){let e=[];for(let[r,o]of XB(t.packageRegistry,([a])=>a===null?"0":`1${a}`)){let a=[];e.push([r,a]);for(let[n,{packageLocation:u,packageDependencies:A,packagePeers:p,linkType:h,discardFromLookup:E}]of XB(o,([I])=>I===null?"0":`1${I}`)){let I=[];r!==null&&n!==null&&!A.has(r)&&I.push([r,n]);for(let[C,R]of XB(A.entries(),([L])=>L))I.push([C,R]);let v=p&&p.size>0?Array.from(p):void 0,x=E||void 0;a.push([n,{packageLocation:u,packageDependencies:I,packagePeers:v,linkType:h,discardFromLookup:x}])}}return e}function ZB(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,fallbackExclusionList:BIt(t),fallbackPool:vIt(t),packageRegistryData:DIt(t)}}var vIe=$e(BIe());function DIe(t,e){return[t?`${t} +`:"",`/* eslint-disable */ +`,`"use strict"; +`,` +`,e,` +`,(0,vIe.default)()].join("")}function SIt(t){return JSON.stringify(t,null,2)}function PIt(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ +`)}'`}function bIt(t){return[`const RAW_RUNTIME_STATE = +`,`${PIt(wIe(t))}; + +`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); +`,`} +`].join("")}function xIt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` const fs = require('fs'); +`,` const path = require('path'); +`,` const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(dr.pnpData)}); +`,` return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname}); +`,`} +`].join("")}function SIe(t){let e=ZB(t),r=bIt(e);return DIe(t.shebang,r)}function PIe(t){let e=ZB(t),r=xIt(),o=DIe(t.shebang,r);return{dataFile:SIt(e),loaderFile:o}}St();function Gj(t,{basePath:e}){let r=ue.toPortablePath(e),o=V.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,u=new Map(t.packageRegistryData.map(([I,v])=>[I,new Map(v.map(([x,C])=>{if(I===null!=(x===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let R=C.discardFromLookup??!1,L={name:I,reference:x},U=n.get(C.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=L)):n.set(C.packageLocation,{locator:L,discardFromLookup:R});let J=null;return[x,{packageDependencies:new Map(C.packageDependencies),packagePeers:new Set(C.packagePeers),linkType:C.linkType,discardFromLookup:R,get packageLocation(){return J||(J=V.join(o,C.packageLocation))}}]}))])),A=new Map(t.fallbackExclusionList.map(([I,v])=>[I,new Set(v)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:A,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:u}}St();St();var np=ve("module"),dm=ve("url"),$j=ve("util");var Mo=ve("url");var QIe=$e(ve("assert"));var qj=Array.isArray,$B=JSON.stringify,ev=Object.getOwnPropertyNames,hm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Yj=(t,e)=>RegExp.prototype.exec.call(t,e),Wj=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),D0=(t,...e)=>String.prototype.endsWith.apply(t,e),Kj=(t,...e)=>String.prototype.includes.apply(t,e),Vj=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),tv=(t,...e)=>String.prototype.indexOf.apply(t,e),bIe=(t,...e)=>String.prototype.replace.apply(t,e),S0=(t,...e)=>String.prototype.slice.apply(t,e),dA=(t,...e)=>String.prototype.startsWith.apply(t,e),xIe=Map,kIe=JSON.parse;function rv(t,e,r){return class extends r{constructor(...o){super(e(...o)),this.code=t,this.name=`${r.name} [${t}]`}}}var FIe=rv("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),Jj=rv("ERR_INVALID_MODULE_SPECIFIER",(t,e,r=void 0)=>`Invalid module "${t}" ${e}${r?` imported from ${r}`:""}`,TypeError),RIe=rv("ERR_INVALID_PACKAGE_TARGET",(t,e,r,o=!1,a=void 0)=>{let n=typeof r=="string"&&!o&&r.length&&!dA(r,"./");return e==="."?((0,QIe.default)(o===!1),`Invalid "exports" main target ${$B(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${o?"imports":"exports"}" target ${$B(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),nv=rv("ERR_INVALID_PACKAGE_CONFIG",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:""}${r?`. ${r}`:""}`,Error),TIe=rv("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 wQ=ve("url");function NIe(t,e){let r=Object.create(null);for(let o=0;oe):t+e}iv(r,t,o,u,a)}Yj(OIe,S0(t,2))!==null&&iv(r,t,o,u,a);let p=new URL(t,o),h=p.pathname,E=new URL(".",o).pathname;if(dA(h,E)||iv(r,t,o,u,a),e==="")return p;if(Yj(OIe,e)!==null){let I=n?bIe(r,"*",()=>e):r+e;FIt(I,o,u,a)}return n?new URL(Wj(MIe,p.href,()=>e)):new URL(e,p)}function TIt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function qC(t,e,r,o,a,n,u,A){if(typeof e=="string")return RIt(e,r,o,t,a,n,u,A);if(qj(e)){if(e.length===0)return null;let p;for(let h=0;hn?-1:n>a||r===-1?1:o===-1||t.length>e.length?-1:e.length>t.length?1:0}function NIt(t,e,r){if(typeof t=="string"||qj(t))return!0;if(typeof t!="object"||t===null)return!1;let o=ev(t),a=!1,n=0;for(let u=0;u=h.length&&D0(e,I)&&_Ie(n,h)===1&&Vj(h,"*")===E&&(n=h,u=S0(e,E,e.length-I.length))}}if(n){let p=r[n],h=qC(t,p,u,n,o,!0,!1,a);return h==null&&zj(e,t,o),h}zj(e,t,o)}function jIe({name:t,base:e,conditions:r,readFileSyncFn:o}){if(t==="#"||dA(t,"#/")||D0(t,"/")){let u="is not a valid internal imports specifier name";throw new Jj(t,u,(0,Mo.fileURLToPath)(e))}let a,n=LIe(e,o);if(n.exists){a=(0,Mo.pathToFileURL)(n.pjsonPath);let u=n.imports;if(u)if(hm(u,t)&&!Kj(t,"*")){let A=qC(a,u[t],"",t,e,!1,!0,r);if(A!=null)return A}else{let A="",p,h=ev(u);for(let E=0;E=I.length&&D0(t,x)&&_Ie(A,I)===1&&Vj(I,"*")===v&&(A=I,p=S0(t,v,t.length-x.length))}}if(A){let E=u[A],I=qC(a,E,p,A,e,!0,!0,r);if(I!=null)return I}}}QIt(t,a,e)}St();var OIt=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function $i(t,e,r={},o){o??=OIt.has(t)?"MODULE_NOT_FOUND":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:o},pnpCode:{...a,value:t},data:{...a,value:r}})}function au(t){return ue.normalize(ue.fromPortablePath(t))}var WIe=$e(qIe());function KIe(t){return MIt(),Zj[t]}var Zj;function MIt(){Zj||(Zj={"--conditions":[],...YIe(UIt()),...YIe(process.execArgv)})}function YIe(t){return(0,WIe.default)({"--conditions":[String],"-C":"--conditions"},{argv:t,permissive:!0})}function UIt(){let t=[],e=_It(process.env.NODE_OPTIONS||"",t);return t.length,e}function _It(t,e){let r=[],o=!1,a=!0;for(let n=0;nparseInt(t,10)),VIe=mA>19||mA===19&&gm>=2||mA===18&&gm>=13,Bzt=mA===20&&gm<6||mA===19&&gm>=3,vzt=mA>19||mA===19&&gm>=6,Dzt=mA>=21||mA===20&&gm>=10||mA===18&&gm>=19;function JIe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(e)))),VIe)process.send({"watch:require":t});else for(let e of t)process.send({"watch:require":e})}function eG(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,u=/\/$/,A=/^\.{0,2}\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Re of["react-scripts","gatsby"]){let ke=t.packageRegistry.get(Re);if(ke)for(let xe of ke.keys()){if(xe===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Re,reference:xe})}}let{ignorePattern:I,packageRegistry:v,packageLocatorsByLocations:x}=t;function C(Re,ke){return{fn:Re,args:ke,error:null,result:null}}function R(Re){let ke=process.stderr?.hasColors?.()??process.stdout.isTTY,xe=(Je,je)=>`\x1B[${Je}m${je}\x1B[0m`,He=Re.error;console.error(He?xe("31;1",`\u2716 ${Re.error?.message.replace(/\n.*/s,"")}`):xe("33;1","\u203C Resolution")),Re.args.length>0&&console.error();for(let Je of Re.args)console.error(` ${xe("37;1","In \u2190")} ${(0,$j.inspect)(Je,{colors:ke,compact:!0})}`);Re.result&&(console.error(),console.error(` ${xe("37;1","Out \u2192")} ${(0,$j.inspect)(Re.result,{colors:ke,compact:!0})}`));let Te=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Te.length>0){console.error();for(let Je of Te)console.error(` ${xe("38;5;244",Je)}`)}console.error()}function L(Re,ke){if(e.allowDebug===!1)return ke;if(Number.isFinite(o)){if(o>=2)return(...xe)=>{let He=C(Re,xe);try{return He.result=ke(...xe)}catch(Te){throw He.error=Te}finally{R(He)}};if(o>=1)return(...xe)=>{try{return ke(...xe)}catch(He){let Te=C(Re,xe);throw Te.error=He,R(Te),He}}}return ke}function U(Re){let ke=g(Re);if(!ke)throw $i("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return ke}function J(Re){if(Re.name===null)return!0;for(let ke of t.dependencyTreeRoots)if(ke.name===Re.name&&ke.reference===Re.reference)return!0;return!1}let te=new Set(["node","require",...KIe("--conditions")]);function ae(Re,ke=te,xe){let He=le(V.join(Re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(He===null)throw $i("INTERNAL",`The locator that owns the "${Re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Te}=U(He),Je=V.join(Te,dr.manifest);if(!e.fakeFs.existsSync(Je))return null;let je=JSON.parse(e.fakeFs.readFileSync(Je,"utf8"));if(je.exports==null)return null;let b=V.contains(Te,Re);if(b===null)throw $i("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");b!=="."&&!A.test(b)&&(b=`./${b}`);try{let w=HIe({packageJSONUrl:(0,dm.pathToFileURL)(ue.fromPortablePath(Je)),packageSubpath:b,exports:je.exports,base:xe?(0,dm.pathToFileURL)(ue.fromPortablePath(xe)):null,conditions:ke});return ue.toPortablePath((0,dm.fileURLToPath)(w))}catch(w){throw $i("EXPORTS_RESOLUTION_FAILED",w.message,{unqualifiedPath:au(Re),locator:He,pkgJson:je,subpath:au(b),conditions:ke},w.code)}}function fe(Re,ke,{extensions:xe}){let He;try{ke.push(Re),He=e.fakeFs.statSync(Re)}catch{}if(He&&!He.isDirectory())return e.fakeFs.realpathSync(Re);if(He&&He.isDirectory()){let Te;try{Te=JSON.parse(e.fakeFs.readFileSync(V.join(Re,dr.manifest),"utf8"))}catch{}let Je;if(Te&&Te.main&&(Je=V.resolve(Re,Te.main)),Je&&Je!==Re){let je=fe(Je,ke,{extensions:xe});if(je!==null)return je}}for(let Te=0,Je=xe.length;Te{let b=JSON.stringify(je.name);if(He.has(b))return;He.add(b);let w=Ee(je);for(let P of w)if(U(P).packagePeers.has(Re))Te(P);else{let F=xe.get(P.name);typeof F>"u"&&xe.set(P.name,F=new Set),F.add(P.reference)}};Te(ke);let Je=[];for(let je of[...xe.keys()].sort())for(let b of[...xe.get(je)].sort())Je.push({name:je,reference:b});return Je}function le(Re,{resolveIgnored:ke=!1,includeDiscardFromLookup:xe=!1}={}){if(he(Re)&&!ke)return null;let He=V.relative(t.basePath,Re);He.match(n)||(He=`./${He}`),He.endsWith("/")||(He=`${He}/`);do{let Te=x.get(He);if(typeof Te>"u"||Te.discardFromLookup&&!xe){He=He.substring(0,He.lastIndexOf("/",He.length-2)+1);continue}return Te.locator}while(He!=="");return null}function ne(Re){try{return e.fakeFs.readFileSync(ue.toPortablePath(Re),"utf8")}catch(ke){if(ke.code==="ENOENT")return;throw ke}}function ee(Re,ke,{considerBuiltins:xe=!0}={}){if(Re.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Re==="pnpapi")return ue.toPortablePath(e.pnpapiResolution);if(xe&&(0,np.isBuiltin)(Re))return null;let He=au(Re),Te=ke&&au(ke);if(ke&&he(ke)&&(!V.isAbsolute(Re)||le(Re)===null)){let b=me(Re,ke);if(b===!1)throw $i("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: "${He}" +Required by: ${Te} +`,{request:He,issuer:Te});return ue.toPortablePath(b)}let Je,je=Re.match(a);if(je){if(!ke)throw $i("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:He,issuer:Te});let[,b,w]=je,P=le(ke);if(!P){let Ne=me(Re,ke);if(Ne===!1)throw $i("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: "${He}" +Required by: ${Te} +`,{request:He,issuer:Te});return ue.toPortablePath(Ne)}let F=U(P).packageDependencies.get(b),z=null;if(F==null&&P.name!==null){let Ne=t.fallbackExclusionList.get(P.name);if(!Ne||!Ne.has(P.reference)){for(let dt=0,Gt=h.length;dtJ(ot))?X=$i("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${b} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${b}${b!==He?` (via "${He}")`:""} +Required by: ${P.name}@${P.reference} (via ${Te}) +${Ne.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference} +`).join("")} +`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b,brokenAncestors:Ne}):X=$i("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${b} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${b}${b!==He?` (via "${He}")`:""} +Required by: ${P.name}@${P.reference} (via ${Te}) + +${Ne.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference} +`).join("")} +`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b,brokenAncestors:Ne})}else F===void 0&&(!xe&&(0,np.isBuiltin)(Re)?J(P)?X=$i("UNDECLARED_DEPENDENCY",`Your application tried to access ${b}. 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 ${b} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${b}${b!==He?` (via "${He}")`:""} +Required by: ${Te} +`,{request:He,issuer:Te,dependencyName:b}):X=$i("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${b}. 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 ${b} isn't otherwise declared in ${P.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${b}${b!==He?` (via "${He}")`:""} +Required by: ${Te} +`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b}):J(P)?X=$i("UNDECLARED_DEPENDENCY",`Your application tried to access ${b}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${b}${b!==He?` (via "${He}")`:""} +Required by: ${Te} +`,{request:He,issuer:Te,dependencyName:b}):X=$i("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${b}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${b}${b!==He?` (via "${He}")`:""} +Required by: ${P.name}@${P.reference} (via ${Te}) +`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b}));if(F==null){if(z===null||X===null)throw X||new Error("Assertion failed: Expected an error to have been set");F=z;let Ne=X.message.replace(/\n.*/g,"");X.message=Ne,!E.has(Ne)&&o!==0&&(E.add(Ne),process.emitWarning(X))}let Z=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:b,reference:F},ie=U(Z);if(!ie.packageLocation)throw $i("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: ${Z.name}@${Z.reference}${Z.name!==He?` (via "${He}")`:""} +Required by: ${P.name}@${P.reference} (via ${Te}) +`,{request:He,issuer:Te,dependencyLocator:Object.assign({},Z)});let Pe=ie.packageLocation;w?Je=V.join(Pe,w):Je=Pe}else if(V.isAbsolute(Re))Je=V.normalize(Re);else{if(!ke)throw $i("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:He,issuer:Te});let b=V.resolve(ke);ke.match(u)?Je=V.normalize(V.join(b,Re)):Je=V.normalize(V.join(V.dirname(b),Re))}return V.normalize(Je)}function Ie(Re,ke,xe=te,He){if(n.test(Re))return ke;let Te=ae(ke,xe,He);return Te?V.normalize(Te):ke}function Fe(Re,{extensions:ke=Object.keys(np.Module._extensions)}={}){let xe=[],He=fe(Re,xe,{extensions:ke});if(He)return V.normalize(He);{JIe(xe.map(je=>ue.fromPortablePath(je)));let Te=au(Re),Je=le(Re);if(Je){let{packageLocation:je}=U(Je),b=!0;try{e.fakeFs.accessSync(je)}catch(w){if(w?.code==="ENOENT")b=!1;else{let P=(w?.message??w??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw $i("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${P}). + +Missing package: ${Je.name}@${Je.reference} +Expected package location: ${au(je)} +`,{unqualifiedPath:Te,extensions:ke})}}if(!b){let w=je.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 $i("QUALIFIED_PATH_RESOLUTION_FAILED",`${w} + +Missing package: ${Je.name}@${Je.reference} +Expected package location: ${au(je)} +`,{unqualifiedPath:Te,extensions:ke})}}throw $i("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${Te} +${xe.map(je=>`Not found: ${au(je)} +`).join("")}`,{unqualifiedPath:Te,extensions:ke})}}function At(Re,ke,xe){if(!ke)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let He=jIe({name:Re,base:(0,dm.pathToFileURL)(ue.fromPortablePath(ke)),conditions:xe.conditions??te,readFileSyncFn:ne});if(He instanceof URL)return Fe(ue.toPortablePath((0,dm.fileURLToPath)(He)),{extensions:xe.extensions});if(He.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return H(He,ke,xe)}function H(Re,ke,xe={}){try{if(Re.startsWith("#"))return At(Re,ke,xe);let{considerBuiltins:He,extensions:Te,conditions:Je}=xe,je=ee(Re,ke,{considerBuiltins:He});if(Re==="pnpapi")return je;if(je===null)return null;let b=()=>ke!==null?he(ke):!1,w=(!He||!(0,np.isBuiltin)(Re))&&!b()?Ie(Re,je,Je,ke):je;return Fe(w,{extensions:Te})}catch(He){throw Object.hasOwn(He,"pnpCode")&&Object.assign(He.data,{request:au(Re),issuer:ke&&au(ke)}),He}}function at(Re){let ke=V.normalize(Re),xe=mi.resolveVirtual(ke);return xe!==ke?xe:null}return{VERSIONS:Be,topLevel:we,getLocator:(Re,ke)=>Array.isArray(ke)?{name:ke[0],reference:ke[1]}:{name:Re,reference:ke},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Re=[];for(let[ke,xe]of v)for(let He of xe.keys())ke!==null&&He!==null&&Re.push({name:ke,reference:He});return Re},getPackageInformation:Re=>{let ke=g(Re);if(ke===null)return null;let xe=ue.fromPortablePath(ke.packageLocation);return{...ke,packageLocation:xe}},findPackageLocator:Re=>le(ue.toPortablePath(Re)),resolveToUnqualified:L("resolveToUnqualified",(Re,ke,xe)=>{let He=ke!==null?ue.toPortablePath(ke):null,Te=ee(ue.toPortablePath(Re),He,xe);return Te===null?null:ue.fromPortablePath(Te)}),resolveUnqualified:L("resolveUnqualified",(Re,ke)=>ue.fromPortablePath(Fe(ue.toPortablePath(Re),ke))),resolveRequest:L("resolveRequest",(Re,ke,xe)=>{let He=ke!==null?ue.toPortablePath(ke):null,Te=H(ue.toPortablePath(Re),He,xe);return Te===null?null:ue.fromPortablePath(Te)}),resolveVirtual:L("resolveVirtual",Re=>{let ke=at(ue.toPortablePath(Re));return ke!==null?ue.fromPortablePath(ke):null})}}St();var zIe=(t,e,r)=>{let o=ZB(t),a=Gj(o,{basePath:e}),n=ue.join(e,dr.pnpCjs);return eG(a,{fakeFs:r,pnpapiResolution:n})};var rG=$e(ZIe());jt();var yA={};Vt(yA,{checkManifestCompatibility:()=>$Ie,extractBuildRequest:()=>IQ,getExtractHint:()=>nG,hasBindingGyp:()=>iG});Ye();St();function $Ie(t){return W.isPackageCompatible(t,Ji.getArchitectureSet())}function IQ(t,e,r,{configuration:o}){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,`${W.prettyLocator(o,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,`${W.prettyLocator(o,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!o.get("enableScripts")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${W.prettyLocator(o,t)} lists build scripts, but all build scripts have been disabled.`)}:$Ie(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${W.prettyLocator(o,t)} The ${Ji.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var jIt=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function nG(t){return t.packageFs.getExtractHint({relevantExtensions:jIt})}function iG(t){let e=V.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var av={};Vt(av,{getUnpluggedPath:()=>ov});Ye();St();function ov(t,{configuration:e}){return V.resolve(e.get("pnpUnpluggedFolder"),W.slugifyLocator(t))}var GIt=new Set([W.makeIdent(null,"open").identHash,W.makeIdent(null,"opn").identHash]),P0=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 o=b0(r.project).cjs;if(!oe.existsSync(o))throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=_e.getFactoryWithDefault(this.pnpCache,o,()=>_e.dynamicRequire(o,{cachingStrategy:_e.CachingStrategy.FsTime})),n={name:W.stringifyIdent(e),reference:e.reference},u=a.getPackageInformation(n);if(!u)throw new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return ue.toPortablePath(u.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=b0(r.project).cjs;if(!oe.existsSync(o))return null;let n=_e.getFactoryWithDefault(this.pnpCache,o,()=>_e.dynamicRequire(o,{cachingStrategy:_e.CachingStrategy.FsTime})).findPackageLocator(ue.fromPortablePath(e));return n?W.makeLocator(W.parseIdent(n.name),n.reference):null}makeInstaller(e){return new mm(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},mm=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new _e.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,o){let a=W.stringifyIdent(e),n=e.reference,u=!!this.opts.project.tryWorkspaceByLocator(e),A=W.isVirtualLocator(e),p=e.peerDependencies.size>0&&!A,h=!p&&!u,E=!p&&e.linkType!=="SOFT",I,v;if(h||E){let te=A?W.devirtualizeLocator(e):e;I=this.customData.store.get(te.locatorHash),typeof I>"u"&&(I=await qIt(r),e.linkType==="HARD"&&this.customData.store.set(te.locatorHash,I)),I.manifest.type==="module"&&(this.isESMLoaderRequired=!0),v=this.opts.project.getDependencyMeta(te,e.version)}let x=h?IQ(e,I,v,{configuration:this.opts.project.configuration}):null,C=E?await this.unplugPackageIfNeeded(e,I,r,v,o):r.packageFs;if(V.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=V.resolve(C.getRealPath(),r.prefixPath),L=sG(this.opts.project.cwd,R),U=new Map,J=new Set;if(A){for(let te of e.peerDependencies.values())U.set(W.stringifyIdent(te),null),J.add(W.stringifyIdent(te));if(!u){let te=W.devirtualizeLocator(e);this.virtualTemplates.set(te.locatorHash,{location:sG(this.opts.project.cwd,mi.resolveVirtual(R)),locator:te})}}return _e.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:L,packageDependencies:U,packagePeers:J,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:x}}async attachInternalDependencies(e,r){let o=this.getPackageInformation(e);for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.packageDependencies.set(W.stringifyIdent(a),u)}}async attachExternalDependents(e,r){for(let o of r)this.getDiskInformation(o).packageDependencies.set(W.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=b0(this.opts.project);if(this.isEsmEnabled()||await oe.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await oe.removePromise(e.cjs),await oe.removePromise(e.data),await oe.removePromise(e.esmLoader),await oe.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:E,location:I}of this.virtualTemplates.values())_e.getMapWithDefault(this.packageRegistry,W.stringifyIdent(E)).set(E.reference,{packageLocation:I,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),o=this.opts.project.workspaces.map(({anchoredLocator:E})=>({name:W.stringifyIdent(E),reference:E.reference})),a=r!=="none",n=[],u=new Map,A=_e.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let E of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(E)&&n.push({name:W.stringifyIdent(E),reference:E.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:o,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:u,ignorePattern:A,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=b0(this.opts.project),o=await this.locateNodeModules(e.ignorePattern);if(o.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 o)await oe.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let n=SIe(e);await oe.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await oe.removePromise(r.data)}else{let{dataFile:n,loaderFile:u}=PIe(e);await oe.changeFilePromise(r.cjs,u,{automaticNewlines:!0,mode:493}),await oe.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 oe.changeFilePromise(r.esmLoader,(0,rG.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await oe.removePromise(a);else for(let n of await oe.readdirPromise(a)){let u=V.resolve(a,n);this.unpluggedPaths.has(u)||await oe.removePromise(u)}}async locateNodeModules(e){let r=[],o=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=V.join(a.cwd,"node_modules");if(o&&o.test(V.relative(this.opts.project.cwd,a.cwd))||!oe.existsSync(n))continue;let u=await oe.readdirPromise(n,{withFileTypes:!0}),A=u.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(A.length===u.length)r.push(n);else for(let p of A)r.push(V.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,o,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,o,n):o.packageFs}shouldBeUnplugged(e,r,o){return typeof o.unplugged<"u"?o.unplugged:GIt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(IQ(e,r,o,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,o){let a=ov(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new Uu(a,{baseFs:r.packageFs,pathUtils:V}):(this.unpluggedPaths.add(a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=V.join(a,r.prefixPath,".ready");await oe.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await oe.mkdirPromise(a,{recursive:!0}),await oe.copyPromise(a,Bt.dot,{baseFs:r.packageFs,overwrite:!1}),await oe.writeFilePromise(n,""))})),new gn(a))}getPackageInformation(e){let r=W.stringifyIdent(e),o=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${W.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(o);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${W.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=_e.getMapWithDefault(this.packageRegistry,"@@disk"),o=sG(this.opts.project.cwd,e);return _e.getFactoryWithDefault(r,o,()=>({packageLocation:o,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function sG(t,e){let r=V.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function qIt(t){let e=await Ot.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ot,r=new Set(["preinstall","install","postinstall"]);for(let o of e.scripts.keys())r.has(o)||e.scripts.delete(o);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:nG(t),hasBindingGyp:iG(t)}}}Ye();Ye();jt();var e1e=$e(Zo());var x0=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new it("This command can only be used if the `nodeLinker` option is set to `pnp`");await o.restoreInstallState();let u=new Set(this.patterns),A=this.patterns.map(x=>{let C=W.parseDescriptor(x),R=C.range!=="unknown"?C:W.makeDescriptor(C,"*");if(!kr.validRange(R.range))throw new it(`The range of the descriptor patterns must be a valid semver range (${W.prettyDescriptor(r,R)})`);return L=>{let U=W.stringifyIdent(L);return!e1e.default.isMatch(U,W.stringifyIdent(R))||L.version&&!kr.satisfiesWithPrereleases(L.version,R.range)?!1:(u.delete(x),!0)}}),p=()=>{let x=[];for(let C of o.storedPackages.values())!o.tryWorkspaceByLocator(C)&&!W.isVirtualLocator(C)&&A.some(R=>R(C))&&x.push(C);return x},h=x=>{let C=new Set,R=[],L=(U,J)=>{if(C.has(U.locatorHash))return;let te=!!o.tryWorkspaceByLocator(U);if(!(J>0&&!this.recursive&&te)&&(C.add(U.locatorHash),!o.tryWorkspaceByLocator(U)&&A.some(ae=>ae(U))&&R.push(U),!(J>0&&!this.recursive)))for(let ae of U.dependencies.values()){let fe=o.storedResolutions.get(ae.descriptorHash);if(!fe)throw new Error("Assertion failed: The resolution should have been registered");let ce=o.storedPackages.get(fe);if(!ce)throw new Error("Assertion failed: The package should have been registered");L(ce,J+1)}};for(let U of x)L(U.anchoredPackage,0);return R},E,I;if(this.all&&this.recursive?(E=p(),I="the project"):this.all?(E=h(o.workspaces),I="any workspace"):(E=h([a]),I="this workspace"),u.size>1)throw new it(`Patterns ${de.prettyList(r,u,de.Type.CODE)} don't match any packages referenced by ${I}`);if(u.size>0)throw new it(`Pattern ${de.prettyList(r,u,de.Type.CODE)} doesn't match any packages referenced by ${I}`);E=_e.sortMap(E,x=>W.stringifyLocator(x));let v=await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let C of E){let R=C.version??"unknown",L=o.topLevelWorkspace.manifest.ensureDependencyMeta(W.makeDescriptor(C,R));L.unplugged=!0,x.reportInfo(0,`Will unpack ${W.prettyLocator(r,C)} to ${de.pretty(r,ov(C,{configuration:r}),de.Type.PATH)}`),x.reportJson({locator:W.stringifyLocator(C),version:R})}await o.topLevelWorkspace.persistManifest(),this.json||x.reportSeparator()});return v.hasErrors()?v.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};x0.paths=[["unplug"]],x0.usage=nt.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 '*'"]]});var b0=t=>({cjs:V.join(t.cwd,dr.pnpCjs),data:V.join(t.cwd,dr.pnpData),esmLoader:V.join(t.cwd,dr.pnpEsmLoader)}),r1e=t=>/\s/.test(t)?JSON.stringify(t):t;async function YIt(t,e,r){let o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/,n=(e.NODE_OPTIONS??"").replace(o," ").replace(a," ").trim();if(t.configuration.get("nodeLinker")!=="pnp"){e.NODE_OPTIONS=n;return}let u=b0(t),A=`--require ${r1e(ue.fromPortablePath(u.cjs))}`;oe.existsSync(u.esmLoader)&&(A=`${A} --experimental-loader ${(0,t1e.pathToFileURL)(ue.fromPortablePath(u.esmLoader)).href}`),oe.existsSync(u.cjs)&&(e.NODE_OPTIONS=n?`${A} ${n}`:A)}async function WIt(t,e){let r=b0(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get("pnpUnpluggedFolder"))}var KIt={hooks:{populateYarnPaths:WIt,setupScriptEnvironment:YIt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "pnpm", or "node-modules"',type:"STRING",default:"pnp"},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},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:[P0],commands:[x0]},VIt=KIt;var u1e=$e(a1e());jt();var pG=$e(ve("crypto")),A1e=$e(ve("fs")),f1e=1,Si="node_modules",BQ=".bin",p1e=".yarn-state.yml",A1t=1e3,hG=(o=>(o.CLASSIC="classic",o.HARDLINKS_LOCAL="hardlinks-local",o.HARDLINKS_GLOBAL="hardlinks-global",o))(hG||{}),lv=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 o=r.project.tryWorkspaceByLocator(e);if(o)return o.cwd;let a=await _e.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await fG(r.project,{unrollAliases:!0}));if(a===null)throw new it("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(W.stringifyLocator(e));if(!n){let p=new it(`Couldn't find ${W.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 u=n.locations.sort((p,h)=>p.split(V.sep).length-h.split(V.sep).length),A=V.join(r.project.configuration.startingCwd,Si);return u.find(p=>V.contains(A,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=await _e.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await fG(r.project,{unrollAliases:!0}));if(o===null)return null;let{locationRoot:a,segments:n}=vQ(V.resolve(e),{skipPrefix:r.project.cwd}),u=o.locationTree.get(a);if(!u)return null;let A=u.locator;for(let p of n){if(u=u.children.get(p),!u)break;A=u.locator||A}return W.parseLocator(A)}makeInstaller(e){return new AG(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},AG=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 o=V.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>"u"&&(a=await f1t(e,r),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,a)),!W.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,u=new Set;n.has(W.stringifyIdent(e))||n.set(W.stringifyIdent(e),e.reference);let A=e;if(W.isVirtualLocator(e)){A=W.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(W.stringifyIdent(E),null),u.add(W.stringifyIdent(E))}let p={packageLocation:`${ue.fromPortablePath(o)}/`,packageDependencies:n,packagePeers:u,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(A.locatorHash,h),{packageLocation:o,buildRequest:null}}async attachInternalDependencies(e,r){let o=this.localStore.get(e.locatorHash);if(typeof o>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.pnpNode.packageDependencies.set(W.stringifyIdent(a),u)}}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 mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),r=await fG(this.opts.project),o=this.opts.project.configuration.get("nmMode");(r===null||o!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:o,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(v=>{let x=this.opts.project.configuration.get("nmHoistingLimits");try{x=_e.validateEnum(JB,v.manifest.installConfig?.hoistingLimits??x)}catch{let R=W.prettyWorkspace(this.opts.project.configuration,v);this.opts.report.reportWarning(57,`${R}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(JB).join(", ")}, using default: "${x}"`)}return[v.relativeCwd,x]})),n=new Map(this.opts.project.workspaces.map(v=>{let x=this.opts.project.configuration.get("nmSelfReferences");return x=v.manifest.installConfig?.selfReferences??x,[v.relativeCwd,x]})),u={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(v,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:v,reference:x},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(v=>{let x=v.anchoredLocator;return{name:W.stringifyIdent(x),reference:x.reference}}),getPackageInformation:v=>{let x=v.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:W.makeLocator(W.parseIdent(v.name),v.reference),C=this.localStore.get(x.locatorHash);if(typeof C>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return C.pnpNode},findPackageLocator:v=>{let x=this.opts.project.tryWorkspaceByCwd(ue.toPortablePath(v));if(x!==null){let C=x.anchoredLocator;return{name:W.stringifyIdent(C),reference:C.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:v=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(v)))},{tree:A,errors:p,preserveSymlinksRequired:h}=zB(u,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!A){for(let{messageName:v,text:x}of p)this.opts.report.reportError(v,x);return}let E=Hj(A);await y1t(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async v=>{let x=W.parseLocator(v),C=this.localStore.get(x.locatorHash);if(typeof C>"u")throw new Error("Assertion failed: Expected the slot to exist");return C.customPackageData.manifest}});let I=[];for(let[v,x]of E.entries()){if(m1e(v))continue;let C=W.parseLocator(v),R=this.localStore.get(C.locatorHash);if(typeof R>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let L=yA.extractBuildRequest(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration});!L||I.push({buildLocations:x.locations,locator:C,buildRequest:L})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${de.pretty(this.opts.project.configuration,"--preserve-symlinks",de.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:I}}};async function f1t(t,e){let r=await Ot.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ot,o=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())o.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:yA.hasBindingGyp(e)}}}async function p1t(t,e,r,o,{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: ${f1e} +`,n+=` nmMode: ${o.value} +`;let u=Array.from(e.keys()).sort(),A=W.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of u){let I=e.get(E);n+=` +`,n+=`${JSON.stringify(E)}: +`,n+=` locations: +`;for(let v of I.locations){let x=V.contains(t.cwd,v);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=` - ${JSON.stringify(x)} +`}if(I.aliases.length>0){n+=` aliases: +`;for(let v of I.aliases)n+=` - ${JSON.stringify(v)} +`}if(E===A&&r.size>0){n+=` bin: +`;for(let[v,x]of r){let C=V.contains(t.cwd,v);if(C===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=` ${JSON.stringify(C)}: +`;for(let[R,L]of x){let U=V.relative(V.join(v,Si),L);n+=` ${JSON.stringify(R)}: ${JSON.stringify(U)} +`}}}}let p=t.cwd,h=V.join(p,Si,p1e);a&&await oe.removePromise(h),await oe.changeFilePromise(h,n,{automaticNewlines:!0})}async function fG(t,{unrollAliases:e=!1}={}){let r=t.cwd,o=V.join(r,Si,p1e),a;try{a=await oe.statPromise(o)}catch{}if(!a)return null;let n=Ki(await oe.readFilePromise(o,"utf8"));if(n.__metadata.version>f1e)return null;let u=n.__metadata.nmMode||"classic",A=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let I=E.locations.map(x=>V.join(r,x)),v=E.bin;if(v)for(let[x,C]of Object.entries(v)){let R=V.join(r,ue.toPortablePath(x)),L=_e.getMapWithDefault(p,R);for(let[U,J]of Object.entries(C))L.set(U,ue.toPortablePath([R,Si,J].join(V.sep)))}if(A.set(h,{target:Bt.dot,linkType:"HARD",locations:I,aliases:E.aliases||[]}),e&&E.aliases)for(let x of E.aliases){let{scope:C,name:R}=W.parseLocator(h),L=W.makeLocator(W.makeIdent(C,R),x),U=W.stringifyLocator(L);A.set(U,{target:Bt.dot,linkType:"HARD",locations:I,aliases:[]})}}return{locatorMap:A,binSymlinks:p,locationTree:h1e(A,{skipPrefix:t.cwd}),nmMode:u,mtimeMs:a.mtimeMs}}var WC=async(t,e)=>{if(t.split(V.sep).indexOf(Si)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let o=e.allowSymlink?await oe.statPromise(t):await oe.lstatPromise(t);if(e.allowSymlink&&!o.isDirectory()||!e.allowSymlink&&o.isSymbolicLink()){await oe.unlinkPromise(t);return}}let r=await oe.readdirPromise(t,{withFileTypes:!0});for(let o of r){let a=V.join(t,o.name);o.isDirectory()?(o.name!==Si||e&&e.innerLoop)&&await WC(a,{innerLoop:!0,contentsOnly:!1}):await oe.unlinkPromise(a)}e.contentsOnly||await oe.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},l1e=4,vQ=(t,{skipPrefix:e})=>{let r=V.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let o=r.split(V.sep).filter(p=>p!==""),a=o.indexOf(Si),n=o.slice(0,a).join(V.sep),u=V.join(e,n),A=o.slice(a);return{locationRoot:u,segments:A}},h1e=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let o=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of t.entries()){if(n.linkType==="SOFT"&&V.contains(e,n.target)!==null){let A=_e.getFactoryWithDefault(r,n.target,o);A.locator=a,A.linkType=n.linkType}for(let u of n.locations){let{locationRoot:A,segments:p}=vQ(u,{skipPrefix:e}),h=_e.getFactoryWithDefault(r,A,o);for(let E=0;E{if(process.platform==="win32"&&r==="junctions"){let o;try{o=await oe.lstatPromise(t)}catch{}if(!o||o.isDirectory()){await oe.symlinkPromise(t,e,"junction");return}}await oe.symlinkPromise(V.relative(V.dirname(e),t),e)};async function g1e(t,e,r){let o=V.join(t,`${pG.default.randomBytes(16).toString("hex")}.tmp`);try{await oe.writeFilePromise(o,r);try{await oe.linkPromise(o,e)}catch{}}finally{await oe.unlinkPromise(o)}}async function h1t({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:o,baseFs:a,nmMode:n}){if(r.kind===d1e.FILE){if(n.value==="hardlinks-global"&&o&&r.digest){let A=V.join(o,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await oe.statPromise(A);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs(o.FILE="file",o.DIRECTORY="directory",o.SYMLINK="symlink",o))(d1e||{}),g1t=async(t,e,{baseFs:r,globalHardlinksStore:o,nmMode:a,windowsLinkType:n,packageChecksum:u})=>{await oe.mkdirPromise(t,{recursive:!0});let A=async(E=Bt.dot)=>{let I=V.join(e,E),v=await r.readdirPromise(I,{withFileTypes:!0}),x=new Map;for(let C of v){let R=V.join(E,C.name),L,U=V.join(I,C.name);if(C.isFile()){if(L={kind:"file",mode:(await r.lstatPromise(U)).mode},a.value==="hardlinks-global"){let J=await wn.checksumFile(U,{baseFs:r,algorithm:"sha1"});L.digest=J}}else if(C.isDirectory())L={kind:"directory"};else if(C.isSymbolicLink())L={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(x.set(R,L),C.isDirectory()&&R!==Si){let J=await A(R);for(let[te,ae]of J)x.set(te,ae)}}return x},p;if(a.value==="hardlinks-global"&&o&&u){let E=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await oe.readFilePromise(E,"utf8"))))}catch{p=await A()}}else p=await A();let h=!1;for(let[E,I]of p){let v=V.join(e,E),x=V.join(t,E);if(I.kind==="directory")await oe.mkdirPromise(x,{recursive:!0});else if(I.kind==="file"){let C=I.mtimeMs;await h1t({srcPath:v,dstPath:x,entry:I,nmMode:a,baseFs:r,globalHardlinksStore:o}),I.mtimeMs!==C&&(h=!0)}else I.kind==="symlink"&&await gG(V.resolve(V.dirname(x),I.symlinkTo),x,n)}if(a.value==="hardlinks-global"&&o&&h&&u){let E=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);await oe.removePromise(E),await g1e(o,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function d1t(t,e,r,o){let a=new Map,n=new Map,u=new Map,A=!1,p=(h,E,I,v,x)=>{let C=!0,R=V.join(h,E),L=new Set;if(E===Si||E.startsWith("@")){let J;try{J=oe.statSync(R)}catch{}C=!!J,J?J.mtimeMs>r?(A=!0,L=new Set(oe.readdirSync(R))):L=new Set(I.children.get(E).children.keys()):A=!0;let te=e.get(h);if(te){let ae=V.join(h,Si,BQ),fe;try{fe=oe.statSync(ae)}catch{}if(!fe)A=!0;else if(fe.mtimeMs>r){A=!0;let ce=new Set(oe.readdirSync(ae)),me=new Map;n.set(h,me);for(let[he,Be]of te)ce.has(he)&&me.set(he,Be)}else n.set(h,te)}}else C=x.has(E);let U=I.children.get(E);if(C){let{linkType:J,locator:te}=U,ae={children:new Map,linkType:J,locator:te};if(v.children.set(E,ae),te){let fe=_e.getSetWithDefault(u,te);fe.add(R),u.set(te,fe)}for(let fe of U.children.keys())p(R,fe,U,ae,L)}else U.locator&&o.storedBuildState.delete(W.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:I,locator:v}=E,x={children:new Map,linkType:I,locator:v};if(a.set(h,x),v){let C=_e.getSetWithDefault(u,E.locator);C.add(h),u.set(E.locator,C)}E.children.has(Si)&&p(h,Si,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:u,installChangedByUser:A}}function m1e(t){let e=W.parseDescriptor(t);return W.isVirtualDescriptor(e)&&(e=W.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function m1t(t,e,r,{loadManifest:o}){let a=new Map;for(let[A,{locations:p}]of t){let h=m1e(A)?null:await o(A,p[0]),E=new Map;if(h)for(let[I,v]of h.bin){let x=V.join(p[0],v);v!==""&&oe.existsSync(x)&&E.set(I,v)}a.set(A,E)}let n=new Map,u=(A,p,h)=>{let E=new Map,I=V.contains(r,A);if(h.locator&&I!==null){let v=a.get(h.locator);for(let[x,C]of v){let R=V.join(A,ue.toPortablePath(C));E.set(x,R)}for(let[x,C]of h.children){let R=V.join(A,x),L=u(R,R,C);L.size>0&&n.set(A,new Map([...n.get(A)||new Map,...L]))}}else for(let[v,x]of h.children){let C=u(V.join(A,v),p,x);for(let[R,L]of C)E.set(R,L)}return E};for(let[A,p]of e){let h=u(A,A,p);h.size>0&&n.set(A,new Map([...n.get(A)||new Map,...h]))}return n}var c1e=(t,e)=>{if(!t||!e)return t===e;let r=W.parseLocator(t);W.isVirtualLocator(r)&&(r=W.devirtualizeLocator(r));let o=W.parseLocator(e);return W.isVirtualLocator(o)&&(o=W.devirtualizeLocator(o)),W.areLocatorsEqual(r,o)};function dG(t){return V.join(t.get("globalFolder"),"store")}async function y1t(t,e,{baseFs:r,project:o,report:a,loadManifest:n,realLocatorChecksums:u}){let A=V.join(o.cwd,Si),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:I}=d1t(t.locationTree,t.binSymlinks,t.mtimeMs,o),v=h1e(e,{skipPrefix:o.cwd}),x=[],C=async({srcDir:Be,dstDir:we,linkType:g,globalHardlinksStore:Ee,nmMode:Se,windowsLinkType:le,packageChecksum:ne})=>{let ee=(async()=>{try{g==="SOFT"?(await oe.mkdirPromise(V.dirname(we),{recursive:!0}),await gG(V.resolve(Be),we,le)):await g1t(we,Be,{baseFs:r,globalHardlinksStore:Ee,nmMode:Se,windowsLinkType:le,packageChecksum:ne})}catch(Ie){throw Ie.message=`While persisting ${Be} -> ${we} ${Ie.message}`,Ie}finally{ae.tick()}})().then(()=>x.splice(x.indexOf(ee),1));x.push(ee),x.length>l1e&&await Promise.race(x)},R=async(Be,we,g)=>{let Ee=(async()=>{let Se=async(le,ne,ee)=>{try{ee.innerLoop||await oe.mkdirPromise(ne,{recursive:!0});let Ie=await oe.readdirPromise(le,{withFileTypes:!0});for(let Fe of Ie){if(!ee.innerLoop&&Fe.name===BQ)continue;let At=V.join(le,Fe.name),H=V.join(ne,Fe.name);Fe.isDirectory()?(Fe.name!==Si||ee&&ee.innerLoop)&&(await oe.mkdirPromise(H,{recursive:!0}),await Se(At,H,{...ee,innerLoop:!0})):me.value==="hardlinks-local"||me.value==="hardlinks-global"?await oe.linkPromise(At,H):await oe.copyFilePromise(At,H,A1e.default.constants.COPYFILE_FICLONE)}}catch(Ie){throw ee.innerLoop||(Ie.message=`While cloning ${le} -> ${ne} ${Ie.message}`),Ie}finally{ee.innerLoop||ae.tick()}};await Se(Be,we,g)})().then(()=>x.splice(x.indexOf(Ee),1));x.push(Ee),x.length>l1e&&await Promise.race(x)},L=async(Be,we,g)=>{if(g)for(let[Ee,Se]of we.children){let le=g.children.get(Ee);await L(V.join(Be,Ee),Se,le)}else{we.children.has(Si)&&await WC(V.join(Be,Si),{contentsOnly:!1});let Ee=V.basename(Be)===Si&&v.has(V.join(V.dirname(Be),V.sep));await WC(Be,{contentsOnly:Be===A,allowSymlink:Ee})}};for(let[Be,we]of p){let g=v.get(Be);for(let[Ee,Se]of we.children){if(Ee===".")continue;let le=g&&g.children.get(Ee),ne=V.join(Be,Ee);await L(ne,Se,le)}}let U=async(Be,we,g)=>{if(g){c1e(we.locator,g.locator)||await WC(Be,{contentsOnly:we.linkType==="HARD"});for(let[Ee,Se]of we.children){let le=g.children.get(Ee);await U(V.join(Be,Ee),Se,le)}}else{we.children.has(Si)&&await WC(V.join(Be,Si),{contentsOnly:!0});let Ee=V.basename(Be)===Si&&v.has(V.join(V.dirname(Be),V.sep));await WC(Be,{contentsOnly:we.linkType==="HARD",allowSymlink:Ee})}};for(let[Be,we]of v){let g=p.get(Be);for(let[Ee,Se]of we.children){if(Ee===".")continue;let le=g&&g.children.get(Ee);await U(V.join(Be,Ee),Se,le)}}let J=new Map,te=[];for(let[Be,we]of E)for(let g of we){let{locationRoot:Ee,segments:Se}=vQ(g,{skipPrefix:o.cwd}),le=v.get(Ee),ne=Ee;if(le){for(let ee of Se)if(ne=V.join(ne,ee),le=le.children.get(ee),!le)break;if(le){let ee=c1e(le.locator,Be),Ie=e.get(le.locator),Fe=Ie.target,At=ne,H=Ie.linkType;if(ee)J.has(Fe)||J.set(Fe,At);else if(Fe!==At){let at=W.parseLocator(le.locator);W.isVirtualLocator(at)&&(at=W.devirtualizeLocator(at)),te.push({srcDir:Fe,dstDir:At,linkType:H,realLocatorHash:at.locatorHash})}}}}for(let[Be,{locations:we}]of e.entries())for(let g of we){let{locationRoot:Ee,segments:Se}=vQ(g,{skipPrefix:o.cwd}),le=p.get(Ee),ne=v.get(Ee),ee=Ee,Ie=e.get(Be),Fe=W.parseLocator(Be);W.isVirtualLocator(Fe)&&(Fe=W.devirtualizeLocator(Fe));let At=Fe.locatorHash,H=Ie.target,at=g;if(H===at)continue;let Re=Ie.linkType;for(let ke of Se)ne=ne.children.get(ke);if(!le)te.push({srcDir:H,dstDir:at,linkType:Re,realLocatorHash:At});else for(let ke of Se)if(ee=V.join(ee,ke),le=le.children.get(ke),!le){te.push({srcDir:H,dstDir:at,linkType:Re,realLocatorHash:At});break}}let ae=Xs.progressViaCounter(te.length),fe=a.reportProgress(ae),ce=o.configuration.get("nmMode"),me={value:ce},he=o.configuration.get("winLinkType");try{let Be=me.value==="hardlinks-global"?`${dG(o.configuration)}/v1`:null;if(Be&&!await oe.existsPromise(Be)){await oe.mkdirpPromise(Be);for(let g=0;g<256;g++)await oe.mkdirPromise(V.join(Be,g.toString(16).padStart(2,"0")))}for(let g of te)(g.linkType==="SOFT"||!J.has(g.srcDir))&&(J.set(g.srcDir,g.dstDir),await C({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:he,packageChecksum:u.get(g.realLocatorHash)||null}));await Promise.all(x),x.length=0;for(let g of te){let Ee=J.get(g.srcDir);g.linkType!=="SOFT"&&g.dstDir!==Ee&&await R(Ee,g.dstDir,{nmMode:me})}await Promise.all(x),await oe.mkdirPromise(A,{recursive:!0});let we=await m1t(e,v,o.cwd,{loadManifest:n});await E1t(h,we,o.cwd,he),await p1t(o,e,we,me,{installChangedByUser:I}),ce=="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{fe.stop()}}async function E1t(t,e,r,o){for(let a of t.keys()){if(V.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=V.join(a,Si,BQ);await oe.removePromise(n)}}for(let[a,n]of e){if(V.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let u=V.join(a,Si,BQ),A=t.get(a)||new Map;await oe.mkdirPromise(u,{recursive:!0});for(let p of A.keys())n.has(p)||(await oe.removePromise(V.join(u,p)),process.platform==="win32"&&await oe.removePromise(V.join(u,`${p}.cmd`)));for(let[p,h]of n){let E=A.get(p),I=V.join(u,p);E!==h&&(process.platform==="win32"?await(0,u1e.default)(ue.fromPortablePath(h),ue.fromPortablePath(I),{createPwshFile:!1}):(await oe.removePromise(I),await gG(h,I,o),V.contains(r,await oe.realpathPromise(h))!==null&&await oe.chmodPromise(h,493)))}}}Ye();St();nA();var cv=class extends P0{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new mG(r)}},mG=class extends mm{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let o=new mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),a=zIe(r,this.opts.project.cwd,o),{tree:n,errors:u}=zB(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:I,text:v}of u)this.opts.report.reportError(I,v);return}let A=new Map;r.fallbackPool=A;let p=(I,v)=>{let x=W.parseLocator(v.locator),C=W.stringifyIdent(x);C===I?A.set(I,x.reference):A.set(I,[C,x.reference])},h=V.join(this.opts.project.cwd,dr.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 I of E.dirList){let v=V.join(h,I),x=n.get(v);if(typeof x>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in x)p(I,x);else for(let C of x.dirList){let R=V.join(v,C),L=n.get(R);if(typeof L>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in L)p(`${I}/${C}`,L);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var C1t={hooks:{cleanGlobalArtifacts:async t=>{let e=dG(t);await oe.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:[lv,cv]},w1t=C1t;var dq={};Vt(dq,{NpmHttpFetcher:()=>fv,NpmRemapResolver:()=>pv,NpmSemverFetcher:()=>dl,NpmSemverResolver:()=>hv,NpmTagResolver:()=>gv,default:()=>Lvt,npmConfigUtils:()=>Zn,npmHttpUtils:()=>Zr,npmPublishUtils:()=>ow});Ye();var D1e=$e(zn());var Wn="npm:";var Zr={};Vt(Zr,{AuthType:()=>I1e,customPackageError:()=>ym,del:()=>R1t,get:()=>Em,getIdentUrl:()=>DQ,getPackageMetadata:()=>JC,handleInvalidAuthenticationError:()=>k0,post:()=>Q1t,put:()=>F1t});Ye();Ye();St();var wG=$e(f2()),C1e=$e(D_()),w1e=$e(zn());var Zn={};Vt(Zn,{RegistryType:()=>y1e,getAuditRegistry:()=>I1t,getAuthConfiguration:()=>CG,getDefaultRegistry:()=>uv,getPublishRegistry:()=>B1t,getRegistryConfiguration:()=>E1e,getScopeConfiguration:()=>EG,getScopeRegistry:()=>KC,normalizeRegistry:()=>oc});var y1e=(o=>(o.AUDIT_REGISTRY="npmAuditRegistry",o.FETCH_REGISTRY="npmRegistryServer",o.PUBLISH_REGISTRY="npmPublishRegistry",o))(y1e||{});function oc(t){return t.replace(/\/$/,"")}function I1t({configuration:t}){return uv({configuration:t,type:"npmAuditRegistry"})}function B1t(t,{configuration:e}){return t.publishConfig?.registry?oc(t.publishConfig.registry):t.name?KC(t.name.scope,{configuration:e,type:"npmPublishRegistry"}):uv({configuration:e,type:"npmPublishRegistry"})}function KC(t,{configuration:e,type:r="npmRegistryServer"}){let o=EG(t,{configuration:e});if(o===null)return uv({configuration:e,type:r});let a=o.get(r);return a===null?uv({configuration:e,type:r}):oc(a)}function uv({configuration:t,type:e="npmRegistryServer"}){let r=t.get(e);return oc(r!==null?r:t.get("npmRegistryServer"))}function E1e(t,{configuration:e}){let r=e.get("npmRegistries"),o=oc(t),a=r.get(o);if(typeof a<"u")return a;let n=r.get(o.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}function EG(t,{configuration:e}){if(t===null)return null;let o=e.get("npmScopes").get(t);return o||null}function CG(t,{configuration:e,ident:r}){let o=r&&EG(r.scope,{configuration:e});return o?.get("npmAuthIdent")||o?.get("npmAuthToken")?o:E1e(t,{configuration:e})||e}var I1e=(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))(I1e||{});async function k0(t,{attemptedAs:e,registry:r,headers:o,configuration:a}){if(PQ(t))throw new zt(41,"Invalid OTP token");if(t.originalError?.name==="HTTPError"&&t.originalError?.response.statusCode===401)throw new zt(41,`Invalid authentication (${typeof e!="string"?`as ${await N1t(r,o,{configuration:a})}`:`attempted as ${e}`})`)}function ym(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 ${de.applyHyperlink(e,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function DQ(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var B1e=new Map,v1t=new Map;async function D1t(t){return await _e.getFactoryWithDefault(B1e,t,async()=>{let e=null;try{e=await oe.readJsonPromise(t)}catch{}return e})}async function S1t(t,e,{configuration:r,cached:o,registry:a,headers:n,version:u,...A}){return await _e.getFactoryWithDefault(v1t,t,async()=>await Em(DQ(e),{...A,customErrorMessage:ym,configuration:r,registry:a,ident:e,headers:{...n,["If-None-Match"]:o?.etag,["If-Modified-Since"]:o?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(o===null)throw new Error("Assertion failed: cachedMetadata should not be null");return{...h,body:o.metadata}}let E=P1t(JSON.parse(h.body.toString())),I={metadata:E,etag:h.headers.etag,lastModified:h.headers["last-modified"]};return B1e.set(t,Promise.resolve(I)),Promise.resolve().then(async()=>{let v=`${t}-${process.pid}.tmp`;await oe.mkdirPromise(V.dirname(v),{recursive:!0}),await oe.writeJsonPromise(v,I,{compact:!0}),await oe.renamePromise(v,t)}).catch(()=>{}),{...h,body:E}}}))}async function JC(t,{cache:e,project:r,registry:o,headers:a,version:n,...u}){let{configuration:A}=r;o=Av(A,{ident:t,registry:o});let p=x1t(A,o),h=V.join(p,`${W.slugifyIdent(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await D1t(h),E)){if(typeof n<"u"&&typeof E.metadata.versions[n]<"u")return E.metadata;if(A.get("enableOfflineMode")){let I=structuredClone(E.metadata),v=new Set;if(e){for(let C of Object.keys(I.versions)){let R=W.makeLocator(t,`npm:${C}`),L=e.getLocatorMirrorPath(R);(!L||!oe.existsSync(L))&&(delete I.versions[C],v.add(C))}let x=I["dist-tags"].latest;if(v.has(x)){let C=Object.keys(E.metadata.versions).sort(w1e.default.compare),R=C.indexOf(x);for(;v.has(C[R])&&R>=0;)R-=1;R>=0?I["dist-tags"].latest=C[R]:delete I["dist-tags"].latest}}return I}}return await S1t(h,t,{...u,configuration:A,cached:E,registry:o,headers:a,version:n})}var v1e=["name","dist.tarball","bin","scripts","os","cpu","libc","dependencies","dependenciesMeta","optionalDependencies","peerDependencies","peerDependenciesMeta","deprecated"];function P1t(t){return{"dist-tags":t["dist-tags"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,(0,C1e.default)(r,v1e)]))}}var b1t=wn.makeHash(...v1e).slice(0,6);function x1t(t,e){let r=k1t(t),o=new URL(e);return V.join(r,b1t,o.hostname)}function k1t(t){return V.join(t.get("globalFolder"),"metadata/npm")}async function Em(t,{configuration:e,headers:r,ident:o,authType:a,registry:n,...u}){n=Av(e,{ident:o,registry:n}),o&&o.scope&&typeof a>"u"&&(a=1);let A=await SQ(n,{authType:a,configuration:e,ident:o});A&&(r={...r,authorization:A});try{return await nn.get(t.charAt(0)==="/"?`${n}${t}`:t,{configuration:e,headers:r,...u})}catch(p){throw await k0(p,{registry:n,configuration:e,headers:r}),p}}async function Q1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await SQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await nn.post(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!PQ(I)||p)throw await k0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await IG(I,{configuration:o});let v={...a,...VC(p)};try{return await nn.post(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(x){throw await k0(x,{attemptedAs:r,registry:A,configuration:o,headers:a}),x}}}async function F1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await SQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await nn.put(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!PQ(I))throw await k0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await IG(I,{configuration:o});let v={...a,...VC(p)};try{return await nn.put(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(x){throw await k0(x,{attemptedAs:r,registry:A,configuration:o,headers:a}),x}}}async function R1t(t,{attemptedAs:e,configuration:r,headers:o,ident:a,authType:n=3,registry:u,otp:A,...p}){u=Av(r,{ident:a,registry:u});let h=await SQ(u,{authType:n,configuration:r,ident:a});h&&(o={...o,authorization:h}),A&&(o={...o,...VC(A)});try{return await nn.del(u+t,{configuration:r,headers:o,...p})}catch(E){if(!PQ(E)||A)throw await k0(E,{attemptedAs:e,registry:u,configuration:r,headers:o}),E;A=await IG(E,{configuration:r});let I={...o,...VC(A)};try{return await nn.del(`${u}${t}`,{configuration:r,headers:I,...p})}catch(v){throw await k0(v,{attemptedAs:e,registry:u,configuration:r,headers:o}),v}}}function Av(t,{ident:e,registry:r}){if(typeof r>"u"&&e)return KC(e.scope,{configuration:t});if(typeof r!="string")throw new Error("Assertion failed: The registry should be a string");return oc(r)}async function SQ(t,{authType:e=2,configuration:r,ident:o}){let a=CG(t,{configuration:r,ident:o}),n=T1t(a,e);if(!n)return null;let u=await r.reduceHook(A=>A.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:o});if(u)return u;if(a.get("npmAuthToken"))return`Bearer ${a.get("npmAuthToken")}`;if(a.get("npmAuthIdent")){let A=a.get("npmAuthIdent");return A.includes(":")?`Basic ${Buffer.from(A).toString("base64")}`:`Basic ${A}`}if(n&&e!==1)throw new zt(33,"No authentication configured for request");return null}function T1t(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 N1t(t,e,{configuration:r}){if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(await nn.get(new URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function IG(t,{configuration:e}){let r=t.originalError?.response.headers["npm-notice"];if(r&&(await Nt.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,de.pretty(e,"$1",de.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\/\/\S+)/i);if(n&&Ji.openUrl){let{openNow:u}=await(0,wG.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});u&&(await Ji.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:o}=await(0,wG.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` +`),o}function PQ(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 VC(t){return{["npm-otp"]:t}}var fv=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o,params:a}=W.parseRange(e.reference);return!(!D1e.default.valid(o)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let{params:o}=W.parseRange(e.reference);if(o===null||typeof o.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await Em(o.__archiveUrl,{customErrorMessage:ym,configuration:r.project.configuration,ident:e});return await Xi.convertToZip(a,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();var pv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!W.tryParseDescriptor(e.range.slice(Wn.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){let o=r.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return r.resolver.getResolutionDependencies(o,r)}async getCandidates(e,r,o){let a=o.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return await o.resolver.getCandidates(a,r,o)}async getSatisfying(e,r,o,a){let n=a.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return a.resolver.getSatisfying(n,r,o,a)}resolve(e,r){throw new Error("Unreachable")}};Ye();Ye();var S1e=$e(zn());var dl=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let o=new URL(e.reference);return!(!S1e.default.valid(o.pathname)||o.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o;try{o=await Em(dl.getLocatorUrl(e),{customErrorMessage:ym,configuration:r.project.configuration,ident:e})}catch{o=await Em(dl.getLocatorUrl(e).replace(/%2f/g,"/"),{customErrorMessage:ym,configuration:r.project.configuration,ident:e})}return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:o}){let a=KC(e.scope,{configuration:o}),n=dl.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=kr.clean(e.reference.slice(Wn.length));if(r===null)throw new zt(10,"The npm semver resolver got selected, but the version isn't semver");return`${DQ(e)}/-/${e.name}-${r}.tgz`}};Ye();Ye();Ye();var BG=$e(zn());var bQ=W.makeIdent(null,"node-gyp"),L1t=/\b(node-gyp|prebuild-install)\b/,hv=class{supportsDescriptor(e,r){return e.range.startsWith(Wn)?!!kr.validRange(e.range.slice(Wn.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o}=W.parseRange(e.reference);return!!BG.default.valid(o)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=kr.validRange(e.range.slice(Wn.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);let n=await JC(e,{cache:o.fetchOptions?.cache,project:o.project,version:BG.default.valid(a.raw)?a.raw:void 0}),u=_e.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new kr.SemVer(h);if(a.test(E))return E}catch{}return _e.mapAndFilter.skip}),A=u.filter(h=>!n.versions[h.raw].deprecated),p=A.length>0?A:u;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=W.makeLocator(e,`${Wn}${h.raw}`),I=n.versions[h.raw].dist.tarball;return dl.isConventionalTarballUrl(E,I,{configuration:o.project.configuration})?E:W.bindLocator(E,{__archiveUrl:I})})}async getSatisfying(e,r,o,a){let n=kr.validRange(e.range.slice(Wn.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);return{locators:_e.mapAndFilter(o,p=>{if(p.identHash!==e.identHash)return _e.mapAndFilter.skip;let h=W.tryParseRange(p.reference,{requireProtocol:Wn});if(!h)return _e.mapAndFilter.skip;let E=new kr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:_e.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:o}=W.parseRange(e.reference),a=kr.clean(o);if(a===null)throw new zt(10,"The npm semver resolver got selected, but the version isn't semver");let n=await JC(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,"versions"))throw new zt(15,'Registry returned invalid data for - missing "versions" field');if(!Object.hasOwn(n.versions,a))throw new zt(16,`Registry failed to return reference "${a}"`);let u=new Ot;if(u.load(n.versions[a]),!u.dependencies.has(bQ.identHash)&&!u.peerDependencies.has(bQ.identHash)){for(let A of u.scripts.values())if(A.match(L1t)){u.dependencies.set(bQ.identHash,W.makeDescriptor(bQ,"latest"));break}}return{...e,version:a,languageName:"node",linkType:"HARD",conditions:u.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(u.dependencies),peerDependencies:u.peerDependencies,dependenciesMeta:u.dependenciesMeta,peerDependenciesMeta:u.peerDependenciesMeta,bin:u.bin}}};Ye();Ye();var P1e=$e(zn());var gv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!FE.test(e.range.slice(Wn.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(Wn.length),n=await JC(e,{cache:o.fetchOptions?.cache,project:o.project});if(!Object.hasOwn(n,"dist-tags"))throw new zt(15,'Registry returned invalid data - missing "dist-tags" field');let u=n["dist-tags"];if(!Object.hasOwn(u,a))throw new zt(16,`Registry failed to return tag "${a}"`);let A=u[a],p=W.makeLocator(e,`${Wn}${A}`),h=n.versions[A].dist.tarball;return dl.isConventionalTarballUrl(p,h,{configuration:o.project.configuration})?[p]:[W.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,o,a){let n=[];for(let u of o){if(u.identHash!==e.identHash)continue;let A=W.tryParseRange(u.reference,{requireProtocol:Wn});if(!(!A||!P1e.default.valid(A.selector))){if(A.params?.__archiveUrl){let p=W.makeRange({protocol:Wn,selector:A.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(W.makeDescriptor(e,p),r,a);if(u.reference!==h.reference)continue}n.push(u)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error("Unreachable")}};var ow={};Vt(ow,{getGitHead:()=>Tvt,getPublishAccess:()=>dBe,getReadmeContent:()=>mBe,makePublishBody:()=>Rvt});Ye();Ye();St();var Aq={};Vt(Aq,{PackCommand:()=>U0,default:()=>gvt,packUtils:()=>wA});Ye();Ye();Ye();St();jt();var wA={};Vt(wA,{genPackList:()=>XQ,genPackStream:()=>uq,genPackageManifest:()=>iBe,hasPackScripts:()=>lq,prepareForPack:()=>cq});Ye();St();var aq=$e(Zo()),rBe=$e(Z2e()),nBe=ve("zlib"),ivt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],svt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function lq(t){return!!(un.hasWorkspaceScript(t,"prepack")||un.hasWorkspaceScript(t,"postpack"))}async function cq(t,{report:e},r){await un.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let o=V.join(t.cwd,Ot.fileName);await oe.existsPromise(o)&&await t.manifest.loadFile(o,{baseFs:oe}),await r()}finally{await un.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function uq(t,e){typeof e>"u"&&(e=await XQ(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(V.normalize(n));for(let n of t.manifest.bin.values())r.add(V.normalize(n));let o=rBe.default.pack();process.nextTick(async()=>{for(let n of e){let u=V.normalize(n),A=V.resolve(t.cwd,u),p=V.join("package",u),h=await oe.lstatPromise(A),E={name:p,mtime:new Date(vi.SAFE_TIME*1e3)},I=r.has(u)?493:420,v,x,C=new Promise((L,U)=>{v=L,x=U}),R=L=>{L?x(L):v()};if(h.isFile()){let L;u==="package.json"?L=Buffer.from(JSON.stringify(await iBe(t),null,2)):L=await oe.readFilePromise(A),o.entry({...E,mode:I,type:"file"},L,R)}else h.isSymbolicLink()?o.entry({...E,mode:I,type:"symlink",linkname:await oe.readlinkPromise(A)},R):R(new Error(`Unsupported file type ${h.mode} for ${ue.fromPortablePath(u)}`));await C}o.finalize()});let a=(0,nBe.createGzip)();return o.pipe(a),a}async function iBe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function XQ(t){let e=t.project,r=e.configuration,o={accept:[],reject:[]};for(let I of svt)o.reject.push(I);for(let I of ivt)o.accept.push(I);o.reject.push(r.get("rcFilename"));let a=I=>{if(I===null||!I.startsWith(`${t.cwd}/`))return;let v=V.relative(t.cwd,I),x=V.resolve(Bt.root,v);o.reject.push(x)};a(V.resolve(e.cwd,dr.lockfile)),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(I=>I.populateYarnPaths,e,I=>{a(I)});for(let I of e.workspaces){let v=V.relative(t.cwd,I.cwd);v!==""&&!v.match(/^(\.\.)?\//)&&o.reject.push(`/${v}`)}let n={accept:[],reject:[]},u=t.manifest.publishConfig?.main??t.manifest.main,A=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;u!=null&&n.accept.push(V.resolve(Bt.root,u)),A!=null&&n.accept.push(V.resolve(Bt.root,A)),typeof p=="string"&&n.accept.push(V.resolve(Bt.root,p));for(let I of h.values())n.accept.push(V.resolve(Bt.root,I));if(p instanceof Map)for(let[I,v]of p.entries())n.accept.push(V.resolve(Bt.root,I)),typeof v=="string"&&n.accept.push(V.resolve(Bt.root,v));let E=t.manifest.files!==null;if(E){n.reject.push("/*");for(let I of t.manifest.files)sBe(n.accept,I,{cwd:Bt.root})}return await ovt(t.cwd,{hasExplicitFileList:E,globalList:o,ignoreList:n})}async function ovt(t,{hasExplicitFileList:e,globalList:r,ignoreList:o}){let a=[],n=new _u(t),u=[[Bt.root,[o]]];for(;u.length>0;){let[A,p]=u.pop(),h=await n.lstatPromise(A);if(!eBe(A,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(A),I=!1,v=!1;if(!e||A!==Bt.root)for(let R of E)I=I||R===".gitignore",v=v||R===".npmignore";let x=v?await $2e(n,A,".npmignore"):I?await $2e(n,A,".gitignore"):null,C=x!==null?[x].concat(p):p;eBe(A,{globalList:r,ignoreLists:p})&&(C=[...p,{accept:[],reject:["**/*"]}]);for(let R of E)u.push([V.resolve(A,R),C])}else(h.isFile()||h.isSymbolicLink())&&a.push(V.relative(Bt.root,A))}return a.sort()}async function $2e(t,e,r){let o={accept:[],reject:[]},a=await t.readFilePromise(V.join(e,r),"utf8");for(let n of a.split(/\n/g))sBe(o.reject,n,{cwd:e});return o}function avt(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=V.resolve(e,t)),r&&(t=`!${t}`),t}function sBe(t,e,{cwd:r}){let o=e.trim();o===""||o[0]==="#"||t.push(avt(o,{cwd:r}))}function eBe(t,{globalList:e,ignoreLists:r}){let o=zQ(t,e.accept);if(o!==0)return o===2;let a=zQ(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let u=zQ(t,n.accept);if(u!==0)return u===2;let A=zQ(t,n.reject);if(A!==0)return A===1}return!1}function zQ(t,e){let r=e,o=[];for(let a=0;a{await cq(a,{report:p},async()=>{p.reportJson({base:ue.fromPortablePath(a.cwd)});let h=await XQ(a);for(let E of h)p.reportInfo(null,ue.fromPortablePath(E)),p.reportJson({location:ue.fromPortablePath(E)});if(!this.dryRun){let E=await uq(a,h),I=oe.createWriteStream(u);E.pipe(I),await new Promise(v=>{I.on("finish",v)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${de.pretty(r,u,de.Type.PATH)}`),p.reportJson({output:ue.fromPortablePath(u)}))})).exitCode()}};U0.paths=[["pack"]],U0.usage=nt.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});function lvt(t,{workspace:e}){let r=t.replace("%s",cvt(e)).replace("%v",uvt(e));return ue.toPortablePath(r)}function cvt(t){return t.manifest.name!==null?W.slugifyIdent(t.manifest.name):"package"}function uvt(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var Avt=["dependencies","devDependencies","peerDependencies"],fvt="workspace:",pvt=(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 o of Avt)for(let a of t.manifest.getForScope(o).values()){let n=r.tryWorkspaceByDescriptor(a),u=W.parseRange(a.range);if(u.protocol===fvt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new zt(21,`${W.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let A;W.areDescriptorsEqual(a,n.anchoredDescriptor)||u.selector==="*"?A=n.manifest.version??"0.0.0":u.selector==="~"||u.selector==="^"?A=`${u.selector}${n.manifest.version??"0.0.0"}`:A=u.selector;let p=o==="dependencies"?W.makeDescriptor(a,"unknown"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":o;e[h][W.stringifyIdent(a)]=A}}},hvt={hooks:{beforeWorkspacePacking:pvt},commands:[U0]},gvt=hvt;var hBe=ve("crypto"),gBe=$e(pBe());async function Rvt(t,e,{access:r,tag:o,registry:a,gitHead:n}){let u=t.manifest.name,A=t.manifest.version,p=W.stringifyIdent(u),h=(0,hBe.createHash)("sha1").update(e).digest("hex"),E=gBe.default.fromData(e).toString(),I=r??dBe(t,u),v=await mBe(t),x=await wA.genPackageManifest(t),C=`${p}-${A}.tgz`,R=new URL(`${oc(a)}/${p}/-/${C}`);return{_id:p,_attachments:{[C]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:p,access:I,["dist-tags"]:{[o]:A},versions:{[A]:{...x,_id:`${p}@${A}`,name:p,version:A,gitHead:n,dist:{shasum:h,integrity:E,tarball:R.toString()}}},readme:v}}async function Tvt(t){try{let{stdout:e}=await Ur.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}function dBe(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 mBe(t){let e=ue.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${W.stringifyIdent(r)} +`;try{a=await oe.readFilePromise(e,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var gq={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}},yBe={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"}},Nvt={configuration:{...gq,...yBe,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...gq,...yBe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:oc,valueDefinition:{description:"",type:"SHAPE",properties:{...gq}}}},fetchers:[fv,dl],resolvers:[pv,hv,gv]},Lvt=Nvt;var Dq={};Vt(Dq,{NpmAuditCommand:()=>H0,NpmInfoCommand:()=>j0,NpmLoginCommand:()=>G0,NpmLogoutCommand:()=>q0,NpmPublishCommand:()=>Y0,NpmTagAddCommand:()=>K0,NpmTagListCommand:()=>W0,NpmTagRemoveCommand:()=>V0,NpmWhoamiCommand:()=>J0,default:()=>Gvt,npmAuditTypes:()=>Rv,npmAuditUtils:()=>ZQ});Ye();Ye();jt();var wq=$e(Zo());Za();var Rv={};Vt(Rv,{Environment:()=>Qv,Severity:()=>Fv});var Qv=(o=>(o.All="all",o.Production="production",o.Development="development",o))(Qv||{}),Fv=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(Fv||{});var ZQ={};Vt(ZQ,{allSeverities:()=>aw,getPackages:()=>Cq,getReportTree:()=>yq,getSeverityInclusions:()=>mq,getTopLevelDependencies:()=>Eq});Ye();var EBe=$e(zn());var aw=["info","low","moderate","high","critical"];function mq(t){if(typeof t>"u")return new Set(aw);let e=aw.indexOf(t),r=aw.slice(e);return new Set(r)}function yq(t){let e={},r={children:e};for(let[o,a]of _e.sortMap(Object.entries(t),n=>n[0]))for(let n of _e.sortMap(a,u=>`${u.id}`))e[`${o}/${n.id}`]={value:de.tuple(de.Type.IDENT,W.parseIdent(o)),children:{ID:typeof n.id<"u"&&{label:"ID",value:de.tuple(de.Type.ID,n.id)},Issue:{label:"Issue",value:de.tuple(de.Type.NO_HINT,n.title)},URL:typeof n.url<"u"&&{label:"URL",value:de.tuple(de.Type.URL,n.url)},Severity:{label:"Severity",value:de.tuple(de.Type.NO_HINT,n.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:de.tuple(de.Type.RANGE,n.vulnerable_versions)},["Tree Versions"]:{label:"Tree Versions",children:[...n.versions].sort(EBe.default.compare).map(u=>({value:de.tuple(de.Type.REFERENCE,u)}))},Dependents:{label:"Dependents",children:_e.sortMap(n.dependents,u=>W.stringifyLocator(u)).map(u=>({value:de.tuple(de.Type.LOCATOR,u)}))}}};return r}function Eq(t,e,{all:r,environment:o}){let a=[],n=r?t.workspaces:[e],u=["all","production"].includes(o),A=["all","development"].includes(o);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!A:!u)||a.push({workspace:p,dependency:h});return a}function Cq(t,e,{recursive:r}){let o=new Map,a=new Set,n=[],u=(A,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(W.ensureDevirtualizedLocator(E).reference.startsWith("npm:")&&E.version!==null){let v=W.stringifyIdent(E),x=_e.getMapWithDefault(o,v);_e.getArrayWithDefault(x,E.version).push(A)}if(r)for(let v of E.dependencies.values())n.push([E,v])};for(let{workspace:A,dependency:p}of e)n.push([A.anchoredLocator,p]);for(;n.length>0;){let[A,p]=n.shift();u(A,p)}return o}var H0=class extends ut{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:Ks(Qv)});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:Ks(Fv)});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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=Eq(o,a,{all:this.all,environment:this.environment}),u=Cq(o,n,{recursive:this.recursive}),A=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes])),p=Object.create(null);for(let[L,U]of u)A.some(J=>wq.default.isMatch(L,J))||(p[L]=[...U.keys()]);let h=Zn.getAuditRegistry({configuration:r}),E,I=await AA.start({configuration:r,stdout:this.context.stdout},async()=>{let L=Zr.post("/-/npm/v1/security/advisories/bulk",p,{authType:Zr.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ae])=>{let fe=await Zr.getPackageMetadata(W.parseIdent(te),{project:o});return _e.mapAndFilter(ae,ce=>{let{deprecated:me}=fe.versions[ce];return me?[te,ce,me]:_e.mapAndFilter.skip})})),J=await L;for(let[te,ae,fe]of U.flat(1))Object.hasOwn(J,te)&&J[te].some(ce=>kr.satisfiesWithPrereleases(ae,ce.vulnerable_versions))||(J[te]??=[],J[te].push({id:`${te} (deprecation)`,title:fe.trim()||"This package has been deprecated.",severity:"moderate",vulnerable_versions:ae}));E=J});if(I.hasErrors())return I.exitCode();let v=mq(this.severity),x=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores])),C=Object.create(null);for(let[L,U]of Object.entries(E)){let J=U.filter(te=>!wq.default.isMatch(`${te.id}`,x)&&v.has(te.severity));J.length>0&&(C[L]=J.map(te=>{let ae=u.get(L);if(typeof ae>"u")throw new Error("Assertion failed: Expected the registry to only return packages that were requested");let fe=[...ae.keys()].filter(me=>kr.satisfiesWithPrereleases(me,te.vulnerable_versions)),ce=new Map;for(let me of fe)for(let he of ae.get(me))ce.set(he.locatorHash,he);return{...te,versions:fe,dependents:[...ce.values()]}}))}let R=Object.keys(C).length>0;return R?($s.emitTree(yq(C),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Nt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async L=>{L.reportInfo(1,"No audit suggestions")}),R?1:0)}};H0.paths=[["npm","audit"]],H0.usage=nt.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 ${aw.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"]]});Ye();Ye();St();jt();var Iq=$e(zn()),Bq=ve("util"),j0=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],u=!1,A=await Nt.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 ae=o.topLevelWorkspace;if(!ae.manifest.name)throw new it(`Missing ${de.pretty(r,"name",de.Type.CODE)} field in ${ue.fromPortablePath(V.join(ae.cwd,dr.manifest))}`);E=W.makeDescriptor(ae.manifest.name,"unknown")}else E=W.parseDescriptor(h);let I=Zr.getIdentUrl(E),v=vq(await Zr.get(I,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:Zr.customPackageError})),x=Object.keys(v.versions).sort(Iq.default.compareLoose),R=v["dist-tags"].latest||x[x.length-1],L=kr.validRange(E.range);if(L){let ae=Iq.default.maxSatisfying(x,L);ae!==null?R=ae:(p.reportWarning(0,`Unmet range ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0)}else Object.hasOwn(v["dist-tags"],E.range)?R=v["dist-tags"][E.range]:E.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0);let U=v.versions[R],J={...v,...U,version:R,versions:x},te;if(a!==null){te={};for(let ae of a){let fe=J[ae];if(typeof fe<"u")te[ae]=fe;else{p.reportWarning(1,`The ${de.pretty(r,ae,de.Type.CODE)} field doesn't exist inside ${W.prettyIdent(r,E)}'s information`),u=!0;continue}}}else this.json||(delete J.dist,delete J.readme,delete J.users),te=J;p.reportJson(te),this.json||n.push(te)}});Bq.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||u)&&this.context.stdout.write(` +`),this.context.stdout.write(`${(0,Bq.inspect)(p,{depth:1/0,colors:!0,compact:!1})} +`);return A.exitCode()}};j0.paths=[["npm","info"]],j0.usage=nt.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"]]});function vq(t){if(Array.isArray(t)){let e=[];for(let r of t)r=vq(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 o=vq(t[r]);o&&(e[r]=o)}return e}else return t||null}Ye();Ye();jt();var CBe=$e(f2()),G0=class extends ut{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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Nt.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=await Uvt({configuration:r,registry:o,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),A=await Ovt(o,u,r);return await Mvt(o,A,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};G0.paths=[["npm","login"]],G0.usage=nt.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 function $Q({scope:t,publish:e,configuration:r,cwd:o}){return t&&e?Zn.getScopeRegistry(t,{configuration:r,type:Zn.RegistryType.PUBLISH_REGISTRY}):t?Zn.getScopeRegistry(t,{configuration:r}):e?Zn.getPublishRegistry((await fC(r,o)).manifest,{configuration:r}):Zn.getDefaultRegistry({configuration:r})}async function Ovt(t,e,r){let o=`/-/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:Zr.AuthType.NO_AUTH};try{return(await Zr.put(o,a,n)).token}catch(E){if(!(E.originalError?.name==="HTTPError"&&E.originalError?.response.statusCode===409))throw E}let u={...n,authType:Zr.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${e.name}:${e.password}`).toString("base64")}`}},A=await Zr.get(o,u);for(let[E,I]of Object.entries(A))(!a[E]||E==="roles")&&(a[E]=I);let p=`${o}/-rev/${a._rev}`;return(await Zr.put(p,a,u)).token}async function Mvt(t,e,{alwaysAuth:r,scope:o}){let a=u=>A=>{let p=_e.isIndexableObject(A)?A:{},h=p[u],E=_e.isIndexableObject(h)?h:{};return{...p,[u]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=o?{npmScopes:a(o)}:{npmRegistries:a(t)};return await Ke.updateHomeConfiguration(n)}async function Uvt({configuration:t,registry:e,report:r,stdin:o,stdout:a}){r.reportInfo(0,`Logging in to ${de.pretty(t,e,de.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 u=await(0,CBe.prompt)([{type:"input",name:"name",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a}]);return r.reportSeparator(),u}Ye();Ye();jt();var lw=new Set(["npmAuthIdent","npmAuthToken"]),q0=class extends ut{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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=async()=>{let n=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),u=await Ke.find(this.context.cwd,this.context.plugins),A=W.makeIdent(this.scope??null,"pkg");return!Zn.getAuthConfiguration(n,{configuration:u,ident:A}).get("npmAuthToken")};return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Hvt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await wBe("npmScopes",this.scope),await o()?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 u=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish});await wBe("npmRegistries",u),await o()?n.reportInfo(0,`Successfully logged out from ${u}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};q0.paths=[["npm","logout"]],q0.usage=nt.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"]]});function _vt(t,e){let r=t[e];if(!_e.isIndexableObject(r))return!1;let o=new Set(Object.keys(r));if([...lw].every(n=>!o.has(n)))return!1;for(let n of lw)o.delete(n);if(o.size===0)return t[e]=void 0,!0;let a={...r};for(let n of lw)delete a[n];return t[e]=a,!0}async function Hvt(){let t=e=>{let r=!1,o=_e.isIndexableObject(e)?{...e}:{};o.npmAuthToken&&(delete o.npmAuthToken,r=!0);for(let a of Object.keys(o))_vt(o,a)&&(r=!0);if(Object.keys(o).length!==0)return r?o:e};return await Ke.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function wBe(t,e){return await Ke.updateHomeConfiguration({[t]:r=>{let o=_e.isIndexableObject(r)?r:{};if(!Object.hasOwn(o,e))return r;let a=o[e],n=_e.isIndexableObject(a)?a:{},u=new Set(Object.keys(n));if([...lw].every(p=>!u.has(p)))return r;for(let p of lw)u.delete(p);if(u.size===0)return Object.keys(o).length===1?void 0:{...o,[e]:void 0};let A={};for(let p of lw)A[p]=void 0;return{...o,[e]:{...n,...A}}}})}Ye();jt();var Y0=class extends ut{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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);if(a.manifest.private)throw new it("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new it("Workspaces must have valid names and versions to be published on an external registry");await o.restoreInstallState();let n=a.manifest.name,u=a.manifest.version,A=Zn.getPublishRegistry(a.manifest,{configuration:r});return(await Nt.start({configuration:r,stdout:this.context.stdout},async h=>{if(this.tolerateRepublish)try{let E=await Zr.get(Zr.getIdentUrl(n),{configuration:r,registry:A,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,"versions"))throw new zt(15,'Registry returned invalid data for - missing "versions" field');if(Object.hasOwn(E.versions,u)){h.reportWarning(0,`Registry already knows about version ${u}; skipping.`);return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await un.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await wA.prepareForPack(a,{report:h},async()=>{let E=await wA.genPackList(a);for(let R of E)h.reportInfo(null,R);let I=await wA.genPackStream(a,E),v=await _e.bufferStream(I),x=await ow.getGitHead(a.cwd),C=await ow.makePublishBody(a,v,{access:this.access,tag:this.tag,registry:A,gitHead:x});await Zr.put(Zr.getIdentUrl(n),C,{configuration:r,registry:A,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,"Package archive published")})).exitCode()}};Y0.paths=[["npm","publish"]],Y0.usage=nt.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 overriden 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"]]});Ye();jt();var IBe=$e(zn());Ye();St();jt();var W0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=ge.String({required:!1})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=W.parseIdent(this.package);else{if(!a)throw new rr(o.cwd,this.context.cwd);if(!a.manifest.name)throw new it(`Missing 'name' field in ${ue.fromPortablePath(V.join(a.cwd,dr.manifest))}`);n=a.manifest.name}let u=await Tv(n,r),p={children:_e.sortMap(Object.entries(u),([h])=>h).map(([h,E])=>({value:de.tuple(de.Type.RESOLUTION,{descriptor:W.makeDescriptor(n,h),locator:W.makeLocator(n,E)})}))};return $s.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};W0.paths=[["npm","tag","list"]],W0.usage=nt.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 function Tv(t,e){let r=`/-/package${Zr.getIdentUrl(t)}/dist-tags`;return Zr.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Zr.customPackageError})}var K0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseDescriptor(this.package,!0),u=n.range;if(!IBe.default.valid(u))throw new it(`The range ${de.pretty(r,n.range,de.Type.RANGE)} must be a valid semver version`);let A=Zn.getPublishRegistry(a.manifest,{configuration:r}),p=de.pretty(r,n,de.Type.IDENT),h=de.pretty(r,u,de.Type.RANGE),E=de.pretty(r,this.tag,de.Type.CODE);return(await Nt.start({configuration:r,stdout:this.context.stdout},async v=>{let x=await Tv(n,r);Object.hasOwn(x,this.tag)&&x[this.tag]===u&&v.reportWarning(0,`Tag ${E} is already set to version ${h}`);let C=`/-/package${Zr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Zr.put(C,u,{configuration:r,registry:A,ident:n,jsonRequest:!0,jsonResponse:!0}),v.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};K0.paths=[["npm","tag","add"]],K0.usage=nt.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"]]});Ye();jt();var V0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){if(this.tag==="latest")throw new it("The 'latest' tag cannot be removed.");let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseIdent(this.package),u=Zn.getPublishRegistry(a.manifest,{configuration:r}),A=de.pretty(r,this.tag,de.Type.CODE),p=de.pretty(r,n,de.Type.IDENT),h=await Tv(n,r);if(!Object.hasOwn(h,this.tag))throw new it(`${A} is not a tag of package ${p}`);return(await Nt.start({configuration:r,stdout:this.context.stdout},async I=>{let v=`/-/package${Zr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Zr.del(v,{configuration:r,registry:u,ident:n,jsonResponse:!0}),I.reportInfo(0,`Tag ${A} removed from package ${p}`)})).exitCode()}};V0.paths=[["npm","tag","remove"]],V0.usage=nt.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"]]});Ye();Ye();jt();var J0=class extends ut{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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o;return this.scope&&this.publish?o=Zn.getScopeRegistry(this.scope,{configuration:r,type:Zn.RegistryType.PUBLISH_REGISTRY}):this.scope?o=Zn.getScopeRegistry(this.scope,{configuration:r}):this.publish?o=Zn.getPublishRegistry((await fC(r,this.context.cwd)).manifest,{configuration:r}):o=Zn.getDefaultRegistry({configuration:r}),(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let u;try{u=await Zr.get("/-/whoami",{configuration:r,registry:o,authType:Zr.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?W.makeIdent(this.scope,""):void 0})}catch(A){if(A.response?.statusCode===401||A.response?.statusCode===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw A}n.reportInfo(0,u.username)})).exitCode()}};J0.paths=[["npm","whoami"]],J0.usage=nt.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"]]});var jvt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},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:[H0,j0,G0,q0,Y0,K0,W0,V0,J0]},Gvt=jvt;var Fq={};Vt(Fq,{PatchCommand:()=>Z0,PatchCommitCommand:()=>X0,PatchFetcher:()=>Uv,PatchResolver:()=>_v,default:()=>aDt,patchUtils:()=>Sm});Ye();Ye();St();nA();var Sm={};Vt(Sm,{applyPatchFile:()=>tF,diffFolders:()=>kq,ensureUnpatchedDescriptor:()=>Sq,ensureUnpatchedLocator:()=>nF,extractPackageToDisk:()=>xq,extractPatchFlags:()=>xBe,isParentRequired:()=>bq,isPatchDescriptor:()=>rF,isPatchLocator:()=>z0,loadPatchFiles:()=>Mv,makeDescriptor:()=>iF,makeLocator:()=>Pq,makePatchHash:()=>Qq,parseDescriptor:()=>Lv,parseLocator:()=>Ov,parsePatchFile:()=>Nv,unpatchDescriptor:()=>iDt,unpatchLocator:()=>sDt});Ye();St();Ye();St();var qvt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function cw(t){return V.relative(Bt.root,V.resolve(Bt.root,ue.toPortablePath(t)))}function Yvt(t){let e=t.trim().match(qvt);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 Wvt=420,Kvt=493;var BBe=()=>({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}),Vvt=t=>({header:Yvt(t),parts:[]}),Jvt={["@"]:"header",["-"]:"deletion",["+"]:"insertion",[" "]:"context",["\\"]:"pragma",undefined:"context"};function zvt(t){let e=[],r=BBe(),o="parsing header",a=null,n=null;function u(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function A(){u(),e.push(r),r=BBe()}for(let p=0;p0?"patch":"mode change",J=null;switch(U){case"rename":{if(!E||!I)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:o,fromPath:cw(E),toPath:cw(I)}),J=I}break;case"file deletion":{let te=a||C;if(!te)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:o,hunk:L&&L[0]||null,path:cw(te),mode:eF(p),hash:v})}break;case"file creation":{let te=n||R;if(!te)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:o,hunk:L&&L[0]||null,path:cw(te),mode:eF(h),hash:x})}break;case"patch":case"mode change":J=R||n;break;default:_e.assertNever(U);break}J&&u&&A&&u!==A&&e.push({type:"mode change",semverExclusivity:o,path:cw(J),oldMode:eF(u),newMode:eF(A)}),J&&L&&L.length&&e.push({type:"patch",semverExclusivity:o,path:cw(J),hunks:L,beforeHash:v,afterHash:x})}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 eF(t){let e=parseInt(t,8)&511;if(e!==Wvt&&e!==Kvt)throw new Error(`Unexpected file mode string: ${t}`);return e}function Nv(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),Xvt(zvt(e))}function Zvt(t){let e=0,r=0;for(let{type:o,lines:a}of t.parts)switch(o){case"context":r+=a.length,e+=a.length;break;case"deletion":e+=a.length;break;case"insertion":r+=a.length;break;default:_e.assertNever(o);break}if(e!==t.header.original.length||r!==t.header.patched.length){let o=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${o(t.header.original.length)} ${o(t.header.patched.length)} @@, got @@ ${o(e)} ${o(r)} @@)`)}}Ye();St();var uw=class extends Error{constructor(r,o){super(`Cannot apply hunk #${r+1}`);this.hunk=o}};async function Aw(t,e,r){let o=await t.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await t.lutimesPromise(e,o.atime,o.mtime)}async function tF(t,{baseFs:e=new Tn,dryRun:r=!1,version:o=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&o!==null&&!kr.satisfiesWithPrereleases(o,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 Aw(e,V.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 Aw(e,V.dirname(a.fromPath),async()=>{await Aw(e,V.dirname(a.toPath),async()=>{await Aw(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(V.dirname(a.path),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,vi.SAFE_TIME,vi.SAFE_TIME)}break;case"patch":await Aw(e,a.path,async()=>{await tDt(a,{baseFs:e,dryRun:r})});break;case"mode change":{let u=(await e.statPromise(a.path)).mode;if(vBe(a.newMode)!==vBe(u))continue;await Aw(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:_e.assertNever(a);break}}function vBe(t){return(t&64)>0}function DBe(t){return t.replace(/\s+$/,"")}function eDt(t,e){return DBe(t)===DBe(e)}async function tDt({hunks:t,path:e},{baseFs:r,dryRun:o=!1}){let a=await r.statSync(e).mode,u=(await r.readFileSync(e,"utf8")).split(/\n/),A=[],p=0,h=0;for(let I of t){let v=Math.max(h,I.header.patched.start+p),x=Math.max(0,v-h),C=Math.max(0,u.length-v-I.header.original.length),R=Math.max(x,C),L=0,U=0,J=null;for(;L<=R;){if(L<=x&&(U=v-L,J=SBe(I,u,U),J!==null)){L=-L;break}if(L<=C&&(U=v+L,J=SBe(I,u,U),J!==null))break;L+=1}if(J===null)throw new uw(t.indexOf(I),I);A.push(J),p+=L,h=U+I.header.original.length}if(o)return;let E=0;for(let I of A)for(let v of I)switch(v.type){case"splice":{let x=v.index+E;u.splice(x,v.numToDelete,...v.linesToInsert),E+=v.linesToInsert.length-v.numToDelete}break;case"pop":u.pop();break;case"push":u.push(v.line);break;default:_e.assertNever(v);break}await r.writeFilePromise(e,u.join(` +`),{mode:a})}function SBe(t,e,r){let o=[];for(let a of t.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let u=e[r];if(u==null||!eDt(u,n))return null;r+=1}a.type==="deletion"&&(o.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&o.push({type:"push",line:""}))}break;case"insertion":o.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&o.push({type:"pop"});break;default:_e.assertNever(a.type);break}return o}var nDt=/^builtin<([^>]+)>$/;function fw(t,e){let{protocol:r,source:o,selector:a,params:n}=W.parseRange(t);if(r!=="patch:")throw new Error("Invalid patch range");if(o===null)throw new Error("Patch locators must explicitly define their source");let u=a?a.split(/&/).map(E=>ue.toPortablePath(E)):[],A=n&&typeof n.locator=="string"?W.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=e(o);return{parentLocator:A,sourceItem:h,patchPaths:u,sourceVersion:p}}function rF(t){return t.range.startsWith("patch:")}function z0(t){return t.reference.startsWith("patch:")}function Lv(t){let{sourceItem:e,...r}=fw(t.range,W.parseDescriptor);return{...r,sourceDescriptor:e}}function Ov(t){let{sourceItem:e,...r}=fw(t.reference,W.parseLocator);return{...r,sourceLocator:e}}function iDt(t){let{sourceItem:e}=fw(t.range,W.parseDescriptor);return e}function sDt(t){let{sourceItem:e}=fw(t.reference,W.parseLocator);return e}function Sq(t){if(!rF(t))return t;let{sourceItem:e}=fw(t.range,W.parseDescriptor);return e}function nF(t){if(!z0(t))return t;let{sourceItem:e}=fw(t.reference,W.parseLocator);return e}function PBe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:o,patchHash:a},n){let u=t!==null?{locator:W.stringifyLocator(t)}:{},A=typeof o<"u"?{version:o}:{},p=typeof a<"u"?{hash:a}:{};return W.makeRange({protocol:"patch:",source:n(e),selector:r.join("&"),params:{...A,...p,...u}})}function iF(t,{parentLocator:e,sourceDescriptor:r,patchPaths:o}){return W.makeDescriptor(t,PBe({parentLocator:e,sourceItem:r,patchPaths:o},W.stringifyDescriptor))}function Pq(t,{parentLocator:e,sourcePackage:r,patchPaths:o,patchHash:a}){return W.makeLocator(t,PBe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:o,patchHash:a},W.stringifyLocator))}function bBe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:o},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let u=a.match(nDt);return u!==null?o(u[1]):a.startsWith("~/")?r(a.slice(2)):V.isAbsolute(a)?t(a):e(a)}function xBe(t){let e=t.lastIndexOf("!");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has("optional")}}function bq(t){return bBe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function Mv(t,e,r){let o=t!==null?await r.fetcher.fetch(t,r):null,a=o&&o.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,o.localPath)}:o;o&&o!==a&&o.releaseFs&&o.releaseFs();let n=await _e.releaseAfterUseAsync(async()=>await Promise.all(e.map(async u=>{let A=xBe(u),p=await bBe({onAbsolute:async h=>await oe.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(V.join(a.prefixPath,h),"utf8")},onProject:async h=>await oe.readFilePromise(V.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},u);return{...A,source:p}})));for(let u of n)typeof u.source=="string"&&(u.source=u.source.replace(/\r\n?/g,` +`));return n}async function xq(t,{cache:e,project:r}){let o=r.storedPackages.get(t.locatorHash);if(typeof o>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=nF(t),n=r.storedChecksums,u=new Qi,A=await oe.mktempPromise(),p=V.join(A,"source"),h=V.join(A,"user"),E=V.join(A,".yarn-patch.json"),I=r.configuration.makeFetcher(),v=[];try{let x,C;if(t.locatorHash===a.locatorHash){let R=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u});v.push(()=>R.releaseFs?.()),x=R,C=R}else x=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>x.releaseFs?.()),C=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>C.releaseFs?.());await Promise.all([oe.copyPromise(p,x.prefixPath,{baseFs:x.packageFs}),oe.copyPromise(h,C.prefixPath,{baseFs:C.packageFs}),oe.writeJsonPromise(E,{locator:W.stringifyLocator(t),version:o.version})])}finally{for(let x of v)x()}return oe.detachTemp(A),h}async function kq(t,e){let r=ue.fromPortablePath(t).replace(/\\/g,"/"),o=ue.fromPortablePath(e).replace(/\\/g,"/"),{stdout:a,stderr:n}=await Ur.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,o],{cwd:ue.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 u=r.startsWith("/")?A=>A.slice(1):A=>A;return a.replace(new RegExp(`(a|b)(${_e.escapeRegExp(`/${u(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${_e.escapeRegExp(`/${u(o)}/`)}`,"g"),"$1/").replace(new RegExp(_e.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(_e.escapeRegExp(`${o}/`),"g"),"")}function Qq(t,e){let r=[];for(let{source:o}of t){if(o===null)continue;let a=Nv(o);for(let n of a){let{semverExclusivity:u,...A}=n;u!==null&&e!==null&&!kr.satisfiesWithPrereleases(e,u)||r.push(JSON.stringify(A))}}return wn.makeHash(`${3}`,...r).slice(0,6)}Ye();function kBe(t,{configuration:e,report:r}){for(let o of t.parts)for(let a of o.lines)switch(o.type){case"context":r.reportInfo(null,` ${de.pretty(e,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${de.pretty(e,a,de.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${de.pretty(e,a,de.Type.ADDED)}`);break;default:_e.assertNever(o.type)}}var Uv=class{supports(e,r){return!!z0(e)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.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:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async patchPackage(e,r){let{parentLocator:o,sourceLocator:a,sourceVersion:n,patchPaths:u}=Ov(e),A=await Mv(o,u,r),p=await oe.mktempPromise(),h=V.join(p,"current.zip"),E=await r.fetcher.fetch(a,r),I=W.getIdentVendorPath(e),v=new zi(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await _e.releaseAfterUseAsync(async()=>{await v.copyPromise(I,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),v.saveAndClose();for(let{source:x,optional:C}of A){if(x===null)continue;let R=new zi(h,{level:r.project.configuration.get("compressionLevel")}),L=new gn(V.resolve(Bt.root,I),{baseFs:R});try{await tF(Nv(x),{baseFs:L,version:n})}catch(U){if(!(U instanceof uw))throw U;let J=r.project.configuration.get("enableInlineHunks"),te=!J&&!C?" (set enableInlineHunks for details)":"",ae=`${W.prettyLocator(r.project.configuration,e)}: ${U.message}${te}`,fe=ce=>{!J||kBe(U.hunk,{configuration:r.project.configuration,report:ce})};if(R.discardAndClose(),C){r.report.reportWarningOnce(66,ae,{reportExtra:fe});continue}else throw new zt(66,ae,fe)}R.saveAndClose()}return new zi(h,{level:r.project.configuration.get("compressionLevel")})}};Ye();var _v=class{supportsDescriptor(e,r){return!!rF(e)}supportsLocator(e,r){return!!z0(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){let{patchPaths:a}=Lv(e);return a.every(n=>!bq(n))?e:W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:o}=Lv(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(o)}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=Lv(e),u=await Mv(a,n,o.fetchOptions),A=r.sourceDescriptor;if(typeof A>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=Qq(u,A.version);return[Pq(e,{parentLocator:a,sourcePackage:A,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:o}=Ov(e);return{...await r.resolver.resolve(o,r),...e}}};Ye();St();jt();var X0=class extends ut{constructor(){super(...arguments);this.save=ge.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=V.resolve(this.context.cwd,ue.toPortablePath(this.patchFolder)),u=V.join(n,"../source"),A=V.join(n,"../.yarn-patch.json");if(!oe.existsSync(u))throw new it("The argument folder didn't get created by 'yarn patch'");let p=await kq(u,n),h=await oe.readJsonPromise(A),E=W.parseLocator(h.locator,!0);if(!o.storedPackages.has(E.locatorHash))throw new it("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let I=r.get("patchFolder"),v=V.join(I,`${W.slugifyLocator(E)}.patch`);await oe.mkdirPromise(I,{recursive:!0}),await oe.writeFilePromise(v,p);let x=[],C=new Map;for(let R of o.storedPackages.values()){if(W.isVirtualLocator(R))continue;let L=R.dependencies.get(E.identHash);if(!L)continue;let U=W.ensureDevirtualizedDescriptor(L),J=Sq(U),te=o.storedResolutions.get(J.descriptorHash);if(!te)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!o.storedPackages.get(te))throw new Error("Assertion failed: Expected the package to have been registered");let fe=o.tryWorkspaceByLocator(R);if(fe)x.push(fe);else{let ce=o.originalPackages.get(R.locatorHash);if(!ce)throw new Error("Assertion failed: Expected the original package to have been registered");let me=ce.dependencies.get(L.identHash);if(!me)throw new Error("Assertion failed: Expected the original dependency to have been registered");C.set(me.descriptorHash,me)}}for(let R of x)for(let L of Ot.hardDependencies){let U=R.manifest[L].get(E.identHash);if(!U)continue;let J=iF(U,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[V.join(dr.home,V.relative(o.cwd,v))]});R.manifest[L].set(U.identHash,J)}for(let R of C.values()){let L=iF(R,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[V.join(dr.home,V.relative(o.cwd,v))]});o.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:W.stringifyIdent(L),description:R.range}},reference:L.range})}await o.persist()}};X0.paths=[["patch-commit"]],X0.usage=nt.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 "});Ye();St();jt();var Z0=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=W.parseLocator(this.package);if(u.reference==="unknown"){let A=_e.mapAndFilter([...o.storedPackages.values()],p=>p.identHash!==u.identHash?_e.mapAndFilter.skip:W.isVirtualLocator(p)?_e.mapAndFilter.skip:z0(p)!==this.update?_e.mapAndFilter.skip:p);if(A.length===0)throw new it("No package found in the project for the given locator");if(A.length>1)throw new it(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): +${A.map(p=>` +- ${W.prettyLocator(r,p)}`).join("")}`);u=A[0]}if(!o.storedPackages.has(u.locatorHash))throw new it("No package found in the project for the given locator");await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=nF(u),h=await xq(u,{cache:n,project:o});A.reportJson({locator:W.stringifyLocator(p),path:ue.fromPortablePath(h)});let E=this.update?" along with its current modifications":"";A.reportInfo(0,`Package ${W.prettyLocator(r,p)} got extracted with success${E}!`),A.reportInfo(0,`You can now edit the following folder: ${de.pretty(r,ue.fromPortablePath(h),"magenta")}`),A.reportInfo(0,`Once you are done run ${de.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${ue.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Z0.paths=[["patch"]],Z0.usage=nt.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 "});var oDt={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:[X0,Z0],fetchers:[Uv],resolvers:[_v]},aDt=oDt;var Nq={};Vt(Nq,{PnpmLinker:()=>Hv,default:()=>fDt});Ye();St();jt();var Hv=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 o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.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 it(`Couldn't find ${W.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 o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.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 u=e,A=e;do{A=u,u=V.dirname(A);let p=a.locatorByPath.get(A);if(p)return p}while(u!==A);return null}makeInstaller(e){return new Rq(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},Rq=class{constructor(e){this.opts=e;this.asyncActions=new _e.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=SD(oe,{indexPath:V.join(e.project.configuration.get("globalFolder"),"index")})}attachCustomData(e){}async installPackage(e,r,o){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,r,o);case"HARD":return this.installPackageHard(e,r,o)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,o){let a=V.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?V.join(a,dr.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,o){let a=lDt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,W.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await oe.mkdirPromise(n,{recursive:!0}),await oe.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let A=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e,p={manifest:await Ot.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ot,misc:{hasBindingGyp:yA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(A,e.version),E=yA.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"||!QBe(e,{project:this.opts.project}))return;let o=this.customData.pathsByLocator.get(e.locatorHash);if(typeof o>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(e)})`);let{dependenciesLocation:a}=o;!a||this.asyncActions.reduce(e.locatorHash,async n=>{await oe.mkdirPromise(a,{recursive:!0});let u=await cDt(a),A=new Map(u),p=[n],h=(I,v)=>{let x=v;QBe(v,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),x=W.devirtualizeLocator(v));let C=this.customData.pathsByLocator.get(x.locatorHash);if(typeof C>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(v)})`);let R=W.stringifyIdent(I),L=V.join(a,R),U=V.relative(V.dirname(L),C.packageLocation),J=A.get(R);A.delete(R),p.push(Promise.resolve().then(async()=>{if(J){if(J.isSymbolicLink()&&await oe.readlinkPromise(L)===U)return;await oe.removePromise(L)}await oe.mkdirpPromise(V.dirname(L)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await oe.symlinkPromise(C.packageLocation,L,"junction"):await oe.symlinkPromise(U,L)}))},E=!1;for(let[I,v]of r)I.identHash===e.identHash&&(E=!0),h(I,v);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(W.convertLocatorToDescriptor(e),e),p.push(uDt(a,A)),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=RBe(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await oe.removePromise(e);else{let r;try{r=new Set(await oe.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:o}of this.customData.pathsByLocator.values()){if(!o)continue;let a=V.contains(e,o);if(a===null)continue;let[n]=a.split(V.sep);r.delete(n)}await Promise.all([...r].map(async o=>{await oe.removePromise(V.join(e,o))}))}return await this.asyncActions.wait(),await Tq(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await Tq(FBe(this.opts.project)),{customData:this.customData}}};function FBe(t){return V.join(t.cwd,dr.nodeModules)}function RBe(t){return V.join(FBe(t),".store")}function lDt(t,{project:e}){let r=W.slugifyLocator(t),o=RBe(e),a=V.join(o,r,"package"),n=V.join(o,r,dr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function QBe(t,{project:e}){return!W.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function cDt(t){let e=new Map,r=[];try{r=await oe.readdirPromise(t,{withFileTypes:!0})}catch(o){if(o.code!=="ENOENT")throw o}try{for(let o of r)if(!o.name.startsWith("."))if(o.name.startsWith("@")){let a=await oe.readdirPromise(V.join(t,o.name),{withFileTypes:!0});if(a.length===0)e.set(o.name,o);else for(let n of a)e.set(`${o.name}/${n.name}`,n)}else e.set(o.name,o)}catch(o){if(o.code!=="ENOENT")throw o}return e}async function uDt(t,e){let r=[],o=new Set;for(let a of e.keys()){r.push(oe.removePromise(V.join(t,a)));let n=W.tryParseIdent(a)?.scope;n&&o.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...o].map(a=>Tq(V.join(t,a)))))}async function Tq(t){try{await oe.rmdirPromise(t)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY")throw e}}var ADt={linkers:[Hv]},fDt=ADt;var jq={};Vt(jq,{StageCommand:()=>$0,default:()=>BDt,stageUtils:()=>oF});Ye();St();jt();Ye();St();var oF={};Vt(oF,{ActionType:()=>Lq,checkConsensus:()=>sF,expandDirectory:()=>Uq,findConsensus:()=>_q,findVcsRoot:()=>Oq,genCommitMessage:()=>Hq,getCommitPrefix:()=>TBe,isYarnFile:()=>Mq});St();var Lq=(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))(Lq||{});async function Oq(t,{marker:e}){do if(!oe.existsSync(V.join(t,e)))t=V.dirname(t);else return t;while(t!=="/");return null}function Mq(t,{roots:e,names:r}){if(r.has(V.basename(t)))return!0;do if(!e.has(t))t=V.dirname(t);else return!0;while(t!=="/");return!1}function Uq(t){let e=[],r=[t];for(;r.length>0;){let o=r.pop(),a=oe.readdirSync(o);for(let n of a){let u=V.resolve(o,n);oe.lstatSync(u).isDirectory()?r.push(u):e.push(u)}}return e}function sF(t,e){let r=0,o=0;for(let a of t)a!=="wip"&&(e.test(a)?r+=1:o+=1);return r>=o}function _q(t){let e=sF(t,/^(\w\(\w+\):\s*)?\w+s/),r=sF(t,/^(\w\(\w+\):\s*)?[A-Z]/),o=sF(t,/^\w\(\w+\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:o}}function TBe(t){return t.useComponent?"chore(yarn): ":""}var pDt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function Hq(t,e){let r=TBe(t),o=[],a=e.slice().sort((n,u)=>n[0]-u[0]);for(;a.length>0;){let[n,u]=a.shift(),A=pDt.get(n);t.useUpperCase&&o.length===0&&(A=`${A[0].toUpperCase()}${A.slice(1)}`),t.useThirdPerson&&(A+="s");let p=[u];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)`),o.push(`${A} ${h}`)}return`${r}${o.join(", ")}`}var hDt="Commit generated via `yarn stage`",gDt=11;async function NBe(t){let{code:e,stdout:r}=await Ur.execvp("git",["log","-1","--pretty=format:%H"],{cwd:t});return e===0?r.trim():null}async function dDt(t,e){let r=[],o=e.filter(h=>V.basename(h.path)==="package.json");for(let{action:h,path:E}of o){let I=V.relative(t,E);if(h===4){let v=await NBe(t),{stdout:x}=await Ur.execvp("git",["show",`${v}:${I}`],{cwd:t,strict:!0}),C=await Ot.fromText(x),R=await Ot.fromFile(E),L=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...C.dependencies,...C.devDependencies]);for(let[J,te]of U){let ae=W.stringifyIdent(te),fe=L.get(J);fe?fe.range!==te.range&&r.push([4,`${ae} to ${fe.range}`]):r.push([3,ae])}for(let[J,te]of L)U.has(J)||r.push([2,W.stringifyIdent(te)])}else if(h===0){let v=await Ot.fromFile(E);v.name?r.push([0,W.stringifyIdent(v.name)]):r.push([0,"a package"])}else if(h===1){let v=await NBe(t),{stdout:x}=await Ur.execvp("git",["show",`${v}:${I}`],{cwd:t,strict:!0}),C=await Ot.fromText(x);C.name?r.push([1,W.stringifyIdent(C.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await Ur.execvp("git",["log",`-${gDt}`,"--pretty=format:%s"],{cwd:t}),u=a===0?n.split(/\n/g).filter(h=>h!==""):[],A=_q(u);return Hq(A,r)}var mDt={[0]:[" A ","?? "],[4]:[" M "],[1]:[" D "]},yDt={[0]:["A "],[4]:["M "],[1]:["D "]},LBe={async findRoot(t){return await Oq(t,{marker:".git"})},async filterChanges(t,e,r,o){let{stdout:a}=await Ur.execvp("git",["status","-s"],{cwd:t,strict:!0}),n=a.toString().split(/\n/g),u=o?.staged?yDt:mDt;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),E=V.resolve(t,p.slice(3));if(!o?.staged&&h==="?? "&&p.endsWith("/"))return Uq(E).map(I=>({action:0,path:I}));{let v=[0,4,1].find(x=>u[x].includes(h));return v!==void 0?[{action:v,path:E}]:[]}})).filter(p=>Mq(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await dDt(t,e)},async makeStage(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp("git",["add","--",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let o=e.map(a=>ue.fromPortablePath(a.path));await Ur.execvp("git",["add","-N","--",...o],{cwd:t,strict:!0}),await Ur.execvp("git",["commit","-m",`${r} + +${hDt} +`,"--",...o],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp("git",["reset","HEAD","--",...r],{cwd:t,strict:!0})}};var EDt=[LBe],$0=class extends ut{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})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),{driver:a,root:n}=await CDt(o.cwd),u=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(I=>I.populateYarnPaths,o,I=>{u.push(I)});let A=new Set;for(let I of u)for(let v of wDt(n,I))A.add(v);let p=new Set([r.get("rcFilename"),dr.lockfile,dr.manifest]),h=await a.filterChanges(n,A,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E} +`);else for(let I of h)this.context.stdout.write(`${ue.fromPortablePath(I.path)} +`);else if(this.reset){let I=await a.filterChanges(n,A,p,{staged:!0});I.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,I)}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))}};$0.paths=[["stage"]],$0.usage=nt.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 function CDt(t){let e=null,r=null;for(let o of EDt)if((r=await o.findRoot(t))!==null){e=o;break}if(e===null||r===null)throw new it("No stage driver has been found for your current project");return{driver:e,root:r}}function wDt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let o;try{o=oe.statSync(e)}catch{break}if(o.isSymbolicLink())e=V.resolve(V.dirname(e),oe.readlinkSync(e));else break}return r}var IDt={commands:[$0]},BDt=IDt;var Gq={};Vt(Gq,{default:()=>QDt});Ye();Ye();St();var UBe=$e(zn());Ye();var OBe=$e(zH()),vDt="e8e1bd300d860104bb8c58453ffa1eb4",DDt="OFCNCOG2CU",MBe=async(t,e)=>{let r=W.stringifyIdent(t),a=SDt(e).initIndex("npm-search");try{return(await a.getObject(r,{attributesToRetrieve:["types"]})).types?.ts==="definitely-typed"}catch{return!1}},SDt=t=>(0,OBe.default)(DDt,vDt,{requester:{async send(r){try{let o=await nn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:o.body,isTimedOut:!1,status:o.statusCode}}catch(o){return{content:o.response.body,isTimedOut:!1,status:o.response.statusCode}}}}});var _Be=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,PDt=async(t,e,r,o)=>{if(r.scope==="types")return;let{project:a}=t,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??oe.existsSync(V.join(a.cwd,"tsconfig.json"))))return;let A=n.makeResolver(),p={project:a,resolver:A,report:new Qi};if(!await MBe(r,n))return;let E=_Be(r),I=W.parseRange(r.range).selector;if(!kr.validRange(I)){let L=n.normalizeDependency(r),U=await A.getCandidates(L,{},p);I=W.parseRange(U[0].reference).selector}let v=UBe.default.coerce(I);if(v===null)return;let x=`${zc.Modifier.CARET}${v.major}`,C=W.makeDescriptor(W.makeIdent("types",E),x),R=_e.mapAndFind(a.workspaces,L=>{let U=L.manifest.dependencies.get(r.identHash)?.descriptorHash,J=L.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&J!==r.descriptorHash)return _e.mapAndFind.skip;let te=[];for(let ae of Ot.allDependencies){let fe=L.manifest[ae].get(C.identHash);typeof fe>"u"||te.push([ae,fe])}return te.length===0?_e.mapAndFind.skip:te});if(typeof R<"u")for(let[L,U]of R)t.manifest[L].set(U.identHash,U);else{try{let L=n.normalizeDependency(C);if((await A.getCandidates(L,{},p)).length===0)return}catch{return}t.manifest[zc.Target.DEVELOPMENT].set(C.identHash,C)}},bDt=async(t,e,r)=>{if(r.scope==="types")return;let{project:o}=t,{configuration:a}=o;if(!(a.get("tsEnableAutoTypes")??oe.existsSync(V.join(o.cwd,"tsconfig.json"))))return;let u=_Be(r),A=W.makeIdent("types",u);for(let p of Ot.allDependencies)typeof t.manifest[p].get(A.identHash)>"u"||t.manifest[p].delete(A.identHash)},xDt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},kDt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:PDt,afterWorkspaceDependencyRemoval:bDt,beforeWorkspacePacking:xDt}},QDt=kDt;var Vq={};Vt(Vq,{VersionApplyCommand:()=>eg,VersionCheckCommand:()=>tg,VersionCommand:()=>rg,default:()=>zDt,versionUtils:()=>dw});Ye();Ye();jt();var dw={};Vt(dw,{Decision:()=>hw,applyPrerelease:()=>WBe,applyReleases:()=>Kq,applyStrategy:()=>lF,clearVersionFiles:()=>qq,getUndecidedDependentWorkspaces:()=>Gv,getUndecidedWorkspaces:()=>aF,openVersionFile:()=>gw,requireMoreDecisions:()=>KDt,resolveVersionFiles:()=>jv,suggestStrategy:()=>Wq,updateVersionFiles:()=>Yq,validateReleaseDecision:()=>pw});Ye();St();Nl();jt();var YBe=$e(qBe()),vA=$e(zn()),WDt=/^(>=|[~^]|)(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-]+)*)?$/,hw=(u=>(u.UNDECIDED="undecided",u.DECLINE="decline",u.MAJOR="major",u.MINOR="minor",u.PATCH="patch",u.PRERELEASE="prerelease",u))(hw||{});function pw(t){let e=vA.default.valid(t);return e||_e.validateEnum((0,YBe.default)(hw,"UNDECIDED"),t)}async function jv(t,{prerelease:e=null}={}){let r=new Map,o=t.configuration.get("deferredVersionFolder");if(!oe.existsSync(o))return r;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(".yml"))continue;let u=V.join(o,n),A=await oe.readFilePromise(u,"utf8"),p=Ki(A);for(let[h,E]of Object.entries(p.releases||{})){if(E==="decline")continue;let I=W.parseIdent(h),v=t.tryWorkspaceByIdent(I);if(v===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${V.basename(u)} references ${h})`);if(v.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${W.prettyLocator(t.configuration,v.anchoredLocator)})`);let x=v.manifest.raw.stableVersion??v.manifest.version,C=r.get(v),R=lF(x,pw(E));if(R===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let L=typeof C<"u"?vA.default.gt(R,C)?R:C:R;r.set(v,L)}}return e&&(r=new Map([...r].map(([n,u])=>[n,WBe(u,{current:n.manifest.version,prerelease:e})]))),r}async function qq(t){let e=t.configuration.get("deferredVersionFolder");!oe.existsSync(e)||await oe.removePromise(e)}async function Yq(t,e){let r=new Set(e),o=t.configuration.get("deferredVersionFolder");if(!oe.existsSync(o))return;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(".yml"))continue;let u=V.join(o,n),A=await oe.readFilePromise(u,"utf8"),p=Ki(A),h=p?.releases;if(!!h){for(let E of Object.keys(h)){let I=W.parseIdent(E),v=t.tryWorkspaceByIdent(I);(v===null||r.has(v))&&delete p.releases[E]}Object.keys(p.releases).length>0?await oe.changeFilePromise(u,Ba(new Ba.PreserveOrdering(p))):await oe.unlinkPromise(u)}}}async function gw(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new it("This command can only be run from within a Yarn project");let o=await ra.fetchRoot(r.projectCwd),a=o!==null?await ra.fetchBase(o,{baseRefs:r.get("changesetBaseRefs")}):null,n=o!==null?await ra.fetchChangedFiles(o,{base:a.hash,project:t}):[],u=r.get("deferredVersionFolder"),A=n.filter(x=>V.contains(u,x)!==null);if(A.length>1)throw new it(`Your current branch contains multiple versioning files; this isn't supported: +- ${A.map(x=>ue.fromPortablePath(x)).join(` +- `)}`);let p=new Set(_e.mapAndFilter(n,x=>{let C=t.tryWorkspaceByFilePath(x);return C===null?_e.mapAndFilter.skip:C}));if(A.length===0&&p.size===0&&!e)return null;let h=A.length===1?A[0]:V.join(u,`${wn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=oe.existsSync(h)?await oe.readFilePromise(h,"utf8"):"{}",I=Ki(E),v=new Map;for(let x of I.declined||[]){let C=W.parseIdent(x),R=t.getWorkspaceByIdent(C);v.set(R,"decline")}for(let[x,C]of Object.entries(I.releases||{})){let R=W.parseIdent(x),L=t.getWorkspaceByIdent(R);v.set(L,pw(C))}return{project:t,root:o,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(x=>x.manifest.version!==null)),releases:v,async saveAll(){let x={},C=[],R=[];for(let L of t.workspaces){if(L.manifest.version===null)continue;let U=W.stringifyIdent(L.anchoredLocator),J=v.get(L);J==="decline"?C.push(U):typeof J<"u"?x[U]=pw(J):p.has(L)&&R.push(U)}await oe.mkdirPromise(V.dirname(h),{recursive:!0}),await oe.changeFilePromise(h,Ba(new Ba.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:C.length>0?C:void 0,undecided:R.length>0?R:void 0})))}}}function KDt(t){return aF(t).size>0||Gv(t).length>0}function aF(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 Gv(t,{include:e=new Set}={}){let r=[],o=new Map(_e.mapAndFilter([...t.releases],([n,u])=>u==="decline"?_e.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(_e.mapAndFilter([...t.releases],([n,u])=>u!=="decline"?_e.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||o.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let u of Ot.hardDependencies)for(let A of n.manifest.getForScope(u).values()){let p=t.project.tryWorkspaceByDescriptor(A);p!==null&&o.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function Wq(t,e){let r=vA.default.clean(e);for(let o of Object.values(hw))if(o!=="undecided"&&o!=="decline"&&vA.default.inc(t,o)===r)return o;return null}function lF(t,e){if(vA.default.valid(e))return e;if(t===null)throw new it(`Cannot apply the release strategy "${e}" unless the workspace already has a valid version`);if(!vA.default.valid(t))throw new it(`Cannot apply the release strategy "${e}" on a non-semver version (${t})`);let r=vA.default.inc(t,e);if(r===null)throw new it(`Cannot apply the release strategy "${e}" on the specified version (${t})`);return r}function Kq(t,e,{report:r}){let o=new Map;for(let a of t.workspaces)for(let n of Ot.allDependencies)for(let u of a.manifest[n].values()){let A=t.tryWorkspaceByDescriptor(u);if(A===null||!e.has(A))continue;_e.getArrayWithDefault(o,A).push([a,n,u.identHash])}for(let[a,n]of e){let u=a.manifest.version;a.manifest.version=n,vA.default.prerelease(n)===null?delete a.manifest.raw.stableVersion:a.manifest.raw.stableVersion||(a.manifest.raw.stableVersion=u);let A=a.manifest.name!==null?W.stringifyIdent(a.manifest.name):null;r.reportInfo(0,`${W.prettyLocator(t.configuration,a.anchoredLocator)}: Bumped to ${n}`),r.reportJson({cwd:ue.fromPortablePath(a.cwd),ident:A,oldVersion:u,newVersion:n});let p=o.get(a);if(!(typeof p>"u"))for(let[h,E,I]of p){let v=h.manifest[E].get(I);if(typeof v>"u")throw new Error("Assertion failed: The dependency should have existed");let x=v.range,C=!1;if(x.startsWith(Xn.protocol)&&(x=x.slice(Xn.protocol.length),C=!0,x===a.relativeCwd))continue;let R=x.match(WDt);if(!R){r.reportWarning(0,`Couldn't auto-upgrade range ${x} (in ${W.prettyLocator(t.configuration,h.anchoredLocator)})`);continue}let L=`${R[1]}${n}`;C&&(L=`${Xn.protocol}${L}`);let U=W.makeDescriptor(v,L);h.manifest[E].set(I,U)}}}var VDt=new Map([["%n",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function WBe(t,{current:e,prerelease:r}){let o=new vA.default.SemVer(e),a=o.prerelease.slice(),n=[];o.prerelease=[],o.format()!==t&&(a.length=0);let u=!0,A=r.split(/\./g);for(let p of A){let h=VDt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():u=!1;else{let E=u?h.extract(a):null;E!==null&&typeof E[0]=="number"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),u=!1)}}return o.prerelease&&(o.prerelease=[]),`${t}-${n.join(".")}`}var eg=class extends ut{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.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"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await jv(o,{prerelease:p}),E=new Map;if(this.all)E=h;else{let I=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let v of I){let x=h.get(v);typeof x<"u"&&E.set(v,x)}}if(E.size===0){let I=h.size>0?" Did you want to add --all?":"";A.reportWarning(0,`The current workspace doesn't seem to require a version bump.${I}`);return}Kq(o,E,{report:A}),this.dryRun||(p||(this.all?await qq(o):await Yq(o,[...E.keys()])),A.reportSeparator())});return this.dryRun||u.hasErrors()?u.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};eg.paths=[["version","apply"]],eg.usage=nt.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.%d\`) 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"]]});Ye();St();jt();var cF=$e(zn());var tg=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){bC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(cQ(),Bj)),{ScrollableItems:o}=await Promise.resolve().then(()=>(pQ(),fQ)),{FocusRequest:a}=await Promise.resolve().then(()=>(Dj(),Vwe)),{useListInput:n}=await Promise.resolve().then(()=>(AQ(),Jwe)),{renderForm:u}=await Promise.resolve().then(()=>(mQ(),dQ)),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useCallback:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,this.context.cwd);if(!C)throw new rr(x.cwd,this.context.cwd);await x.restoreInstallState();let R=await gw(x);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new it("This command can only be run on Git repositories");let L=()=>h.createElement(A,{flexDirection:"row",paddingBottom:1},h.createElement(A,{flexDirection:"column",width:60},h.createElement(A,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(A,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(A,{flexDirection:"column"},h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to save.")),h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),U=({workspace:me,active:he,decision:Be,setDecision:we})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${W.prettyLocator(v,me.anchoredLocator)})`);if(cF.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let Ee=["undecided","decline","patch","minor","major"];n(Be,Ee,{active:he,minus:"left",plus:"right",set:we});let Se=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"},cF.default.valid(Be)?Be:cF.default.inc(g,Be)));return h.createElement(A,{flexDirection:"column"},h.createElement(A,null,h.createElement(p,null,W.prettyLocator(v,me.anchoredLocator)," - ",Se)),h.createElement(A,null,Ee.map(le=>h.createElement(A,{key:le,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:le===Be})," ",le)))))},J=me=>{let he=new Set(R.releaseRoots),Be=new Map([...me].filter(([we])=>he.has(we)));for(;;){let we=Gv({project:R.project,releases:Be}),g=!1;if(we.length>0){for(let[Ee]of we)if(!he.has(Ee)){he.add(Ee),g=!0;let Se=me.get(Ee);typeof Se<"u"&&Be.set(Ee,Se)}}if(!g)break}return{relevantWorkspaces:he,relevantReleases:Be}},te=()=>{let[me,he]=I(()=>new Map(R.releases)),Be=E((we,g)=>{let Ee=new Map(me);g!=="undecided"?Ee.set(we,g):Ee.delete(we);let{relevantReleases:Se}=J(Ee);he(Se)},[me,he]);return[me,Be]},ae=({workspaces:me,releases:he})=>{let Be=[];Be.push(`${me.size} total`);let we=0,g=0;for(let Ee of me){let Se=he.get(Ee);typeof Se>"u"?g+=1:Se!=="decline"&&(we+=1)}return Be.push(`${we} release${we===1?"":"s"}`),Be.push(`${g} remaining`),h.createElement(p,{color:"yellow"},Be.join(", "))},ce=await u(({useSubmit:me})=>{let[he,Be]=te();me(he);let{relevantWorkspaces:we}=J(he),g=new Set([...we].filter(ne=>!R.releaseRoots.has(ne))),[Ee,Se]=I(0),le=E(ne=>{switch(ne){case a.BEFORE:Se(Ee-1);break;case a.AFTER:Se(Ee+1);break}},[Ee,Se]);return h.createElement(A,{flexDirection:"column"},h.createElement(L,null),h.createElement(A,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(A,{flexDirection:"column",marginTop:1,paddingLeft:2},[...R.changedFiles].map(ne=>h.createElement(A,{key:ne},h.createElement(p,null,h.createElement(p,{color:"grey"},ue.fromPortablePath(R.root)),ue.sep,ue.relative(ue.fromPortablePath(R.root),ue.fromPortablePath(ne)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(A,{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(A,{marginTop:1},h.createElement(ae,{workspaces:R.releaseRoots,releases:he})):null,h.createElement(A,{marginTop:1,flexDirection:"column"},h.createElement(o,{active:Ee%2===0,radius:1,size:2,onFocusRequest:le},[...R.releaseRoots].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:he.get(ne)||"undecided",setDecision:ee=>Be(ne,ee)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(A,{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(A,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(A,{marginTop:1},h.createElement(ae,{workspaces:g,releases:he})):null,h.createElement(A,{marginTop:1,flexDirection:"column"},h.createElement(o,{active:Ee%2===1,radius:2,size:2,onFocusRequest:le},[...g].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:he.get(ne)||"undecided",setDecision:ee=>Be(ne,ee)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ce>"u")return 1;R.releases.clear();for(let[me,he]of ce)R.releases.set(me,he);await R.saveAll()}async executeStandard(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return await o.restoreInstallState(),(await Nt.start({configuration:r,stdout:this.context.stdout},async u=>{let A=await gw(o);if(A===null||A.releaseRoots.size===0)return;if(A.root===null)throw new it("This command can only be run on Git repositories");if(u.reportInfo(0,`Your PR was started right after ${de.pretty(r,A.baseHash.slice(0,7),"yellow")} ${de.pretty(r,A.baseTitle,"magenta")}`),A.changedFiles.size>0){u.reportInfo(0,"You have changed the following files since then:"),u.reportSeparator();for(let v of A.changedFiles)u.reportInfo(null,`${de.pretty(r,ue.fromPortablePath(A.root),"gray")}${ue.sep}${ue.relative(ue.fromPortablePath(A.root),ue.fromPortablePath(v))}`)}let p=!1,h=!1,E=aF(A);if(E.size>0){p||u.reportSeparator();for(let v of E)u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let I=Gv(A);for(let[v,x]of I)h||u.reportSeparator(),u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} doesn't have a release strategy attached, but depends on ${W.prettyWorkspace(r,x)} which is planned for release.`),h=!0;(p||h)&&(u.reportSeparator(),u.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)."),u.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};tg.paths=[["version","check"]],tg.usage=nt.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"]]});Ye();jt();var uF=$e(zn());var rg=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let u=uF.default.valid(this.strategy),A=this.strategy==="decline",p;if(u)if(a.manifest.version!==null){let E=Wq(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!A){if(E===null)throw new it("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"||!uF.default.valid(E))throw new it(`Can't bump the version (${E}) if it's not valid semver`)}p=pw(this.strategy)}if(!n){let I=(await jv(o)).get(a);if(typeof I<"u"&&p!=="decline"){let v=lF(a.manifest.version,p);if(uF.default.lt(v,I))throw new it(`Can't bump the version to one that would be lower than the current deferred one (${I})`)}}let h=await gw(o,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};rg.paths=[["version"]],rg.usage=nt.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"]]});var JDt={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:[eg,tg,rg]},zDt=JDt;var Jq={};Vt(Jq,{WorkspacesFocusCommand:()=>ng,WorkspacesForeachCommand:()=>ap,default:()=>$Dt});Ye();Ye();jt();var ng=class extends ut{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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);await o.restoreInstallState({restoreResolutions:!1});let u;if(this.all)u=new Set(o.workspaces);else if(this.workspaces.length===0){if(!a)throw new rr(o.cwd,this.context.cwd);u=new Set([a])}else u=new Set(this.workspaces.map(A=>o.getWorkspaceByIdent(W.parseIdent(A))));for(let A of u)for(let p of this.production?["dependencies"]:Ot.hardDependencies)for(let h of A.manifest.getForScope(p).values()){let E=o.tryWorkspaceByDescriptor(h);E!==null&&u.add(E)}for(let A of o.workspaces)u.has(A)?this.production&&A.manifest.devDependencies.clear():(A.manifest.installConfig=A.manifest.installConfig||{},A.manifest.installConfig.selfReferences=!1,A.manifest.dependencies.clear(),A.manifest.devDependencies.clear(),A.manifest.peerDependencies.clear(),A.manifest.scripts.clear());return await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};ng.paths=[["workspaces","focus"]],ng.usage=nt.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 "});Ye();Ye();Ye();jt();var mw=$e(Zo()),VBe=$e(id());Za();var ap=class extends ut{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:TT([Ks(["unlimited"]),aI(RT(),[LT(),NT(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()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!this.all&&!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),u=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new it("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let A=we=>{!this.dryRun||this.context.stdout.write(`${we} +`)},p=()=>{let we=this.from.map(g=>mw.default.matcher(g));return o.workspaces.filter(g=>{let Ee=W.stringifyIdent(g.anchoredLocator),Se=g.relativeCwd;return we.some(le=>le(Ee)||le(Se))})},h=[];if(this.since?(A("Option --since is set; selecting the changed workspaces as root for workspace selection"),h=Array.from(await ra.fetchChangedWorkspaces({ref:this.since,project:o}))):this.from?(A("Option --from is set; selecting the specified workspaces"),h=[...p()]):this.worktree?(A("Option --worktree is set; selecting the current workspace"),h=[a]):this.recursive?(A("Option --recursive is set; selecting the current workspace"),h=[a]):this.all&&(A("Option --all is set; selecting all workspaces"),h=[...o.workspaces]),this.dryRun&&!this.all){for(let we of h)A(` +- ${we.relativeCwd} + ${W.prettyLocator(r,we.anchoredLocator)}`);h.length>0&&A("")}let E;if(this.recursive?this.since?(A("Option --recursive --since is set; recursively selecting all dependent workspaces"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceDependents()]).flat())):(A("Option --recursive is set; recursively selecting all transitive dependencies"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(A("Option --worktree is set; recursively selecting all nested workspaces"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let we of E)A(` +- ${we.relativeCwd} + ${W.prettyLocator(r,we.anchoredLocator)}`);let I=[],v=!1;if(u?.includes(":")){for(let we of o.workspaces)if(we.manifest.scripts.has(u)&&(v=!v,v===!1))break}for(let we of h){if(u&&!we.manifest.scripts.has(u)&&!v&&!(await un.getWorkspaceAccessibleBinaries(we)).has(u)){A(`Excluding ${we.relativeCwd} because it doesn't have a "${u}" script`);continue}if(!(u===r.env.npm_lifecycle_event&&we.cwd===a.cwd)){if(this.include.length>0&&!mw.default.isMatch(W.stringifyIdent(we.anchoredLocator),this.include)&&!mw.default.isMatch(we.relativeCwd,this.include)){A(`Excluding ${we.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(mw.default.isMatch(W.stringifyIdent(we.anchoredLocator),this.exclude)||mw.default.isMatch(we.relativeCwd,this.exclude))){A(`Excluding ${we.relativeCwd} because it matches the --include filter`);continue}if(this.publicOnly&&we.manifest.private===!0){A(`Excluding ${we.relativeCwd} because it's a private workspace and --no-private was set`);continue}I.push(we)}}if(this.dryRun)return 0;let x=this.verbose??(this.context.stdout.isTTY?1/0:0),C=x>0,R=x>1,L=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(Ji.availableParallelism()/2):1,U=L===1?!1:this.parallel,J=U?this.interlaced:!0,te=(0,VBe.default)(L),ae=new Map,fe=new Set,ce=0,me=null,he=!1,Be=await Nt.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async we=>{let g=async(Ee,{commandIndex:Se})=>{if(he)return-1;!U&&R&&Se>1&&we.reportSeparator();let le=XDt(Ee,{configuration:r,label:C,commandIndex:Se}),[ne,ee]=KBe(we,{prefix:le,interlaced:J}),[Ie,Fe]=KBe(we,{prefix:le,interlaced:J});try{R&&we.reportInfo(null,`${le?`${le} `:""}Process started`);let At=Date.now(),H=await this.cli.run([this.commandName,...this.args],{cwd:Ee.cwd,stdout:ne,stderr:Ie})||0;ne.end(),Ie.end(),await ee,await Fe;let at=Date.now();if(R){let Re=r.get("enableTimers")?`, completed in ${de.pretty(r,at-At,de.Type.DURATION)}`:"";we.reportInfo(null,`${le?`${le} `:""}Process exited (exit code ${H})${Re}`)}return H===130&&(he=!0,me=H),H}catch(At){throw ne.end(),Ie.end(),await ee,await Fe,At}};for(let Ee of I)ae.set(Ee.anchoredLocator.locatorHash,Ee);for(;ae.size>0&&!we.hasErrors();){let Ee=[];for(let[ne,ee]of ae){if(fe.has(ee.anchoredDescriptor.descriptorHash))continue;let Ie=!0;if(this.topological||this.topologicalDev){let Fe=this.topologicalDev?new Map([...ee.manifest.dependencies,...ee.manifest.devDependencies]):ee.manifest.dependencies;for(let At of Fe.values()){let H=o.tryWorkspaceByDescriptor(At);if(Ie=H===null||!ae.has(H.anchoredLocator.locatorHash),!Ie)break}}if(!!Ie&&(fe.add(ee.anchoredDescriptor.descriptorHash),Ee.push(te(async()=>{let Fe=await g(ee,{commandIndex:++ce});return ae.delete(ne),fe.delete(ee.anchoredDescriptor.descriptorHash),Fe})),!U))break}if(Ee.length===0){let ne=Array.from(ae.values()).map(ee=>W.prettyLocator(r,ee.anchoredLocator)).join(", ");we.reportError(3,`Dependency cycle detected (${ne})`);return}let le=(await Promise.all(Ee)).find(ne=>ne!==0);me===null&&(me=typeof le<"u"?1:me),(this.topological||this.topologicalDev)&&typeof le<"u"&&we.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()}};ap.paths=[["workspaces","foreach"]],ap.usage=nt.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.\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 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"]]}),ap.schema=[cI("all",qu.Forbids,["from","recursive","since","worktree"],{missingIf:"undefined"}),OT(["all","recursive","since","worktree"],{missingIf:"undefined"})];function KBe(t,{prefix:e,interlaced:r}){let o=t.createStreamReporter(e),a=new _e.DefaultStream;a.pipe(o,{end:!1}),a.on("finish",()=>{o.end()});let n=new Promise(A=>{o.on("finish",()=>{A(a.active)})});if(r)return[a,n];let u=new _e.BufferStream;return u.pipe(a,{end:!1}),u.on("finish",()=>{a.end()}),[u,n]}function XDt(t,{configuration:e,commandIndex:r,label:o}){if(!o)return null;let n=`[${W.stringifyIdent(t.anchoredLocator)}]:`,u=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],A=u[r%u.length];return de.pretty(e,n,A)}var ZDt={commands:[ng,ap]},$Dt=ZDt;var pC=()=>({modules:new Map([["@yarnpkg/cli",a2],["@yarnpkg/core",o2],["@yarnpkg/fslib",Vw],["@yarnpkg/libzip",x1],["@yarnpkg/parsers",rI],["@yarnpkg/shell",T1],["clipanion",hI],["semver",eSt],["typanion",Vo],["@yarnpkg/plugin-essentials",$8],["@yarnpkg/plugin-compat",iH],["@yarnpkg/plugin-constraints",wH],["@yarnpkg/plugin-dlx",IH],["@yarnpkg/plugin-exec",DH],["@yarnpkg/plugin-file",PH],["@yarnpkg/plugin-git",Z8],["@yarnpkg/plugin-github",kH],["@yarnpkg/plugin-http",QH],["@yarnpkg/plugin-init",FH],["@yarnpkg/plugin-interactive-tools",Tj],["@yarnpkg/plugin-link",Nj],["@yarnpkg/plugin-nm",yG],["@yarnpkg/plugin-npm",dq],["@yarnpkg/plugin-npm-cli",Dq],["@yarnpkg/plugin-pack",Aq],["@yarnpkg/plugin-patch",Fq],["@yarnpkg/plugin-pnp",oG],["@yarnpkg/plugin-pnpm",Nq],["@yarnpkg/plugin-stage",jq],["@yarnpkg/plugin-typescript",Gq],["@yarnpkg/plugin-version",Vq],["@yarnpkg/plugin-workspace-tools",Jq]]),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-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"])});function XBe({cwd:t,pluginConfiguration:e}){let r=new as({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:rn??""});return Object.assign(r,{defaultContext:{...as.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function tSt(t){if(_e.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,o=">=18.12.0";if(kr.satisfiesWithPrereleases(r,o))return!0;let a=new it(`This tool requires a Node version compatible with ${o} (got ${r}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);return as.defaultContext.stdout.write(t.error(a)),!1}async function ZBe({selfPath:t,pluginConfiguration:e}){return await Ke.find(ue.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function rSt(t,e,{yarnPath:r}){if(!oe.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 o={stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1"}};try{(0,JBe.execFileSync)(process.execPath,[ue.fromPortablePath(r),...e],o)}catch(a){return a.status??1}return 0}function nSt(t,e){let r=null,o=e;return e.length>=2&&e[0]==="--cwd"?(r=ue.toPortablePath(e[1]),o=e.slice(2)):e.length>=1&&e[0].startsWith("--cwd=")?(r=ue.toPortablePath(e[0].slice(6)),o=e.slice(1)):e[0]==="add"&&e[e.length-2]==="--cwd"&&(r=ue.toPortablePath(e[e.length-1]),o=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?V.resolve(r):V.cwd(),o}function iSt(t,{configuration:e}){if(!e.get("enableTelemetry")||zBe.isCI||!process.stdout.isTTY)return;Ke.telemetry=new uC(e,"puba9cdc10ec5790a2cf4969dd413a47270");let o=/^@yarnpkg\/plugin-(.*)$/;for(let a of e.plugins.keys())AC.has(a.match(o)?.[1]??"")&&Ke.telemetry?.reportPluginName(a);t.binaryVersion&&Ke.telemetry.reportVersion(t.binaryVersion)}function $Be(t,{configuration:e}){for(let r of e.plugins.values())for(let o of r.commands||[])t.register(o)}async function sSt(t,e,{selfPath:r,pluginConfiguration:o}){if(!tSt(t))return 1;let a=await ZBe({selfPath:r,pluginConfiguration:o}),n=a.get("yarnPath"),u=a.get("ignorePath");if(n&&!u)return rSt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let A=nSt(t,e);iSt(t,{configuration:a}),$Be(t,{configuration:a});let p=t.process(A,t.defaultContext);return p.help||Ke.telemetry?.reportCommandName(p.path.join(" ")),await t.run(p,t.defaultContext)}async function $pe({cwd:t=V.cwd(),pluginConfiguration:e=pC()}={}){let r=XBe({cwd:t,pluginConfiguration:e}),o=await ZBe({pluginConfiguration:e,selfPath:null});return $Be(r,{configuration:o}),r}async function nk(t,{cwd:e=V.cwd(),selfPath:r,pluginConfiguration:o}){let a=XBe({cwd:e,pluginConfiguration:o});try{process.exitCode=await sSt(a,t,{selfPath:r,pluginConfiguration:o})}catch(n){as.defaultContext.stdout.write(a.error(n)),process.exitCode=1}finally{await oe.rmtempPromise()}}nk(process.argv.slice(2),{cwd:V.cwd(),selfPath:ue.toPortablePath(ue.resolve(process.argv[1])),pluginConfiguration:pC()});})(); +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +/*! + * buildToken + * Builds OAuth token prefix (helper function) + * + * @name buildToken + * @function + * @param {GitUrl} obj The parsed Git url object. + * @return {String} token prefix + */ +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * is-windows + * + * Copyright © 2015-2018, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ +/** + @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 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. +*/ +/** + @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 React v0.18.0 + * 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. + */ +/** @license React v0.24.0 + * 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. + */ +/** @license React v16.13.1 + * 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. + */ diff --git a/.yarnrc.yml b/.yarnrc.yml index fe6b367ca..fcd7eeeb9 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,6 +1,13 @@ -nodeLinker: node-modules +compressionLevel: mixed + +enableGlobalCache: false + logFilters: - - level: discard - code: YN0013 - - level: discard - code: YN0007 + - code: YN0013 + level: discard + - code: YN0007 + level: discard + +nodeLinker: node-modules + +yarnPath: .yarn/releases/yarn-4.1.0.cjs diff --git a/package.json b/package.json index e618df07e..e85409bec 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "license": "CC0-1.0", "description": "A smart contract implementation of the Ethereum light client sync protocol", - "packageManager": "yarn@3.2.1", + "packageManager": "yarn@4.1.0", "workspaces": [ "beacon-light-client/circom", "beacon-light-client/solidity", diff --git a/yarn.lock b/yarn.lock index 3a3ec9caf..bb4e20b60 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,23 +2,23 @@ # Manual changes might be lost - proceed with caution! __metadata: - version: 6 - cacheKey: 8 + version: 8 + cacheKey: 10 "@ampproject/remapping@npm:^2.2.0": version: 2.2.0 resolution: "@ampproject/remapping@npm:2.2.0" dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 + "@jridgewell/gen-mapping": "npm:^0.1.0" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10/503a58d6e9d645a20debd34fa8df79fb435a79a34b1d487b9ff0be9f20712b1594ce21da16b63af7db8a6b34472212572e53a55613a5a6b3134b23fc74843d04 languageName: node linkType: hard "@assemblyscript/loader@npm:^0.9.2": version: 0.9.4 resolution: "@assemblyscript/loader@npm:0.9.4" - checksum: 2af3d1eec181c1817e3fb95b8d900cf1e7f19933a02315569d3d4f2f3d6514673acb784b2a1a8a148436fb8a983b580bfb993c1d520c55a8fd84678b200b2ec6 + checksum: 10/a212bd629f0b044597c2f0d039ea4a11f2ee4a68c5a0758f2fcebdb168c6f8c2f50297a63f72ebb5eb12c9e023bdc9a8c730cd6c981158cb5df44c6aacb83b60 languageName: node linkType: hard @@ -26,15 +26,15 @@ __metadata: version: 7.18.6 resolution: "@babel/code-frame@npm:7.18.6" dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba + "@babel/highlight": "npm:^7.18.6" + checksum: 10/195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba languageName: node linkType: hard "@babel/compat-data@npm:^7.20.5": version: 7.21.0 resolution: "@babel/compat-data@npm:7.21.0" - checksum: dbf632c532f9c75ba0be7d1dc9f6cd3582501af52f10a6b90415d634ec5878735bd46064c91673b10317af94d4cc99c4da5bd9d955978cdccb7905fc33291e4d + checksum: 10/6079fe5a037e563345efd4df72e8651f3bbdadc23e3c4b8c28fb628ec6ea600a63b0ae73bbd88d33b8fa972e3307b990b9c1593683fb4512a3dbda2ce77ba820 languageName: node linkType: hard @@ -42,22 +42,22 @@ __metadata: version: 7.21.0 resolution: "@babel/core@npm:7.21.0" dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.21.0 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-module-transforms": ^7.21.0 - "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.0 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: 357f4dd3638861ceebf6d95ff49ad8b902065ee8b7b352621deed5666c2a6d702a48ca7254dba23ecae2a0afb67d20f90db7dd645c3b75e35e72ad9776c671aa + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.18.6" + "@babel/generator": "npm:^7.21.0" + "@babel/helper-compilation-targets": "npm:^7.20.7" + "@babel/helper-module-transforms": "npm:^7.21.0" + "@babel/helpers": "npm:^7.21.0" + "@babel/parser": "npm:^7.21.0" + "@babel/template": "npm:^7.20.7" + "@babel/traverse": "npm:^7.21.0" + "@babel/types": "npm:^7.21.0" + convert-source-map: "npm:^1.7.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.2" + semver: "npm:^6.3.0" + checksum: 10/52c7d000de475365cfa1a45ac8bbe86cc59cdd970696db7c403fcdb334fde06846b7bac0cc2c3d22cd7244ac6c2b8d86373e5559674ba17679474c1182da6ad3 languageName: node linkType: hard @@ -65,11 +65,11 @@ __metadata: version: 7.21.1 resolution: "@babel/generator@npm:7.21.1" dependencies: - "@babel/types": ^7.21.0 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 69085a211ff91a7a608ee3f86e6fcb9cf5e724b756d792a713b0c328a671cd3e423e1ef1b12533f366baba0616caffe0a7ba9d328727eab484de5961badbef00 + "@babel/types": "npm:^7.21.0" + "@jridgewell/gen-mapping": "npm:^0.3.2" + "@jridgewell/trace-mapping": "npm:^0.3.17" + jsesc: "npm:^2.5.1" + checksum: 10/c3b49aafc6c02feda114a659b3bc3bad63a148d418dddea91c67c4db4ec77425805407a079e0ad5724e59d4c7d686d2c04d2e7546d8e795c6f3bd8192d3f20cd languageName: node linkType: hard @@ -77,21 +77,21 @@ __metadata: version: 7.20.7 resolution: "@babel/helper-compilation-targets@npm:7.20.7" dependencies: - "@babel/compat-data": ^7.20.5 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - lru-cache: ^5.1.1 - semver: ^6.3.0 + "@babel/compat-data": "npm:^7.20.5" + "@babel/helper-validator-option": "npm:^7.18.6" + browserslist: "npm:^4.21.3" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.0" peerDependencies: "@babel/core": ^7.0.0 - checksum: 8c32c873ba86e2e1805b30e0807abd07188acbe00ebb97576f0b09061cc65007f1312b589eccb4349c5a8c7f8bb9f2ab199d41da7030bf103d9f347dcd3a3cf4 + checksum: 10/b9c8d8ff26e4b286a81ffa9d9c727b838d2c029563cb49d13b4180994624425c5616ae78de75eeead7bac7e30e0312741b3dd233268e78ce4ecd61eca1ef34f6 languageName: node linkType: hard "@babel/helper-environment-visitor@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 + checksum: 10/b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 languageName: node linkType: hard @@ -99,9 +99,9 @@ __metadata: version: 7.21.0 resolution: "@babel/helper-function-name@npm:7.21.0" dependencies: - "@babel/template": ^7.20.7 - "@babel/types": ^7.21.0 - checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e + "@babel/template": "npm:^7.20.7" + "@babel/types": "npm:^7.21.0" + checksum: 10/33d6e1eca48741f86f7073dc5e38220f7fef310ad5bda3354bea322b2a9a2d89a029fa82fac62514dfc16e3f57053fc9f29f11a32d9c2688d914e3a60692b4a5 languageName: node linkType: hard @@ -109,8 +109,8 @@ __metadata: version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f + "@babel/types": "npm:^7.18.6" + checksum: 10/fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f languageName: node linkType: hard @@ -118,8 +118,8 @@ __metadata: version: 7.18.6 resolution: "@babel/helper-module-imports@npm:7.18.6" dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def + "@babel/types": "npm:^7.18.6" + checksum: 10/75b0d510271c2d220c426ec1174666febbe8ce520e66f99f87e8944acddaf5d1e88167fe500a1c8e46a770a5cb916e566d3b514ec0af6cbdac93089ed8200716 languageName: node linkType: hard @@ -127,29 +127,29 @@ __metadata: version: 7.21.2 resolution: "@babel/helper-module-transforms@npm:7.21.2" dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.2 - "@babel/types": ^7.21.2 - checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 + "@babel/helper-environment-visitor": "npm:^7.18.9" + "@babel/helper-module-imports": "npm:^7.18.6" + "@babel/helper-simple-access": "npm:^7.20.2" + "@babel/helper-split-export-declaration": "npm:^7.18.6" + "@babel/helper-validator-identifier": "npm:^7.19.1" + "@babel/template": "npm:^7.20.7" + "@babel/traverse": "npm:^7.21.2" + "@babel/types": "npm:^7.21.2" + checksum: 10/5c02086d20cdfa327baceaba3e4ffdf4f6a15f1f6ce061842d5e37159d9e83b62af17bb23af8646cf9bda60bad62a5bbfb33d3057ae56c554e2dc5d489679f68 languageName: node linkType: hard "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.20.2 resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b + checksum: 10/7bd5be752998e8bfa616e6fbf1fd8f1a7664039a435d5da11cfd97a320b6eb58e28156f4789b2da242a53ed45994d04632b2e19684c1209e827522a07f0cd022 languageName: node linkType: hard "@babel/helper-plugin-utils@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" - checksum: c0fc7227076b6041acd2f0e818145d2e8c41968cc52fb5ca70eed48e21b8fe6dd88a0a91cbddf4951e33647336eb5ae184747ca706817ca3bef5e9e905151ff5 + checksum: 10/ab220db218089a2aadd0582f5833fd17fa300245999f5f8784b10f5a75267c4e808592284a29438a0da365e702f05acb369f99e1c915c02f9f9210ec60eab8ea languageName: node linkType: hard @@ -157,8 +157,8 @@ __metadata: version: 7.20.2 resolution: "@babel/helper-simple-access@npm:7.20.2" dependencies: - "@babel/types": ^7.20.2 - checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 + "@babel/types": "npm:^7.20.2" + checksum: 10/ce313e315123b4e4db1ad61a3e7695aa002ed4d544e69df545386ff11315f9677b8b2728ab543e93ede35fc8854c95be29c4982285d5bf8518cdee55ee444b82 languageName: node linkType: hard @@ -166,29 +166,29 @@ __metadata: version: 7.18.6 resolution: "@babel/helper-split-export-declaration@npm:7.18.6" dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b + "@babel/types": "npm:^7.18.6" + checksum: 10/c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b languageName: node linkType: hard "@babel/helper-string-parser@npm:^7.19.4": version: 7.19.4 resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 + checksum: 10/05d428ed8111a2393a69f5ac2f075554d8d61ed3ffc885b62a1829ef25c2eaa7c53e69d0d35e658c995755dc916aeb4c8c04fe51391758ea4b86c931111ebbc2 languageName: node linkType: hard "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a + checksum: 10/30ecd53b7276970d59d65e68e147ea885f8812e50d06a59315dd1f12dc41467d29d6c56bf1fd02e91100f939cba378815b2c19f5d3604331a153aed9efcbd2a9 languageName: node linkType: hard "@babel/helper-validator-option@npm:^7.18.6": version: 7.21.0 resolution: "@babel/helper-validator-option@npm:7.21.0" - checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 + checksum: 10/8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 languageName: node linkType: hard @@ -196,10 +196,10 @@ __metadata: version: 7.21.0 resolution: "@babel/helpers@npm:7.21.0" dependencies: - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54 + "@babel/template": "npm:^7.20.7" + "@babel/traverse": "npm:^7.21.0" + "@babel/types": "npm:^7.21.0" + checksum: 10/5ec38f6d259962745f32a8be2662ecb2cd65db508f31728867d19035c7a90111461cb3d64e2177bf442cf87da2dc0a4b9df6a8de7432238ea2ca260f9381248c languageName: node linkType: hard @@ -207,10 +207,10 @@ __metadata: version: 7.18.6 resolution: "@babel/highlight@npm:7.18.6" dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 + "@babel/helper-validator-identifier": "npm:^7.18.6" + chalk: "npm:^2.0.0" + js-tokens: "npm:^4.0.0" + checksum: 10/92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 languageName: node linkType: hard @@ -219,7 +219,7 @@ __metadata: resolution: "@babel/parser@npm:7.21.2" bin: parser: ./bin/babel-parser.js - checksum: e2b89de2c63d4cdd2cafeaea34f389bba729727eec7a8728f736bc472a59396059e3e9fe322c9bed8fd126d201fb609712949dc8783f4cae4806acd9a73da6ff + checksum: 10/4a53d7ac69fcb36b994259a4d781ff1b0ab736508adbb37511b0f7c9e5c05326bf2a3fd2a9a4cfc86c460f3de703d54def3e2f89d9bec38010fd7f06bf199996 languageName: node linkType: hard @@ -227,10 +227,10 @@ __metadata: version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 + checksum: 10/7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 languageName: node linkType: hard @@ -238,10 +238,10 @@ __metadata: version: 7.8.3 resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 + checksum: 10/3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 languageName: node linkType: hard @@ -249,10 +249,10 @@ __metadata: version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": "npm:^7.12.13" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc + checksum: 10/24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc languageName: node linkType: hard @@ -260,10 +260,10 @@ __metadata: version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: - "@babel/helper-plugin-utils": ^7.10.4 + "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b + checksum: 10/166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b languageName: node linkType: hard @@ -271,10 +271,10 @@ __metadata: version: 7.8.3 resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a + checksum: 10/bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a languageName: node linkType: hard @@ -282,10 +282,10 @@ __metadata: version: 7.23.3 resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 89037694314a74e7f0e7a9c8d3793af5bf6b23d80950c29b360db1c66859d67f60711ea437e70ad6b5b4b29affe17eababda841b6c01107c2b638e0493bafb4e + checksum: 10/89037694314a74e7f0e7a9c8d3793af5bf6b23d80950c29b360db1c66859d67f60711ea437e70ad6b5b4b29affe17eababda841b6c01107c2b638e0493bafb4e languageName: node linkType: hard @@ -293,10 +293,10 @@ __metadata: version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: - "@babel/helper-plugin-utils": ^7.10.4 + "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + checksum: 10/aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 languageName: node linkType: hard @@ -304,10 +304,10 @@ __metadata: version: 7.8.3 resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + checksum: 10/87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 languageName: node linkType: hard @@ -315,10 +315,10 @@ __metadata: version: 7.10.4 resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: - "@babel/helper-plugin-utils": ^7.10.4 + "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + checksum: 10/01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 languageName: node linkType: hard @@ -326,10 +326,10 @@ __metadata: version: 7.8.3 resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + checksum: 10/fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf languageName: node linkType: hard @@ -337,10 +337,10 @@ __metadata: version: 7.8.3 resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + checksum: 10/910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 languageName: node linkType: hard @@ -348,10 +348,10 @@ __metadata: version: 7.8.3 resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" dependencies: - "@babel/helper-plugin-utils": ^7.8.0 + "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + checksum: 10/eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 languageName: node linkType: hard @@ -359,10 +359,10 @@ __metadata: version: 7.14.5 resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + checksum: 10/bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e languageName: node linkType: hard @@ -370,10 +370,10 @@ __metadata: version: 7.20.0 resolution: "@babel/plugin-syntax-typescript@npm:7.20.0" dependencies: - "@babel/helper-plugin-utils": ^7.19.0 + "@babel/helper-plugin-utils": "npm:^7.19.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6189c0b5c32ba3c9a80a42338bd50719d783b20ef29b853d4f03929e971913d3cefd80184e924ae98ad6db09080be8fe6f1ffde9a6db8972523234f0274d36f7 + checksum: 10/6189c0b5c32ba3c9a80a42338bd50719d783b20ef29b853d4f03929e971913d3cefd80184e924ae98ad6db09080be8fe6f1ffde9a6db8972523234f0274d36f7 languageName: node linkType: hard @@ -381,10 +381,10 @@ __metadata: version: 7.20.7 resolution: "@babel/template@npm:7.20.7" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e + "@babel/code-frame": "npm:^7.18.6" + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + checksum: 10/b6108cad36ff7ae797bcba5bea1808e1390b700925ef21ff184dd50fe1d30db4cdf4815e6e76f3e0abd7de4c0b820ec660227f3c6b90b5b0a592cf606ceb3864 languageName: node linkType: hard @@ -392,17 +392,17 @@ __metadata: version: 7.21.2 resolution: "@babel/traverse@npm:7.21.2" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.21.1 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.2 - "@babel/types": ^7.21.2 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: d851e3f5cfbdc2fac037a014eae7b0707709de50f7d2fbb82ffbf932d3eeba90a77431529371d6e544f8faaf8c6540eeb18fdd8d1c6fa2b61acea0fb47e18d4b + "@babel/code-frame": "npm:^7.18.6" + "@babel/generator": "npm:^7.21.1" + "@babel/helper-environment-visitor": "npm:^7.18.9" + "@babel/helper-function-name": "npm:^7.21.0" + "@babel/helper-hoist-variables": "npm:^7.18.6" + "@babel/helper-split-export-declaration": "npm:^7.18.6" + "@babel/parser": "npm:^7.21.2" + "@babel/types": "npm:^7.21.2" + debug: "npm:^4.1.0" + globals: "npm:^11.1.0" + checksum: 10/79261a94ead8e046d8078f7b4b19d7ebad406400165dc74ec909ae060353d036c99e16e3a00243a8613cfb0e4b5a0d6787e957334b3bd49fc580518e7e8db8be languageName: node linkType: hard @@ -410,17 +410,17 @@ __metadata: version: 7.21.2 resolution: "@babel/types@npm:7.21.2" dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: a45a52acde139e575502c6de42c994bdbe262bafcb92ae9381fb54cdf1a3672149086843fda655c7683ce9806e998fd002bbe878fa44984498d0fdc7935ce7ff + "@babel/helper-string-parser": "npm:^7.19.4" + "@babel/helper-validator-identifier": "npm:^7.19.1" + to-fast-properties: "npm:^2.0.0" + checksum: 10/f93c526c024982f5236c5c7733af31023d1e197b073ef24cdaff65ea0d96203d0b766373248443b4a524afa726ab23fee85620ed3ff27e1716bdcbbbedce7edc languageName: node linkType: hard "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 + checksum: 10/1a1f0e356a3bb30b5f1ced6f79c413e6ebacf130421f15fac5fcd8be5ddf98aedb4404d7f5624e3285b700e041f9ef938321f3ca4d359d5b716f96afa120d88d languageName: node linkType: hard @@ -428,16 +428,16 @@ __metadata: version: 0.2.4 resolution: "@chainsafe/as-sha256@npm:0.2.4" dependencies: - "@assemblyscript/loader": ^0.9.2 - buffer: ^5.4.3 - checksum: 635a20eb840cd0b5b342286bb84884e96b9d2548dfc5eed757a3e53779e6f85a0e09550bf36929543e91e6c5d2747987f62591e6cc8928f455314d5c933402a0 + "@assemblyscript/loader": "npm:^0.9.2" + buffer: "npm:^5.4.3" + checksum: 10/6455b514d6da1368b9accab9d0ade446931642cbf1683cc77e8c3b3a3642f3152e4025d8a31329b6905621ffe296c1df4e9196bb22287f2837f3933d82a65ee1 languageName: node linkType: hard "@chainsafe/as-sha256@npm:^0.3.1": version: 0.3.1 resolution: "@chainsafe/as-sha256@npm:0.3.1" - checksum: 58ea733be1657b0e31dbf48b0dba862da0833df34a81c1460c7352f04ce90874f70003cbf34d0afb9e5e53a33ee2d63a261a8b12462be85b2ba0a6f7f13d6150 + checksum: 10/3bae7b4bc6e307baa3cf1f9d2c75827874cd0fb458bc592656d741d374b48e71c042fe21616a506cb821487a5abfc6b92181e4b7fbf49b7370cee4df0b67d95a languageName: node linkType: hard @@ -445,11 +445,11 @@ __metadata: version: 0.2.1 resolution: "@chainsafe/bls-hd-key@npm:0.2.1" dependencies: - assert: ^2.0.0 - bcrypto: ^5.4.0 - bn.js: ^5.1.1 - buffer: ^5.4.3 - checksum: 232998a2d8d81316f5fbdb658b441ceaab79bfdd61e4050d95aebf766211b7383838e2f65bc2fc459a8d1ed4bbe2320ee3db198275a233d746c17bf7d9213848 + assert: "npm:^2.0.0" + bcrypto: "npm:^5.4.0" + bn.js: "npm:^5.1.1" + buffer: "npm:^5.4.3" + checksum: 10/2fc50417ac5457c6770023bfe7b52bd5ef5bc92f7f89d7cec1e54636f2cf8230981e4f2669d7bbbb9ebad44a07452140de64633b8545788f2c9e0db4d975dc5d languageName: node linkType: hard @@ -457,11 +457,11 @@ __metadata: version: 0.3.0 resolution: "@chainsafe/bls-keygen@npm:0.3.0" dependencies: - "@chainsafe/bls-hd-key": ^0.2.0 - bip39: ^3.0.2 - buffer: ^5.4.3 - randombytes: ^2.1.0 - checksum: 24b4cd00de664886933d6047b05e5b0d2def06e878643434e996ceb1380b41d99996cac641040cc535d2823f7ddb84d8075ec87d0167c0fabea8acfe43b25c38 + "@chainsafe/bls-hd-key": "npm:^0.2.0" + bip39: "npm:^3.0.2" + buffer: "npm:^5.4.3" + randombytes: "npm:^2.1.0" + checksum: 10/df18e625e02dc1dfaadb5cd48288eefbe0f3914a9d28ffcab6c1878bcacbe430f35cdd0e30de439f9d85e5222db06039fe9df22516ffc4bf166a5558152f0698 languageName: node linkType: hard @@ -469,12 +469,12 @@ __metadata: version: 6.0.3 resolution: "@chainsafe/bls@npm:6.0.3" dependencies: - "@chainsafe/bls-keygen": ^0.3.0 - bls-eth-wasm: ^0.4.8 - randombytes: ^2.1.0 + "@chainsafe/bls-keygen": "npm:^0.3.0" + bls-eth-wasm: "npm:^0.4.8" + randombytes: "npm:^2.1.0" peerDependencies: "@chainsafe/blst": ^0.2.0 - checksum: 7efbfae52b3574d7149e2d6cf91e57beeeb69e5b1550cb45071cdda7eae1173c094548cfa976327dd3d93f27b9565d0a3435cba6bda4e1ba6285bab1de6ee9fa + checksum: 10/fa0412b4c4c1ef66f5b120a5e91b87284e048645fd2670b6d7f8c87b3621b93692e53fddd001290f4371b75360ae06b60b2559632b048bf3bb80b49aea6633fe languageName: node linkType: hard @@ -482,9 +482,9 @@ __metadata: version: 0.2.4 resolution: "@chainsafe/blst@npm:0.2.4" dependencies: - node-fetch: ^2.6.1 - node-gyp: ^8.4.0 - checksum: eae72b91e7472bf1e300f02b5be6dbb70eb523fb3a2777268ed8b681966252e509c9eb82b7f4b91b6435929e0f424ac2f39c690be9fee6b0237ea47834bd5bb7 + node-fetch: "npm:^2.6.1" + node-gyp: "npm:^8.4.0" + checksum: 10/2afd58ac0856258238ecf405d89acd712710e42340457fef5bfa5b0b8a3a38cdbc81f108112d866e26bc8a77625e3482d31822e09931d3b4c57f27fa832471ae languageName: node linkType: hard @@ -492,23 +492,23 @@ __metadata: version: 0.2.8 resolution: "@chainsafe/blst@npm:0.2.8" dependencies: - node-fetch: ^2.6.1 - node-gyp: ^8.4.0 - checksum: 0cea172697a18251b28b17446fad33f15c8da722846cdeff23dcccf6ff064ca2fe315cd08f0b983e7fe1a9eda7ee8a2494572da708862278235ba6d7eee1c650 + node-fetch: "npm:^2.6.1" + node-gyp: "npm:^8.4.0" + checksum: 10/0848946473c526edc15becbb47946a399b697c94166fa99c79e642a550d1945f395d710408c93a48fc1e36115bcd2952a57fa51e52ace02a2067298a3ae9aa99 languageName: node linkType: hard "@chainsafe/lodestar-params@npm:^0.34.4": version: 0.34.4 resolution: "@chainsafe/lodestar-params@npm:0.34.4" - checksum: eef64fbf76e968de7b61a7129acdb09b9bab8edf5768aa188d7548d77aa955c901936f9e3b3c44c055d7e5a5994f6cf9aaa59bade16a473f30dcd306cc6a3d01 + checksum: 10/fda1f6e12e9d46717c6ad62eedebae6e310aa2418d9456e0f0d16bd5bdec1218294676d6c9eedbb3f345a8dfee43acd6e8d72839b0597cafa9f6ed05584f0102 languageName: node linkType: hard "@chainsafe/lodestar-params@npm:^0.39.0": version: 0.39.0 resolution: "@chainsafe/lodestar-params@npm:0.39.0" - checksum: ef9de13ee6f9146394c6953e285c80535d0cce8ccfebcd5419aa0ce53ebe0d10b42e4b978dccf69af71b07a786a320ae2dd4960923678595dede9e3ea5f72202 + checksum: 10/6a90c3a0cd92126015e22fec8bcdb6509a28dac990feac94c9b0a0ad5a452e285aa1c2c4aefcf5a201b68b98b851662d599f220aea6f5131f85305dc32ad31a1 languageName: node linkType: hard @@ -516,9 +516,9 @@ __metadata: version: 0.34.4 resolution: "@chainsafe/lodestar-types@npm:0.34.4" dependencies: - "@chainsafe/lodestar-params": ^0.34.4 - "@chainsafe/ssz": ^0.8.20 - checksum: 31430e51d046545eb9ce2d6cbbacc2b31fff90725b999855c355b427cf855704a11eb9877b1a1cc7752090d192d3cc97c41ff8e6bde3f44e947d6118c3daa75a + "@chainsafe/lodestar-params": "npm:^0.34.4" + "@chainsafe/ssz": "npm:^0.8.20" + checksum: 10/532018421158e2eb806358038c669a48f939fcf94ea5771ebf8425da369f288d000ec2fe5283c46974d1451b9ed64bd3377eac45e044b0a06ae77bcfdcec14a5 languageName: node linkType: hard @@ -526,9 +526,9 @@ __metadata: version: 0.39.0 resolution: "@chainsafe/lodestar-types@npm:0.39.0" dependencies: - "@chainsafe/lodestar-params": ^0.39.0 - "@chainsafe/ssz": ^0.9.2 - checksum: 8c9243d423a98bf041e06b04ee4fe4fee7cfcb3a9cd3814816ee8d775deac27dbd734adcb89887e62c359ab23a17977b5c17ffae5983fd90bf0f516c905eae92 + "@chainsafe/lodestar-params": "npm:^0.39.0" + "@chainsafe/ssz": "npm:^0.9.2" + checksum: 10/305dabb50ac5841c3a39e7c8695db1228e12b3fce5cac0095e09ef82318e617a9217580dccd0ec470b6e349a9aa05380f09fa5f8c6729323a81cbccf7899d1bd languageName: node linkType: hard @@ -536,8 +536,8 @@ __metadata: version: 0.3.7 resolution: "@chainsafe/persistent-merkle-tree@npm:0.3.7" dependencies: - "@chainsafe/as-sha256": ^0.2.3 - checksum: 95b903808d78c3b9854f2acd90ed2bcbf77e1ed4199569d96f64d7d955cecff510432d260142cd06e810c41ba413e80824a0344bf985ba9367688fd5318968e2 + "@chainsafe/as-sha256": "npm:^0.2.3" + checksum: 10/b1dede5abd7af14ef258efbd1003b3e9ab56fd3d7d3846a464dc0720ffa8a2ce545afdf85427a1710a0df1a89ff12b5c4b594931ea99431614ede7fe6454c3ec languageName: node linkType: hard @@ -545,8 +545,8 @@ __metadata: version: 0.4.2 resolution: "@chainsafe/persistent-merkle-tree@npm:0.4.2" dependencies: - "@chainsafe/as-sha256": ^0.3.1 - checksum: f9cfcb2132a243992709715dbd28186ab48c7c0c696f29d30857693cca5526bf753974a505ef68ffd5623bbdbcaa10f9083f4dd40bf99eb6408e451cc26a1a9e + "@chainsafe/as-sha256": "npm:^0.3.1" + checksum: 10/a7e59f80be3ce0a86fe452a3c003bd159a1719ed22cae22e9841668f0eda8c35412fa16b3b150d96f583a24f430a5cc2a1bfcabafc1b9cf6e1fdb227e98c4dc7 languageName: node linkType: hard @@ -554,10 +554,10 @@ __metadata: version: 0.8.20 resolution: "@chainsafe/ssz@npm:0.8.20" dependencies: - "@chainsafe/as-sha256": ^0.2.4 - "@chainsafe/persistent-merkle-tree": ^0.3.7 - case: ^1.6.3 - checksum: a4b412b128f0bc3ddc54f18e72db04bd96b672323ebb0375ece55f437b2b681b2e86c98fa1790edc0abf2e1abb1ae3e7e667747df7144ee5e8d8dd41a8e22451 + "@chainsafe/as-sha256": "npm:^0.2.4" + "@chainsafe/persistent-merkle-tree": "npm:^0.3.7" + case: "npm:^1.6.3" + checksum: 10/dda86dd9f8e6668d573e524bbcd38233374b81b809bb4dcfc544196222b1c62c0cf707fa90d6e3df410709c22d3d9aab79e3c5bcb87e6db6e0a743ffcf729c22 languageName: node linkType: hard @@ -565,17 +565,17 @@ __metadata: version: 0.9.4 resolution: "@chainsafe/ssz@npm:0.9.4" dependencies: - "@chainsafe/as-sha256": ^0.3.1 - "@chainsafe/persistent-merkle-tree": ^0.4.2 - case: ^1.6.3 - checksum: c6eaedeae9e5618b3c666ff4507a27647f665a8dcf17d5ca86da4ed4788c5a93868f256d0005467d184fdf35ec03f323517ec2e55ec42492d769540a2ec396bc + "@chainsafe/as-sha256": "npm:^0.3.1" + "@chainsafe/persistent-merkle-tree": "npm:^0.4.2" + case: "npm:^1.6.3" + checksum: 10/2fe83d0b3ef131e14b51b88bb3343b14e7a02185fa9fd3da84b4726dbd857daaa4f7f6f4840fe3772fc1380352b1675a13b5f6153c4211c0f00ffa542b62bf2f languageName: node linkType: hard "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" - checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 + checksum: 10/9d226461c1e91e95f067be2bdc5e6f99cfe55a721f45afb44122e23e4b8602eeac4ff7325af6b5a369f36396ee1514d3809af3f57769066d80d83790d8e53339 languageName: node linkType: hard @@ -583,9 +583,9 @@ __metadata: version: 0.6.8 resolution: "@confio/ics23@npm:0.6.8" dependencies: - "@noble/hashes": ^1.0.0 - protobufjs: ^6.8.8 - checksum: 376d72f6440db60611b002b00a13e3a5bfd0d3503e7682358dbcf79641e74d8c26c234c321452fb4a758baf66eecef25d950e08bdea270486d9d03ee489e2960 + "@noble/hashes": "npm:^1.0.0" + protobufjs: "npm:^6.8.8" + checksum: 10/5bffe3b9549eafe627aabdad8951c989cecb9d841f9e646ef3c916ae4cd2c582076f937684ff1b686dc67ec7176c82faf15c221dc9c86990cfbfe13c2add9473 languageName: node linkType: hard @@ -593,11 +593,11 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/amino@npm:0.30.1" dependencies: - "@cosmjs/crypto": ^0.30.1 - "@cosmjs/encoding": ^0.30.1 - "@cosmjs/math": ^0.30.1 - "@cosmjs/utils": ^0.30.1 - checksum: aa254f936fd95e146e05cc4d6e51f86f4fe7f2048d337d197ccb2cb6e488f8b8061aa6b21e63b1f7001d99b80417f029ef75a12bd0478749286932834157c5aa + "@cosmjs/crypto": "npm:^0.30.1" + "@cosmjs/encoding": "npm:^0.30.1" + "@cosmjs/math": "npm:^0.30.1" + "@cosmjs/utils": "npm:^0.30.1" + checksum: 10/c80859749aae9d6e971380e50e8a3438d2889caeaa56433d448985710bcbb4da62937a5ce94ceb65afc5d6fc92b7daf3596e7bd9d31c3d76d08dea4beedf191b languageName: node linkType: hard @@ -605,18 +605,18 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/cosmwasm-stargate@npm:0.30.1" dependencies: - "@cosmjs/amino": ^0.30.1 - "@cosmjs/crypto": ^0.30.1 - "@cosmjs/encoding": ^0.30.1 - "@cosmjs/math": ^0.30.1 - "@cosmjs/proto-signing": ^0.30.1 - "@cosmjs/stargate": ^0.30.1 - "@cosmjs/tendermint-rpc": ^0.30.1 - "@cosmjs/utils": ^0.30.1 - cosmjs-types: ^0.7.1 - long: ^4.0.0 - pako: ^2.0.2 - checksum: 1fca3cb1fbe3bc252d6960a98413afafde0281052dfb82c2b977861655d19255a0f7d62a06b4caff4739b43910b527f2614afa827b1a2ab0238f79ae9b4ba873 + "@cosmjs/amino": "npm:^0.30.1" + "@cosmjs/crypto": "npm:^0.30.1" + "@cosmjs/encoding": "npm:^0.30.1" + "@cosmjs/math": "npm:^0.30.1" + "@cosmjs/proto-signing": "npm:^0.30.1" + "@cosmjs/stargate": "npm:^0.30.1" + "@cosmjs/tendermint-rpc": "npm:^0.30.1" + "@cosmjs/utils": "npm:^0.30.1" + cosmjs-types: "npm:^0.7.1" + long: "npm:^4.0.0" + pako: "npm:^2.0.2" + checksum: 10/0abb39b1f4980eb33a0225b0a12e5fcffd6c6b0160fc56cc51f5aae1317884167e94bccf7ddea8aa017c1949c979c792b33aad5e817dac4207dac3e2d0e70bfa languageName: node linkType: hard @@ -624,14 +624,14 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/crypto@npm:0.30.1" dependencies: - "@cosmjs/encoding": ^0.30.1 - "@cosmjs/math": ^0.30.1 - "@cosmjs/utils": ^0.30.1 - "@noble/hashes": ^1 - bn.js: ^5.2.0 - elliptic: ^6.5.4 - libsodium-wrappers: ^0.7.6 - checksum: f1989a5cab92de4ad8c4fef65554b1f65e6c3e8b9ef0d550fa84e5f1aa13286b96a5310a374bcea7d0ebd6b9c46ea69a8469d06275b317a09b9ec7e0a3a07f0e + "@cosmjs/encoding": "npm:^0.30.1" + "@cosmjs/math": "npm:^0.30.1" + "@cosmjs/utils": "npm:^0.30.1" + "@noble/hashes": "npm:^1" + bn.js: "npm:^5.2.0" + elliptic: "npm:^6.5.4" + libsodium-wrappers: "npm:^0.7.6" + checksum: 10/1f52d4b0bd3efa62ffdd4c37c81b52c615f9fd463734f46935de0baa47eac3ba24f30180dec72a18e7596bf190a9e9cd3b781984eb697cbe7dc7e77c591f4e2c languageName: node linkType: hard @@ -639,10 +639,10 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/encoding@npm:0.30.1" dependencies: - base64-js: ^1.3.0 - bech32: ^1.1.4 - readonly-date: ^1.0.0 - checksum: bd1932fafecbf9876ad97dee8133cc955f52d2fd9b6040d8c991b40ba4195c02cb4dc3c4beec7c237217ba96db78cd914840b2b895348482190d459a21c2b6dd + base64-js: "npm:^1.3.0" + bech32: "npm:^1.1.4" + readonly-date: "npm:^1.0.0" + checksum: 10/620b3bd575f370d6c515413bab5d38a02506c2f16cc0a51e64448cafe438b31592873eac8aefe549ef71f9756ac24c6450e43a466e1e9067638f0fee625638c3 languageName: node linkType: hard @@ -650,9 +650,9 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/json-rpc@npm:0.30.1" dependencies: - "@cosmjs/stream": ^0.30.1 - xstream: ^11.14.0 - checksum: 750686d53cd4ee239fd24a41d556ab08307f099c9f7bb633a566af417b0baad0ff954498272b6bdb02d4cad596c7ac8f24e38f0cf25c7fbe6200b539c2f56266 + "@cosmjs/stream": "npm:^0.30.1" + xstream: "npm:^11.14.0" + checksum: 10/9dd3a915f6cc1beff14fee60fe5fe10776f768efa3344d334cd2f332a14c951613ba0da38571e8a3360bc77283d6653b9ced198ae7187cb52bc2769e57754fbd languageName: node linkType: hard @@ -660,8 +660,8 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/math@npm:0.30.1" dependencies: - bn.js: ^5.2.0 - checksum: c13d2a89348407bcc0f737f989fc1eb850b81d1f0ae06f1cc656b9a3194bf9ee048ce2e5c948f6ada61e95f5bfa324fad43dc531ade7538bcf993ba2085cb5fe + bn.js: "npm:^5.2.0" + checksum: 10/bf273c61936d4102a4083c29d6ac445287443b7e62ce700754eb376c0ece11edaa1370cb82288352b497a6779613c85f69fb79961ee46400f2fe0665d18afdda languageName: node linkType: hard @@ -669,14 +669,14 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/proto-signing@npm:0.30.1" dependencies: - "@cosmjs/amino": ^0.30.1 - "@cosmjs/crypto": ^0.30.1 - "@cosmjs/encoding": ^0.30.1 - "@cosmjs/math": ^0.30.1 - "@cosmjs/utils": ^0.30.1 - cosmjs-types: ^0.7.1 - long: ^4.0.0 - checksum: 15e13e33976c0a52e2ef93aec6171e3934543d116a3247d9b51ed495aa9da68dbb13a93a37808c02e4378be20d8ca326902ca721de6d2c9af470d6aa057019f5 + "@cosmjs/amino": "npm:^0.30.1" + "@cosmjs/crypto": "npm:^0.30.1" + "@cosmjs/encoding": "npm:^0.30.1" + "@cosmjs/math": "npm:^0.30.1" + "@cosmjs/utils": "npm:^0.30.1" + cosmjs-types: "npm:^0.7.1" + long: "npm:^4.0.0" + checksum: 10/214871f1c9f2997ec58af278b790cd533a761420ff569bed436b8f43856249d0698645082818470ddcd09f33417d7a945f58ab52d40b2d21656648f57ede11c8 languageName: node linkType: hard @@ -684,11 +684,11 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/socket@npm:0.30.1" dependencies: - "@cosmjs/stream": ^0.30.1 - isomorphic-ws: ^4.0.1 - ws: ^7 - xstream: ^11.14.0 - checksum: ef5e5d7bbcd89b5bfbd6fa4039133e15e5db848e6b0bc812b89872d28d9ced73d8a12fbf6581e6b0b08de28f2c1a9c7b05825804be65eb07d2f3d3532babea91 + "@cosmjs/stream": "npm:^0.30.1" + isomorphic-ws: "npm:^4.0.1" + ws: "npm:^7" + xstream: "npm:^11.14.0" + checksum: 10/2fbee08d34ca2dfed08bbe4282ee600dc6aaa892aec5aa24286e648ef29e64d8e0a003824894e03332202b8ff48b7b08b8726f8d09ad0897437b3d059434ffe7 languageName: node linkType: hard @@ -696,19 +696,19 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/stargate@npm:0.30.1" dependencies: - "@confio/ics23": ^0.6.8 - "@cosmjs/amino": ^0.30.1 - "@cosmjs/encoding": ^0.30.1 - "@cosmjs/math": ^0.30.1 - "@cosmjs/proto-signing": ^0.30.1 - "@cosmjs/stream": ^0.30.1 - "@cosmjs/tendermint-rpc": ^0.30.1 - "@cosmjs/utils": ^0.30.1 - cosmjs-types: ^0.7.1 - long: ^4.0.0 - protobufjs: ~6.11.3 - xstream: ^11.14.0 - checksum: 2eb089c4a7f995b787702d52f22e1c808704cd02c29ec4feee57897d350d9dbde645785e89bf34181da7acd67547dc2b0f17f9f49cfbb0272d70cb7f553a8644 + "@confio/ics23": "npm:^0.6.8" + "@cosmjs/amino": "npm:^0.30.1" + "@cosmjs/encoding": "npm:^0.30.1" + "@cosmjs/math": "npm:^0.30.1" + "@cosmjs/proto-signing": "npm:^0.30.1" + "@cosmjs/stream": "npm:^0.30.1" + "@cosmjs/tendermint-rpc": "npm:^0.30.1" + "@cosmjs/utils": "npm:^0.30.1" + cosmjs-types: "npm:^0.7.1" + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.3" + xstream: "npm:^11.14.0" + checksum: 10/5b1eb882029102fcc7d0021a9c9893c8fdd43de1f8662872b477f47cd719a632a3cc7e32d45857b7e3d1169cba436292d3416067a0e2439dd95218c6617df38f languageName: node linkType: hard @@ -716,8 +716,8 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/stream@npm:0.30.1" dependencies: - xstream: ^11.14.0 - checksum: f9e48a8377c2d3cfbf288fcf4fad745905c042dabc442d2cbb93d4280033e3c8e493a3328f58c0b645b60f9c2188d14603b2bb37a174bc0619686c5e70b13dca + xstream: "npm:^11.14.0" + checksum: 10/f9e48a8377c2d3cfbf288fcf4fad745905c042dabc442d2cbb93d4280033e3c8e493a3328f58c0b645b60f9c2188d14603b2bb37a174bc0619686c5e70b13dca languageName: node linkType: hard @@ -725,24 +725,24 @@ __metadata: version: 0.30.1 resolution: "@cosmjs/tendermint-rpc@npm:0.30.1" dependencies: - "@cosmjs/crypto": ^0.30.1 - "@cosmjs/encoding": ^0.30.1 - "@cosmjs/json-rpc": ^0.30.1 - "@cosmjs/math": ^0.30.1 - "@cosmjs/socket": ^0.30.1 - "@cosmjs/stream": ^0.30.1 - "@cosmjs/utils": ^0.30.1 - axios: ^0.21.2 - readonly-date: ^1.0.0 - xstream: ^11.14.0 - checksum: 6900711886d2d9b02dd9ec17d341a174d7d2a20c432618e96d7f33fa6732dcb77fe21f37c67d452c09095f099260a679a4ac5de0caeec376cd683d3d12790ed8 + "@cosmjs/crypto": "npm:^0.30.1" + "@cosmjs/encoding": "npm:^0.30.1" + "@cosmjs/json-rpc": "npm:^0.30.1" + "@cosmjs/math": "npm:^0.30.1" + "@cosmjs/socket": "npm:^0.30.1" + "@cosmjs/stream": "npm:^0.30.1" + "@cosmjs/utils": "npm:^0.30.1" + axios: "npm:^0.21.2" + readonly-date: "npm:^1.0.0" + xstream: "npm:^11.14.0" + checksum: 10/7bf1fd6b12725cf506bcaefaa4507e7d653b8dfb8faa8eddd83d0db3522308e9de5e0bbe228dabf41d5491e2e1efe32b9eaac4453a9854ead703b882e502ce0c languageName: node linkType: hard "@cosmjs/utils@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/utils@npm:0.30.1" - checksum: 64ea16cdeba64d2b346a0b45ca47059ab4297fdf5c4e5fd89ec262eec488807f49f94dcdc294628142015ce4669c4eaf7426d1f8a6538146da5601dcc484cb19 + checksum: 10/64ea16cdeba64d2b346a0b45ca47059ab4297fdf5c4e5fd89ec262eec488807f49f94dcdc294628142015ce4669c4eaf7426d1f8a6538146da5601dcc484cb19 languageName: node linkType: hard @@ -750,8 +750,8 @@ __metadata: version: 0.8.1 resolution: "@cspotcode/source-map-support@npm:0.8.1" dependencies: - "@jridgewell/trace-mapping": 0.3.9 - checksum: 5718f267085ed8edb3e7ef210137241775e607ee18b77d95aa5bd7514f47f5019aa2d82d96b3bf342ef7aa890a346fa1044532ff7cc3009e7d24fce3ce6200fa + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10/b6e38a1712fab242c86a241c229cf562195aad985d0564bd352ac404be583029e89e93028ffd2c251d2c407ecac5fb0cbdca94a2d5c10f29ac806ede0508b3ff languageName: node linkType: hard @@ -759,10 +759,10 @@ __metadata: version: 2.0.3 resolution: "@dabh/diagnostics@npm:2.0.3" dependencies: - colorspace: 1.1.x - enabled: 2.0.x - kuler: ^2.0.0 - checksum: 4879600c55c8315a0fb85fbb19057bad1adc08f0a080a8cb4e2b63f723c379bfc4283b68123a2b078d367b327dd8df12fcb27464efe791addc0a48b9df6d79a1 + colorspace: "npm:1.1.x" + enabled: "npm:2.0.x" + kuler: "npm:^2.0.0" + checksum: 10/14e449a7f42f063f959b472f6ce02d16457a756e852a1910aaa831b63fc21d86f6c32b2a1aa98a4835b856548c926643b51062d241fb6e9b2b7117996053e6b9 languageName: node linkType: hard @@ -770,21 +770,21 @@ __metadata: version: 1.6.5 resolution: "@discordjs/builders@npm:1.6.5" dependencies: - "@discordjs/formatters": ^0.3.2 - "@discordjs/util": ^1.0.1 - "@sapphire/shapeshift": ^3.9.2 - discord-api-types: 0.37.50 - fast-deep-equal: ^3.1.3 - ts-mixer: ^6.0.3 - tslib: ^2.6.1 - checksum: 9c5c4d483a79a7c2f73d661433365f2996ae3bc74f95b70a2a31a26b582b7327d45217a78dfe8e304737661731690ef6e34ade7575f63fe8ab61d70ca53b2279 + "@discordjs/formatters": "npm:^0.3.2" + "@discordjs/util": "npm:^1.0.1" + "@sapphire/shapeshift": "npm:^3.9.2" + discord-api-types: "npm:0.37.50" + fast-deep-equal: "npm:^3.1.3" + ts-mixer: "npm:^6.0.3" + tslib: "npm:^2.6.1" + checksum: 10/f125a034f92d1074afee085ade0613e6e751829f1d005332e06091a39107a15f494ee2a9a7f66ef8accaae01d0fe65871fafb606730a624a2ce2409ba5ea9352 languageName: node linkType: hard "@discordjs/collection@npm:^1.5.3": version: 1.5.3 resolution: "@discordjs/collection@npm:1.5.3" - checksum: fefed19bea0f69053d195f9d9dc8af07ca5d8c9b1064581e0aa14bda2b70e632b93c164d5ef3e4910f5442369612ff4eec8d52a700aec562510c19b223f67023 + checksum: 10/770d0576612555c848858ead2a6c6242252f51ae3a7a6fdcc4986ceeb330ed8cffb81bcd1819e1ef11cce946cb9e707791926e757985cc2e081e984012c08dad languageName: node linkType: hard @@ -792,8 +792,8 @@ __metadata: version: 0.3.2 resolution: "@discordjs/formatters@npm:0.3.2" dependencies: - discord-api-types: 0.37.50 - checksum: 653c88595fc6c25c1beedcd88b05a3f1241fef69844cc96e45f2cd34fea9ff07892c7f3b57edb4008ad59f7e62bca1b7b35400c6200b07ed42eef7189672d509 + discord-api-types: "npm:0.37.50" + checksum: 10/1f49ee99763b97848a12a21b7c7b927de134f373fabfe2eef4ececf10591ee771f16d7d089c41325ca34874f98fb928c5cad9a46ad988d53453ddda1acf79f73 languageName: node linkType: hard @@ -801,23 +801,23 @@ __metadata: version: 2.0.1 resolution: "@discordjs/rest@npm:2.0.1" dependencies: - "@discordjs/collection": ^1.5.3 - "@discordjs/util": ^1.0.1 - "@sapphire/async-queue": ^1.5.0 - "@sapphire/snowflake": ^3.5.1 - "@vladfrangu/async_event_emitter": ^2.2.2 - discord-api-types: 0.37.50 - magic-bytes.js: ^1.0.15 - tslib: ^2.6.1 - undici: 5.22.1 - checksum: 36e33489293956e6356e68d69857c2ea910aa376be8c530d6aa640f5887d119d2c0abb736b427353bbdad92c534917fd38adb3a8529c87bdd010c75017ae6b27 + "@discordjs/collection": "npm:^1.5.3" + "@discordjs/util": "npm:^1.0.1" + "@sapphire/async-queue": "npm:^1.5.0" + "@sapphire/snowflake": "npm:^3.5.1" + "@vladfrangu/async_event_emitter": "npm:^2.2.2" + discord-api-types: "npm:0.37.50" + magic-bytes.js: "npm:^1.0.15" + tslib: "npm:^2.6.1" + undici: "npm:5.22.1" + checksum: 10/46112af4e701b542f94515798d3af27714dfd59ee833d0315f1723cf8f8206cbcee953801913513c583a09f4d9c3702e8ba8f9cad575c7b527c01a60a1987b9b languageName: node linkType: hard "@discordjs/util@npm:^1.0.1": version: 1.0.1 resolution: "@discordjs/util@npm:1.0.1" - checksum: b55d5284cd8306b0e77a303c41fa99dcc650babaf9ef2f02ea38b1f8ecc7218a7694128714343379dbf6b2a402a0851e00862c0d974ad07b8e980722f5139d73 + checksum: 10/1ff9857fb34ea35879a3b58ff9804e8e26204d67831543c5a8256c78da93e51b23fd2b5f08e96933349621270be30fee0b31a148f18aa3313f035086f656e7fc languageName: node linkType: hard @@ -825,16 +825,16 @@ __metadata: version: 1.0.1 resolution: "@discordjs/ws@npm:1.0.1" dependencies: - "@discordjs/collection": ^1.5.3 - "@discordjs/rest": ^2.0.1 - "@discordjs/util": ^1.0.1 - "@sapphire/async-queue": ^1.5.0 - "@types/ws": ^8.5.5 - "@vladfrangu/async_event_emitter": ^2.2.2 - discord-api-types: 0.37.50 - tslib: ^2.6.1 - ws: ^8.13.0 - checksum: d34f17646606dbac82989c3aa3fddd1e2a23da532b96f1fc130a0ddb6735079523f09a70b560b315f3e6634b6336accc48680539e4c62cf34826d79c6304778a + "@discordjs/collection": "npm:^1.5.3" + "@discordjs/rest": "npm:^2.0.1" + "@discordjs/util": "npm:^1.0.1" + "@sapphire/async-queue": "npm:^1.5.0" + "@types/ws": "npm:^8.5.5" + "@vladfrangu/async_event_emitter": "npm:^2.2.2" + discord-api-types: "npm:0.37.50" + tslib: "npm:^2.6.1" + ws: "npm:^8.13.0" + checksum: 10/3ab60abd9a39d7fe8c2d8f64e1835355ebc7b91933d7281248fa076c26b329e255a014fc56d7df565d4e0fcf8222c4e7e5784a68832a44be3b7f2638fd619c92 languageName: node linkType: hard @@ -842,11 +842,11 @@ __metadata: version: 0.33.2 resolution: "@effect/schema@npm:0.33.2" dependencies: - fast-check: ^3.12.0 + fast-check: "npm:^3.12.0" peerDependencies: "@effect/data": ^0.17.1 "@effect/io": ^0.38.0 - checksum: 066b90505d63d12537798cd589dcabab708213313b6f3e13faa933826fafabddb85ecd2c9e95745f7b5f90b9c3a276f14639e9a1fe6a57b1399ccd3500ef6719 + checksum: 10/196a242650ce8d1e1e549d2bf3645aa9ce0b256d436b8dd4319d50fdda13772a92bbdfb5cd3e049cbd5ba685c46de4382b81feadcfb90adca4c4362a58f0c1cb languageName: node linkType: hard @@ -854,12 +854,12 @@ __metadata: version: 4.0.10 resolution: "@ethereum-waffle/chai@npm:4.0.10" dependencies: - "@ethereum-waffle/provider": 4.0.5 - debug: ^4.3.4 - json-bigint: ^1.0.0 + "@ethereum-waffle/provider": "npm:4.0.5" + debug: "npm:^4.3.4" + json-bigint: "npm:^1.0.0" peerDependencies: ethers: "*" - checksum: 11a2fa51224e98ee4cbf346a731be68b17b3c172e68391b25fc0027545d7477dbeca916bbd10be0fa9de612eaed6115a0578f9d3e312e9fe95af2b7791fd0981 + checksum: 10/08ddda98e5128dc3106ec02743d05bb6ea0a4e3848c66561e200ee34236763316f21579807da252c5c8653b7b018f84945a73a914fed90195f67935e4f528b03 languageName: node linkType: hard @@ -867,18 +867,18 @@ __metadata: version: 4.0.3 resolution: "@ethereum-waffle/compiler@npm:4.0.3" dependencies: - "@resolver-engine/imports": ^0.3.3 - "@resolver-engine/imports-fs": ^0.3.3 - "@typechain/ethers-v5": ^10.0.0 - "@types/mkdirp": ^0.5.2 - "@types/node-fetch": ^2.6.1 - mkdirp: ^0.5.1 - node-fetch: ^2.6.7 + "@resolver-engine/imports": "npm:^0.3.3" + "@resolver-engine/imports-fs": "npm:^0.3.3" + "@typechain/ethers-v5": "npm:^10.0.0" + "@types/mkdirp": "npm:^0.5.2" + "@types/node-fetch": "npm:^2.6.1" + mkdirp: "npm:^0.5.1" + node-fetch: "npm:^2.6.7" peerDependencies: ethers: "*" solc: "*" typechain: ^8.0.0 - checksum: ec7839b0f79a40a77fa05bb6941e00b2b3b1e0aa5514a617400c988b302bbbc5e9373b25ba52c7319bb00b83923dce42011384883c7a234c52f8c44eb5b571fc + checksum: 10/8bf11bc8d47ea2e7691bc7295f66592b16a603a75753ad31e4647a716aadffa673f1f45cf546a9c2d81dade427f2d6484e614cfd7a0383dc82443ba572a3b325 languageName: node linkType: hard @@ -889,7 +889,7 @@ __metadata: "@ensdomains/ens": ^0.4.4 "@ensdomains/resolver": ^0.2.4 ethers: "*" - checksum: 84435c3dda78c416b332c481cfa9322f5bf06168d5887607d320cb30f20283ccde52eabd18adb5791485125d44d99ff7b5f84bd7bbdb1fde86465abb40a81966 + checksum: 10/5d0b6c03013a858cf4ae98169af0416fe407306ba82032b611ef1501e0e5425cb77d407e16e37660a1188be5f3343a4540f3f8052fb1a21d63f6e8f9a62e70b2 languageName: node linkType: hard @@ -898,7 +898,7 @@ __metadata: resolution: "@ethereum-waffle/mock-contract@npm:4.0.4" peerDependencies: ethers: "*" - checksum: 45bea2ba4615a0bb81692c3d647ad39c2c37fcf250b577aeb6c5aad03fd4d0912d8d9ef5de638ab276ece1eb9ca1d09d23ed297d96da683fe34e0b01ba631da9 + checksum: 10/94e55ded4d67c651a4f55c11fde3fb8751f35904316bff14fa09cfb3d97fdf33b615ec3422d2444502373262039998638d21f93eda67b1bdbb11c9f2f01f215d languageName: node linkType: hard @@ -906,13 +906,13 @@ __metadata: version: 4.0.5 resolution: "@ethereum-waffle/provider@npm:4.0.5" dependencies: - "@ethereum-waffle/ens": 4.0.3 - "@ganache/ethereum-options": 0.1.4 - debug: ^4.3.4 - ganache: 7.4.3 + "@ethereum-waffle/ens": "npm:4.0.3" + "@ganache/ethereum-options": "npm:0.1.4" + debug: "npm:^4.3.4" + ganache: "npm:7.4.3" peerDependencies: ethers: "*" - checksum: b1282ea28cbfba05343cc101bceab3f72fdd9ed391f7c7e0f252aead81aec46b6a0ab7d7ca8504e080e306d6554c21e5420765965d92ed5b303a12543dc85cf4 + checksum: 10/3e4b7773b7856759d034f714f0eeadd1fdbaea278c935671f8871fe7fe2f3df123be724512489e52a81696e6e690a069a9551e4e6e9255e6dba6638e108b8511 languageName: node linkType: hard @@ -920,11 +920,11 @@ __metadata: version: 3.6.3 resolution: "@ethereumjs/block@npm:3.6.3" dependencies: - "@ethereumjs/common": ^2.6.5 - "@ethereumjs/tx": ^3.5.2 - ethereumjs-util: ^7.1.5 - merkle-patricia-tree: ^4.2.4 - checksum: d08c78134d15bc09c08b9a355ab736faa0f6b04ab87d2962e60df9c8bf977ebc68fe10aec6ca50bc2486532f489d7968fb5046defcd839b3b5ce28ca9dbce40f + "@ethereumjs/common": "npm:^2.6.5" + "@ethereumjs/tx": "npm:^3.5.2" + ethereumjs-util: "npm:^7.1.5" + merkle-patricia-tree: "npm:^4.2.4" + checksum: 10/ea07808774d44eb1059ebbf4c792fadaeb1d8e341e87638ff0474facbb7f4667d40a6727bc1959f3542af2282ded32d47397d33b258f07c0eee64ff5bd0ed801 languageName: node linkType: hard @@ -932,15 +932,15 @@ __metadata: version: 5.5.3 resolution: "@ethereumjs/blockchain@npm:5.5.3" dependencies: - "@ethereumjs/block": ^3.6.2 - "@ethereumjs/common": ^2.6.4 - "@ethereumjs/ethash": ^1.1.0 - debug: ^4.3.3 - ethereumjs-util: ^7.1.5 - level-mem: ^5.0.1 - lru-cache: ^5.1.1 - semaphore-async-await: ^1.5.1 - checksum: eeefb4735ac06e6fe5ec5457eb9ac7aa26ced8651093d05067aee264f23704d79eacb1b2742e0651b73d2528aa8a9a40f3cc9e479f1837253c2dbb784a7a8e59 + "@ethereumjs/block": "npm:^3.6.2" + "@ethereumjs/common": "npm:^2.6.4" + "@ethereumjs/ethash": "npm:^1.1.0" + debug: "npm:^4.3.3" + ethereumjs-util: "npm:^7.1.5" + level-mem: "npm:^5.0.1" + lru-cache: "npm:^5.1.1" + semaphore-async-await: "npm:^1.5.1" + checksum: 10/8f2bd623880433599ab8789c43bc1056574be332cfbef094e192696ff8ab4aee91c8a7002d89df754675885ddc68d907b6e3a0470b2472398e57bade62327bba languageName: node linkType: hard @@ -948,9 +948,9 @@ __metadata: version: 2.5.0 resolution: "@ethereumjs/common@npm:2.5.0" dependencies: - crc-32: ^1.2.0 - ethereumjs-util: ^7.1.1 - checksum: f08830c5b86f215e5bd9b80c7202beeeacfcd6094e493efb1cad75dd9d4605bae6c3d4a991447fc14e494c6c4ce99ea41f77e2032f3a9e1976f44308d3757ea7 + crc-32: "npm:^1.2.0" + ethereumjs-util: "npm:^7.1.1" + checksum: 10/8fba3e67b184f040d0f7630be84315d2738e3e322fc3559e00a5083b790e85433d5ea6b98833bc802eb2c8569f97a0166ffb2a592eeb09e942c0de9262a8c346 languageName: node linkType: hard @@ -958,9 +958,9 @@ __metadata: version: 2.6.0 resolution: "@ethereumjs/common@npm:2.6.0" dependencies: - crc-32: ^1.2.0 - ethereumjs-util: ^7.1.3 - checksum: f1e775f0d3963011f84cd6f6de985b342064331c8fd41bc81a6497abe959078704bf4febd8c59a3fc51c3527b1261441436d55d032f85f0453ff1af4a8dbccb3 + crc-32: "npm:^1.2.0" + ethereumjs-util: "npm:^7.1.3" + checksum: 10/f287a672e7fff416b27a4660502268a9b0ae4cea20056a770af0bd744138dd0e4369dc01ddf1d857bca6d2033e04a893862e4dbca64b97f2f05940bb9f1e27ce languageName: node linkType: hard @@ -968,9 +968,9 @@ __metadata: version: 2.6.5 resolution: "@ethereumjs/common@npm:2.6.5" dependencies: - crc-32: ^1.2.0 - ethereumjs-util: ^7.1.5 - checksum: 0143386f267ef01b7a8bb1847596f964ad58643c084e5fd8e3a0271a7bf8428605dbf38cbb92c84f6622080ad095abeb765f178c02d86ec52abf9e8a4c0e4ecf + crc-32: "npm:^1.2.0" + ethereumjs-util: "npm:^7.1.5" + checksum: 10/e931e16cafc908b086492ca5fcbb1820fff3edfb83cfd4ae48002517b3be0d1f7622c750874b3b347c122d06372e133ddae44ac129b5ba141f68808a79430135 languageName: node linkType: hard @@ -978,12 +978,12 @@ __metadata: version: 1.1.0 resolution: "@ethereumjs/ethash@npm:1.1.0" dependencies: - "@ethereumjs/block": ^3.5.0 - "@types/levelup": ^4.3.0 - buffer-xor: ^2.0.1 - ethereumjs-util: ^7.1.1 - miller-rabin: ^4.0.0 - checksum: 152bc0850eeb0f2507383ca005418697b0a6a4487b120d7b3fadae4cb3b4781403c96c01f0c47149031431e518fb174c284ff38806b457f86f00c500eb213df3 + "@ethereumjs/block": "npm:^3.5.0" + "@types/levelup": "npm:^4.3.0" + buffer-xor: "npm:^2.0.1" + ethereumjs-util: "npm:^7.1.1" + miller-rabin: "npm:^4.0.0" + checksum: 10/7d173f8a53c92d672054b5ff598b6661f57087fe12833215b25ce48deae1386e5e8166ad01b99227b127ef25d50625dbdb629472ea2283bdb6f504c07fbfbe7d languageName: node linkType: hard @@ -991,9 +991,9 @@ __metadata: version: 3.3.2 resolution: "@ethereumjs/tx@npm:3.3.2" dependencies: - "@ethereumjs/common": ^2.5.0 - ethereumjs-util: ^7.1.2 - checksum: e18c871fa223fcb23af1c3dde0ff9c82c91e962556fd531e1c75df63afb3941dd71e3def733d8c442a80224c6dcefb256f169cc286176e6ffb33c19349189c53 + "@ethereumjs/common": "npm:^2.5.0" + ethereumjs-util: "npm:^7.1.2" + checksum: 10/9d88b9627b9c6a465b931ddba7a6aa4a124d3662c91f5f6658be1ad11fefd7f7429042feb47f5676854300a8cb3e107184154d1123d7292a92938afc057b58de languageName: node linkType: hard @@ -1001,9 +1001,9 @@ __metadata: version: 3.4.0 resolution: "@ethereumjs/tx@npm:3.4.0" dependencies: - "@ethereumjs/common": ^2.6.0 - ethereumjs-util: ^7.1.3 - checksum: 381cbb872edb0ae83a56bf5d5657ac4f594f43ca0956b6577fb762840033081252345d67151d4feafde3f97caaab9a9826348780553c05d5a8ca2984259ad555 + "@ethereumjs/common": "npm:^2.6.0" + ethereumjs-util: "npm:^7.1.3" + checksum: 10/25f1773251fcfe07c148f7ee958a8fcefe105ba565a99e57128bb2259eab79a1ab0fbb8cf9ef7f1d68bb63c04be231be9ee2908ad975b74357f33b7fe6b0dde4 languageName: node linkType: hard @@ -1011,9 +1011,9 @@ __metadata: version: 3.5.2 resolution: "@ethereumjs/tx@npm:3.5.2" dependencies: - "@ethereumjs/common": ^2.6.4 - ethereumjs-util: ^7.1.5 - checksum: a34a7228a623b40300484d15875b9f31f0a612cfeab64a845f6866cf0bfe439519e9455ac6396149f29bc527cf0ee277ace082ae013a1075dcbf7193220a0146 + "@ethereumjs/common": "npm:^2.6.4" + ethereumjs-util: "npm:^7.1.5" + checksum: 10/891e12738206229ac428685536844f7765e8547ae794462b1e406399445bf1f6f918af6ebc33ee5fa4a1340f14f48871a579f11c0e1d7c142ba0dd525bae5df5 languageName: node linkType: hard @@ -1021,19 +1021,19 @@ __metadata: version: 5.6.0 resolution: "@ethereumjs/vm@npm:5.6.0" dependencies: - "@ethereumjs/block": ^3.6.0 - "@ethereumjs/blockchain": ^5.5.0 - "@ethereumjs/common": ^2.6.0 - "@ethereumjs/tx": ^3.4.0 - async-eventemitter: ^0.2.4 - core-js-pure: ^3.0.1 - debug: ^2.2.0 - ethereumjs-util: ^7.1.3 - functional-red-black-tree: ^1.0.1 - mcl-wasm: ^0.7.1 - merkle-patricia-tree: ^4.2.2 - rustbn.js: ~0.2.0 - checksum: 67f803f7dc851aeed9996cdab6751dc3f7565146ff8a24982526d33a07c173e84dd449b2fbb9202a479c7446b628105af41465b75c1f9143e1e68cf573fed4c3 + "@ethereumjs/block": "npm:^3.6.0" + "@ethereumjs/blockchain": "npm:^5.5.0" + "@ethereumjs/common": "npm:^2.6.0" + "@ethereumjs/tx": "npm:^3.4.0" + async-eventemitter: "npm:^0.2.4" + core-js-pure: "npm:^3.0.1" + debug: "npm:^2.2.0" + ethereumjs-util: "npm:^7.1.3" + functional-red-black-tree: "npm:^1.0.1" + mcl-wasm: "npm:^0.7.1" + merkle-patricia-tree: "npm:^4.2.2" + rustbn.js: "npm:~0.2.0" + checksum: 10/0a54180af307633568fc00cb9c4f92a28d7979ee1d8316d6f998c4c3bb567762f9893a1d84744b1700d1d3da1564bb12b3c205c45d42b45fe9ad2e92805acaeb languageName: node linkType: hard @@ -1041,19 +1041,19 @@ __metadata: version: 5.9.3 resolution: "@ethereumjs/vm@npm:5.9.3" dependencies: - "@ethereumjs/block": ^3.6.3 - "@ethereumjs/blockchain": ^5.5.3 - "@ethereumjs/common": ^2.6.5 - "@ethereumjs/tx": ^3.5.2 - async-eventemitter: ^0.2.4 - core-js-pure: ^3.0.1 - debug: ^4.3.3 - ethereumjs-util: ^7.1.5 - functional-red-black-tree: ^1.0.1 - mcl-wasm: ^0.7.1 - merkle-patricia-tree: ^4.2.4 - rustbn.js: ~0.2.0 - checksum: c5b4f85044342072ca009d8a26085f33764637492618522307a699a19123a3e18d36ff67126f8ab382cacf91cc94f5cabb8978e2ba9c5b2bf2ffdf20fe641e47 + "@ethereumjs/block": "npm:^3.6.3" + "@ethereumjs/blockchain": "npm:^5.5.3" + "@ethereumjs/common": "npm:^2.6.5" + "@ethereumjs/tx": "npm:^3.5.2" + async-eventemitter: "npm:^0.2.4" + core-js-pure: "npm:^3.0.1" + debug: "npm:^4.3.3" + ethereumjs-util: "npm:^7.1.5" + functional-red-black-tree: "npm:^1.0.1" + mcl-wasm: "npm:^0.7.1" + merkle-patricia-tree: "npm:^4.2.4" + rustbn.js: "npm:~0.2.0" + checksum: 10/6fd6ad8da0081abbe0874bf5cf49f0e356c1cc2a5cbbd1b177cbdbd11c92097068ba8ee7dbac1877766a2708b9fd285b9c6203e5860674745bb2bf1e09cb0a3c languageName: node linkType: hard @@ -1061,16 +1061,16 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/abi@npm:5.7.0" dependencies: - "@ethersproject/address": ^5.7.0 - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/constants": ^5.7.0 - "@ethersproject/hash": ^5.7.0 - "@ethersproject/keccak256": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/strings": ^5.7.0 - checksum: bc6962bb6cb854e4d2a4d65b2c49c716477675b131b1363312234bdbb7e19badb7d9ce66f4ca2a70ae2ea84f7123dbc4e300a1bfe5d58864a7eafabc1466627e + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10/6ed002cbc61a7e21bc0182702345659c1984f6f8e6bad166e43aee76ea8f74766dd0f6236574a868e1b4600af27972bf25b973fae7877ae8da3afa90d3965cac languageName: node linkType: hard @@ -1078,14 +1078,14 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/abstract-provider@npm:5.7.0" dependencies: - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/networks": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/transactions": ^5.7.0 - "@ethersproject/web": ^5.7.0 - checksum: 74cf4696245cf03bb7cc5b6cbf7b4b89dd9a79a1c4688126d214153a938126d4972d42c93182198653ce1de35f2a2cad68be40337d4774b3698a39b28f0228a8 + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/networks": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/web": "npm:^5.7.0" + checksum: 10/c03e413a812486002525f4036bf2cb90e77a19b98fa3d16279e28e0a05520a1085690fac2ee9f94b7931b9a803249ff8a8bbb26ff8dee52196a6ef7a3fc5edc5 languageName: node linkType: hard @@ -1093,12 +1093,12 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/abstract-signer@npm:5.7.0" dependencies: - "@ethersproject/abstract-provider": ^5.7.0 - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - checksum: a823dac9cfb761e009851050ebebd5b229d1b1cc4a75b125c2da130ff37e8218208f7f9d1386f77407705b889b23d4a230ad67185f8872f083143e0073cbfbe3 + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + checksum: 10/0a6ffade0a947c9ba617048334e1346838f394d1d0a5307ac435a0c63ed1033b247e25ffb0cd6880d7dcf5459581f52f67e3804ebba42ff462050f1e4321ba0c languageName: node linkType: hard @@ -1106,12 +1106,12 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/address@npm:5.7.0" dependencies: - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/keccak256": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/rlp": ^5.7.0 - checksum: 64ea5ebea9cc0e845c413e6cb1e54e157dd9fc0dffb98e239d3a3efc8177f2ff798cd4e3206cf3660ee8faeb7bef1a47dc0ebef0d7b132c32e61e550c7d4c843 + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + checksum: 10/1ac4f3693622ed9fbbd7e966a941ec1eba0d9445e6e8154b1daf8e93b8f62ad91853d1de5facf4c27b41e6f1e47b94a317a2492ba595bee1841fd3030c3e9a27 languageName: node linkType: hard @@ -1119,8 +1119,8 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/base64@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - checksum: 7dd5d734d623582f08f665434f53685041a3d3b334a0e96c0c8afa8bbcaab934d50e5b6b980e826a8fde8d353e0b18f11e61faf17468177274b8e7c69cd9742b + "@ethersproject/bytes": "npm:^5.7.0" + checksum: 10/7105105f401e1c681e61db1e9da1b5960d8c5fbd262bbcacc99d61dbb9674a9db1181bb31903d98609f10e8a0eb64c850475f3b040d67dea953e2b0ac6380e96 languageName: node linkType: hard @@ -1128,9 +1128,9 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/basex@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - checksum: 326087b7e1f3787b5fe6cd1cf2b4b5abfafbc355a45e88e22e5e9d6c845b613ffc5301d629b28d5c4d5e2bfe9ec424e6782c804956dff79be05f0098cb5817de + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + checksum: 10/840e333e109bff2fcf8d91dcfd45fa951835844ef0e1ba710037e87291c7b5f3c189ba86f6cee2ca7de2ede5b7d59fbb930346607695855bee20d2f9f63371ef languageName: node linkType: hard @@ -1138,10 +1138,10 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/bignumber@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - bn.js: ^5.2.1 - checksum: 8c9a134b76f3feb4ec26a5a27379efb4e156b8fb2de0678a67788a91c7f4e30abe9d948638458e4b20f2e42380da0adacc7c9389d05fce070692edc6ae9b4904 + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + bn.js: "npm:^5.2.1" + checksum: 10/09cffa18a9f0730856b57c14c345bd68ba451159417e5aff684a8808011cd03b27b7c465d423370333a7d1c9a621392fc74f064a3b02c9edc49ebe497da6d45d languageName: node linkType: hard @@ -1149,8 +1149,8 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/bytes@npm:5.7.0" dependencies: - "@ethersproject/logger": ^5.7.0 - checksum: 66ad365ceaab5da1b23b72225c71dce472cf37737af5118181fa8ab7447d696bea15ca22e3a0e8836fdd8cfac161afe321a7c67d0dde96f9f645ddd759676621 + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10/8b3ffedb68c1a82cfb875e9738361409cc33e2dcb1286b6ccfdc4dd8dd0317f7eacc8937b736c467d213dffc44b469690fe1a951e901953d5a90c5af2b675ae4 languageName: node linkType: hard @@ -1158,8 +1158,8 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/constants@npm:5.7.0" dependencies: - "@ethersproject/bignumber": ^5.7.0 - checksum: 6d4b1355747cce837b3e76ec3bde70e4732736f23b04f196f706ebfa5d4d9c2be50904a390d4d40ce77803b98d03d16a9b6898418e04ba63491933ce08c4ba8a + "@ethersproject/bignumber": "npm:^5.7.0" + checksum: 10/6d4b1355747cce837b3e76ec3bde70e4732736f23b04f196f706ebfa5d4d9c2be50904a390d4d40ce77803b98d03d16a9b6898418e04ba63491933ce08c4ba8a languageName: node linkType: hard @@ -1167,17 +1167,17 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/contracts@npm:5.7.0" dependencies: - "@ethersproject/abi": ^5.7.0 - "@ethersproject/abstract-provider": ^5.7.0 - "@ethersproject/abstract-signer": ^5.7.0 - "@ethersproject/address": ^5.7.0 - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/constants": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/transactions": ^5.7.0 - checksum: 6ccf1121cba01b31e02f8c507cb971ab6bfed85706484a9ec09878ef1594a62215f43c4fdef8f4a4875b99c4a800bc95e3be69b1803f8ce479e07634b5a740c0 + "@ethersproject/abi": "npm:^5.7.0" + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + checksum: 10/5df66179af242faabea287a83fd2f8f303a4244dc87a6ff802e1e3b643f091451295c8e3d088c7739970b7915a16a581c192d4e007d848f1fdf3cc9e49010053 languageName: node linkType: hard @@ -1185,16 +1185,16 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/hash@npm:5.7.0" dependencies: - "@ethersproject/abstract-signer": ^5.7.0 - "@ethersproject/address": ^5.7.0 - "@ethersproject/base64": ^5.7.0 - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/keccak256": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/strings": ^5.7.0 - checksum: 6e9fa8d14eb08171cd32f17f98cc108ec2aeca74a427655f0d689c550fee0b22a83b3b400fad7fb3f41cf14d4111f87f170aa7905bcbcd1173a55f21b06262ef + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10/d83de3f3a1b99b404a2e7bb503f5cdd90c66a97a32cce1d36b09bb8e3fb7205b96e30ad28e2b9f30083beea6269b157d0c6e3425052bb17c0a35fddfdd1c72a3 languageName: node linkType: hard @@ -1202,19 +1202,19 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/hdnode@npm:5.7.0" dependencies: - "@ethersproject/abstract-signer": ^5.7.0 - "@ethersproject/basex": ^5.7.0 - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/pbkdf2": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/sha2": ^5.7.0 - "@ethersproject/signing-key": ^5.7.0 - "@ethersproject/strings": ^5.7.0 - "@ethersproject/transactions": ^5.7.0 - "@ethersproject/wordlists": ^5.7.0 - checksum: bfe5ca2d89a42de73655f853170ef4766b933c5f481cddad709b3aca18823275b096e572f92d1602a052f80b426edde44ad6b9d028799775a7dad4a5bbed2133 + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/basex": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/pbkdf2": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/wordlists": "npm:^5.7.0" + checksum: 10/2fbe6278c324235afaa88baa5dea24d8674c72b14ad037fe2096134d41025977f410b04fd146e333a1b6cac9482e9de62d6375d1705fd42667543f2d0eb66655 languageName: node linkType: hard @@ -1222,20 +1222,20 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/json-wallets@npm:5.7.0" dependencies: - "@ethersproject/abstract-signer": ^5.7.0 - "@ethersproject/address": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/hdnode": ^5.7.0 - "@ethersproject/keccak256": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/pbkdf2": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/random": ^5.7.0 - "@ethersproject/strings": ^5.7.0 - "@ethersproject/transactions": ^5.7.0 - aes-js: 3.0.0 - scrypt-js: 3.0.1 - checksum: f583458d22db62efaaf94d38dd243482776a45bf90f9f3882fbad5aa0b8fd288b41eb7c1ff8ec0b99c9b751088e43d6173530db64dd33c59f9d8daa8d7ad5aa2 + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hdnode": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/pbkdf2": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + aes-js: "npm:3.0.0" + scrypt-js: "npm:3.0.1" + checksum: 10/4a1ef0912ffc8d18c392ae4e292948d86bffd715fe3dd3e66d1cd21f6c9267aeadad4da84261db853327f97cdfd765a377f9a87e39d4c6749223a69226faf0a1 languageName: node linkType: hard @@ -1243,16 +1243,16 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/keccak256@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - js-sha3: 0.8.0 - checksum: ff70950d82203aab29ccda2553422cbac2e7a0c15c986bd20a69b13606ed8bb6e4fdd7b67b8d3b27d4f841e8222cbaccd33ed34be29f866fec7308f96ed244c6 + "@ethersproject/bytes": "npm:^5.7.0" + js-sha3: "npm:0.8.0" + checksum: 10/ff70950d82203aab29ccda2553422cbac2e7a0c15c986bd20a69b13606ed8bb6e4fdd7b67b8d3b27d4f841e8222cbaccd33ed34be29f866fec7308f96ed244c6 languageName: node linkType: hard "@ethersproject/logger@npm:5.7.0, @ethersproject/logger@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/logger@npm:5.7.0" - checksum: 075ab2f605f1fd0813f2e39c3308f77b44a67732b36e712d9bc085f22a84aac4da4f71b39bee50fe78da3e1c812673fadc41180c9970fe5e486e91ea17befe0d + checksum: 10/683a939f467ae7510deedc23d7611d0932c3046137f5ffb92ba1e3c8cd9cf2fbbaa676b660c248441a0fa9143783137c46d6e6d17d676188dd5a6ef0b72dd091 languageName: node linkType: hard @@ -1260,8 +1260,8 @@ __metadata: version: 5.7.1 resolution: "@ethersproject/networks@npm:5.7.1" dependencies: - "@ethersproject/logger": ^5.7.0 - checksum: 0339f312304c17d9a0adce550edb825d4d2c8c9468c1634c44172c67a9ed256f594da62c4cda5c3837a0f28b7fabc03aca9b492f68ff1fdad337ee861b27bd5d + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10/5265d0b4b72ef91af57be804b44507f4943038d609699764d8a69157ed381e30fe22ebf63630ed8e530ceb220f15d69dae8cda2e5023ccd793285c9d5882e599 languageName: node linkType: hard @@ -1269,9 +1269,9 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/pbkdf2@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/sha2": ^5.7.0 - checksum: b895adb9e35a8a127e794f7aadc31a2424ef355a70e51cde10d457e3e888bb8102373199a540cf61f2d6b9a32e47358f9c65b47d559f42bf8e596b5fd67901e9 + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + checksum: 10/dea7ba747805e24b81dfb99e695eb329509bf5cad1a42e48475ade28e060e567458a3d5bf930f302691bded733fd3fa364f0c7adce920f9f05a5ef8c13267aaa languageName: node linkType: hard @@ -1279,8 +1279,8 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/properties@npm:5.7.0" dependencies: - "@ethersproject/logger": ^5.7.0 - checksum: 6ab0ccf0c3aadc9221e0cdc5306ce6cd0df7f89f77d77bccdd1277182c9ead0202cd7521329ba3acde130820bf8af299e17cf567d0d497c736ee918207bbf59f + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10/f8401a161940aa1c32695115a20c65357877002a6f7dc13ab1600064bf54d7b825b4db49de8dc8da69efcbb0c9f34f8813e1540427e63e262ab841c1bf6c1c1e languageName: node linkType: hard @@ -1288,27 +1288,27 @@ __metadata: version: 5.7.2 resolution: "@ethersproject/providers@npm:5.7.2" dependencies: - "@ethersproject/abstract-provider": ^5.7.0 - "@ethersproject/abstract-signer": ^5.7.0 - "@ethersproject/address": ^5.7.0 - "@ethersproject/base64": ^5.7.0 - "@ethersproject/basex": ^5.7.0 - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/constants": ^5.7.0 - "@ethersproject/hash": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/networks": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/random": ^5.7.0 - "@ethersproject/rlp": ^5.7.0 - "@ethersproject/sha2": ^5.7.0 - "@ethersproject/strings": ^5.7.0 - "@ethersproject/transactions": ^5.7.0 - "@ethersproject/web": ^5.7.0 - bech32: 1.1.4 - ws: 7.4.6 - checksum: 1754c731a5ca6782ae9677f4a9cd8b6246c4ef21a966c9a01b133750f3c578431ec43ec254e699969c4a0f87e84463ded50f96b415600aabd37d2056aee58c19 + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/basex": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/networks": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/web": "npm:^5.7.0" + bech32: "npm:1.1.4" + ws: "npm:7.4.6" + checksum: 10/8534a1896e61b9f0b66427a639df64a5fe76d0c08ec59b9f0cc64fdd1d0cc28d9fc3312838ae8d7817c8f5e2e76b7f228b689bc33d1cbb8e1b9517d4c4f678d8 languageName: node linkType: hard @@ -1316,9 +1316,9 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/random@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - checksum: 017829c91cff6c76470852855108115b0b52c611b6be817ed1948d56ba42d6677803ec2012aa5ae298a7660024156a64c11fcf544e235e239ab3f89f0fff7345 + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10/c23ec447998ce1147651bd58816db4d12dbeb404f66a03d14a13e1edb439879bab18528e1fc46b931502903ac7b1c08ea61d6a86e621a6e060fa63d41aeed3ac languageName: node linkType: hard @@ -1326,9 +1326,9 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/rlp@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - checksum: bce165b0f7e68e4d091c9d3cf47b247cac33252df77a095ca4281d32d5eeaaa3695d9bc06b2b057c5015353a68df89f13a4a54a72e888e4beeabbe56b15dda6e + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10/3b8c5279f7654794d5874569f5598ae6a880e19e6616013a31e26c35c5f586851593a6e85c05ed7b391fbc74a1ea8612dd4d867daefe701bf4e8fcf2ab2f29b9 languageName: node linkType: hard @@ -1336,10 +1336,10 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/sha2@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - hash.js: 1.1.7 - checksum: 09321057c022effbff4cc2d9b9558228690b5dd916329d75c4b1ffe32ba3d24b480a367a7cc92d0f0c0b1c896814d03351ae4630e2f1f7160be2bcfbde435dbc + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + hash.js: "npm:1.1.7" + checksum: 10/09321057c022effbff4cc2d9b9558228690b5dd916329d75c4b1ffe32ba3d24b480a367a7cc92d0f0c0b1c896814d03351ae4630e2f1f7160be2bcfbde435dbc languageName: node linkType: hard @@ -1347,13 +1347,13 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/signing-key@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - bn.js: ^5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 - checksum: 8f8de09b0aac709683bbb49339bc0a4cd2f95598f3546436c65d6f3c3a847ffa98e06d35e9ed2b17d8030bd2f02db9b7bd2e11c5cf8a71aad4537487ab4cf03a + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + bn.js: "npm:^5.2.1" + elliptic: "npm:6.5.4" + hash.js: "npm:1.1.7" + checksum: 10/ff2f79ded86232b139e7538e4aaa294c6022a7aaa8c95a6379dd7b7c10a6d363685c6967c816f98f609581cf01f0a5943c667af89a154a00bcfe093a8c7f3ce7 languageName: node linkType: hard @@ -1361,13 +1361,13 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/solidity@npm:5.7.0" dependencies: - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/keccak256": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/sha2": ^5.7.0 - "@ethersproject/strings": ^5.7.0 - checksum: 9a02f37f801c96068c3e7721f83719d060175bc4e80439fe060e92bd7acfcb6ac1330c7e71c49f4c2535ca1308f2acdcb01e00133129aac00581724c2d6293f3 + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10/9a02f37f801c96068c3e7721f83719d060175bc4e80439fe060e92bd7acfcb6ac1330c7e71c49f4c2535ca1308f2acdcb01e00133129aac00581724c2d6293f3 languageName: node linkType: hard @@ -1375,10 +1375,10 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/strings@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/constants": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - checksum: 5ff78693ae3fdf3cf23e1f6dc047a61e44c8197d2408c42719fef8cb7b7b3613a4eec88ac0ed1f9f5558c74fe0de7ae3195a29ca91a239c74b9f444d8e8b50df + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10/24191bf30e98d434a9fba2f522784f65162d6712bc3e1ccc98ed85c5da5884cfdb5a1376b7695374655a7b95ec1f5fdbeef5afc7d0ea77ffeb78047e9b791fa5 languageName: node linkType: hard @@ -1386,16 +1386,16 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/transactions@npm:5.7.0" dependencies: - "@ethersproject/address": ^5.7.0 - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/constants": ^5.7.0 - "@ethersproject/keccak256": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/rlp": ^5.7.0 - "@ethersproject/signing-key": ^5.7.0 - checksum: a31b71996d2b283f68486241bff0d3ea3f1ba0e8f1322a8fffc239ccc4f4a7eb2ea9994b8fd2f093283fd75f87bae68171e01b6265261f821369aca319884a79 + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + checksum: 10/d809e9d40020004b7de9e34bf39c50377dce8ed417cdf001bfabc81ecb1b7d1e0c808fdca0a339ea05e1b380648eaf336fe70f137904df2d3c3135a38190a5af languageName: node linkType: hard @@ -1403,10 +1403,10 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/units@npm:5.7.0" dependencies: - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/constants": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - checksum: 304714f848cd32e57df31bf545f7ad35c2a72adae957198b28cbc62166daa929322a07bff6e9c9ac4577ab6aa0de0546b065ed1b2d20b19e25748b7d475cb0fc + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10/304714f848cd32e57df31bf545f7ad35c2a72adae957198b28cbc62166daa929322a07bff6e9c9ac4577ab6aa0de0546b065ed1b2d20b19e25748b7d475cb0fc languageName: node linkType: hard @@ -1414,22 +1414,22 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/wallet@npm:5.7.0" dependencies: - "@ethersproject/abstract-provider": ^5.7.0 - "@ethersproject/abstract-signer": ^5.7.0 - "@ethersproject/address": ^5.7.0 - "@ethersproject/bignumber": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/hash": ^5.7.0 - "@ethersproject/hdnode": ^5.7.0 - "@ethersproject/json-wallets": ^5.7.0 - "@ethersproject/keccak256": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/random": ^5.7.0 - "@ethersproject/signing-key": ^5.7.0 - "@ethersproject/transactions": ^5.7.0 - "@ethersproject/wordlists": ^5.7.0 - checksum: a4009bf7331eddab38e3015b5e9101ef92de7f705b00a6196b997db0e5635b6d83561674d46c90c6f77b87c0500fe4a6b0183ba13749efc22db59c99deb82fbd + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/hdnode": "npm:^5.7.0" + "@ethersproject/json-wallets": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/wordlists": "npm:^5.7.0" + checksum: 10/340f8e5c77c6c47c4d1596c200d97c53c1d4b4eb54d9166d0f2a114cb81685e7689255b0627e917fbcdc29cb54c4bd1f1a9909f3096ef9dff9acc0b24972f1c1 languageName: node linkType: hard @@ -1437,12 +1437,12 @@ __metadata: version: 5.7.1 resolution: "@ethersproject/web@npm:5.7.1" dependencies: - "@ethersproject/base64": ^5.7.0 - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/strings": ^5.7.0 - checksum: 7028c47103f82fd2e2c197ce0eecfacaa9180ffeec7de7845b1f4f9b19d84081b7a48227aaddde05a4aaa526af574a9a0ce01cc0fc75e3e371f84b38b5b16b2b + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10/c83b6b3ac40573ddb67b1750bb4cf21ded7d8555be5e53a97c0f34964622fd88de9220a90a118434bae164a2bff3acbdc5ecb990517b5f6dc32bdad7adf604c2 languageName: node linkType: hard @@ -1450,12 +1450,12 @@ __metadata: version: 5.7.0 resolution: "@ethersproject/wordlists@npm:5.7.0" dependencies: - "@ethersproject/bytes": ^5.7.0 - "@ethersproject/hash": ^5.7.0 - "@ethersproject/logger": ^5.7.0 - "@ethersproject/properties": ^5.7.0 - "@ethersproject/strings": ^5.7.0 - checksum: 30eb6eb0731f9ef5faa44bf9c0c6e950bcaaef61e4d2d9ce0ae6d341f4e2d6d1f4ab4f8880bfce03b7aac4b862fb740e1421170cfbf8e2aafc359277d49e6e97 + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10/737fca67ad743a32020f50f5b9e147e5683cfba2692367c1124a5a5538be78515865257b426ec9141daac91a70295e5e21bef7a193b79fe745f1be378562ccaa languageName: node linkType: hard @@ -1463,8 +1463,8 @@ __metadata: version: 0.1.4 resolution: "@ganache/ethereum-address@npm:0.1.4" dependencies: - "@ganache/utils": 0.1.4 - checksum: 0e07102c67aa2c25233e30f8ca359cbd012ad0e0b9580b8e6aff6f87dd46daee89bbc60d9518f2204f36f943e7bd5d20e571646c85e6a68a98784c3ede2ccec0 + "@ganache/utils": "npm:0.1.4" + checksum: 10/7d644282e660d99e4ce6276eb3b2278474ce43085906c3c5241a4ac70730291e5a20fad45c9ef504a311c88b49df26c2d64b9c4832f70ef82e14c15dd4f5538d languageName: node linkType: hard @@ -1472,13 +1472,13 @@ __metadata: version: 0.1.4 resolution: "@ganache/ethereum-options@npm:0.1.4" dependencies: - "@ganache/ethereum-address": 0.1.4 - "@ganache/ethereum-utils": 0.1.4 - "@ganache/options": 0.1.4 - "@ganache/utils": 0.1.4 - bip39: 3.0.4 - seedrandom: 3.0.5 - checksum: 597b32502654ce9f3fec02fdf308f1e6b2c657b5e25c6d4219d71ecbea94e45faa4135c6d4e25cacf1faac1509f2b7546f3d8bbdba1e9121975d820999d3aa76 + "@ganache/ethereum-address": "npm:0.1.4" + "@ganache/ethereum-utils": "npm:0.1.4" + "@ganache/options": "npm:0.1.4" + "@ganache/utils": "npm:0.1.4" + bip39: "npm:3.0.4" + seedrandom: "npm:3.0.5" + checksum: 10/0f34d4c6fd216d3418a601cc0bea3ca392f194a3dcdccc100029a6cbbb54a79c6fc2f18b1faddc6a513eddcdeddc1b7b253eb907e08c25ff0ea79fdcf29ddbf1 languageName: node linkType: hard @@ -1486,16 +1486,16 @@ __metadata: version: 0.1.4 resolution: "@ganache/ethereum-utils@npm:0.1.4" dependencies: - "@ethereumjs/common": 2.6.0 - "@ethereumjs/tx": 3.4.0 - "@ethereumjs/vm": 5.6.0 - "@ganache/ethereum-address": 0.1.4 - "@ganache/rlp": 0.1.4 - "@ganache/utils": 0.1.4 - emittery: 0.10.0 - ethereumjs-abi: 0.6.8 - ethereumjs-util: 7.1.3 - checksum: 74bc7b7fb62e9dc2f114f6f428c465d9365c0bb84c85144d34935d24a2893c5471c8cae263ae4bea51f1335803b6b1771f57c25a276e9c0539a08a90c3289bca + "@ethereumjs/common": "npm:2.6.0" + "@ethereumjs/tx": "npm:3.4.0" + "@ethereumjs/vm": "npm:5.6.0" + "@ganache/ethereum-address": "npm:0.1.4" + "@ganache/rlp": "npm:0.1.4" + "@ganache/utils": "npm:0.1.4" + emittery: "npm:0.10.0" + ethereumjs-abi: "npm:0.6.8" + ethereumjs-util: "npm:7.1.3" + checksum: 10/2335e0a6f0633bb7d518069424a661c3d8867b872457d6c2e0fe325a820ed79f5507b99182f21a9d9f71230ca750e1d5f86164f945e2746a141308af9e48d928 languageName: node linkType: hard @@ -1503,10 +1503,10 @@ __metadata: version: 0.1.4 resolution: "@ganache/options@npm:0.1.4" dependencies: - "@ganache/utils": 0.1.4 - bip39: 3.0.4 - seedrandom: 3.0.5 - checksum: 4f1cda646f5599b18a0eeaf27286499c78c3e2e0eb2541db756c27f2ca16e58539c9db99aab8441e593f9fe586269940d800900f63312fcb10231ab95ebdc3dc + "@ganache/utils": "npm:0.1.4" + bip39: "npm:3.0.4" + seedrandom: "npm:3.0.5" + checksum: 10/c88044e0c491ecf4badd94f2e5ff2a4679c675fb0c34cc72e8210cd4de94cfbad6620a4dc18cfb76064fd34bc94a197e9cfec76f1ecc85461369736ecd08cabf languageName: node linkType: hard @@ -1514,9 +1514,9 @@ __metadata: version: 0.1.4 resolution: "@ganache/rlp@npm:0.1.4" dependencies: - "@ganache/utils": 0.1.4 - rlp: 2.2.6 - checksum: 425c5d4a0a36b834cfac005d05679b3df970a6d8d953f385a5f9bd003a326ba23c1bce06095729879136699b70389d7f2627f939f712ed8897c96e542766771f + "@ganache/utils": "npm:0.1.4" + rlp: "npm:2.2.6" + checksum: 10/f535ccfb5614b81fc1b8279ec882c6d3de7f35195c38b2e9eb639eb2ac035be9c8b97f50bcf5718e17a247ff7238814a114e5a4fb3053984fd8df959f7caf234 languageName: node linkType: hard @@ -1524,28 +1524,28 @@ __metadata: version: 0.1.4 resolution: "@ganache/utils@npm:0.1.4" dependencies: - "@trufflesuite/bigint-buffer": 1.1.9 - emittery: 0.10.0 - keccak: 3.0.1 - seedrandom: 3.0.5 + "@trufflesuite/bigint-buffer": "npm:1.1.9" + emittery: "npm:0.10.0" + keccak: "npm:3.0.1" + seedrandom: "npm:3.0.5" dependenciesMeta: "@trufflesuite/bigint-buffer": optional: true - checksum: c81b7380d56292a44e9cdb0e581d815b9510fb1be87661fe135e2d3611b495f1cd01aa4b91e287bfc28d08d1b4b4210f7b54e32ea28e054faa006cf232fb3dcc + checksum: 10/14ce8163606fd0116107590fb4555e2f6208fd852eea66928a61c8aead7a7647717e75044bb5e461f93e29f718e35193c505cc67c8bdcfe501b7206f0f2cc01f languageName: node linkType: hard "@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 + checksum: 10/052dd232140fa60e81588000cbe729a40146579b361f1070bce63e2a761388a22a16d00beeffc504bd3601cb8e055c57b21a185448b3ed550cf50716f4fd442e languageName: node linkType: hard "@iden3/bigarray@npm:0.0.2": version: 0.0.2 resolution: "@iden3/bigarray@npm:0.0.2" - checksum: a58a4aa75284f7c74ef8a43dd0720764e94389ae4314213f18de9d712fbdb170dd0e9b48672ad297b5f15bd1658d3bff33fe1998e189b48cbf501f1fe78f0adc + checksum: 10/9841e6ef0aaef924aff0bd36adddfd0b9db7e45f6b02ec838adfd0aead8161c0e84e71e5768e2f635f764d1b47a8f3ddf5d352b660730e3c7e6c2f7461727154 languageName: node linkType: hard @@ -1553,9 +1553,9 @@ __metadata: version: 0.0.11 resolution: "@iden3/binfileutils@npm:0.0.11" dependencies: - fastfile: 0.0.20 - ffjavascript: ^0.2.48 - checksum: ca61db1325c7e038c6bd723c856eff5f2c82c76394db09d3350ef4f5b7525e3c9ab1f7429900ff5d3e9d26c5970bf5900e6126ccb5c5caa597c16a47336a6be8 + fastfile: "npm:0.0.20" + ffjavascript: "npm:^0.2.48" + checksum: 10/c9c59e781478d13033d4beb3c574606fae3626e0bd8722c062d0acdb52d3331c4f23a454d8dffa64d436feae530441750cc9469c56085c14089d41e6b13ba9e0 languageName: node linkType: hard @@ -1563,16 +1563,16 @@ __metadata: version: 0.0.8 resolution: "@iden3/binfileutils@npm:0.0.8" dependencies: - fastfile: 0.0.19 - ffjavascript: ^0.2.30 - checksum: b74fc5b99ab88aae041593fea18f605fa921c03f2e52ef3bccd0f5faa36ef396c4c7484cd1167d0412bc2a4b1b69ff29e1fe955761d48dd49edba95761c3aa2d + fastfile: "npm:0.0.19" + ffjavascript: "npm:^0.2.30" + checksum: 10/ef4cd25899febbac9dac29955f97d84f158c234faf313811716f0840d75179c53a7687fac3dc0e1aadd91c7c9155dc1d8e58bd784744a6339d2c7e77741ca9bd languageName: node linkType: hard "@ioredis/commands@npm:^1.1.1": version: 1.2.0 resolution: "@ioredis/commands@npm:1.2.0" - checksum: 9b20225ba36ef3e5caf69b3c0720597c3016cc9b1e157f519ea388f621dd9037177f84cfe7e25c4c32dad7dd90c70ff9123cd411f747e053cf292193c9c461e2 + checksum: 10/a8253c9539b7e5463d4a98e6aa5b1b863fb4a4978191ba9dc42ec2c0fb5179d8d1fe4a29096d5954f91ba9600d1bdc6c1d18b044eab36f645f267fd37d7c0906 languageName: node linkType: hard @@ -1580,19 +1580,19 @@ __metadata: version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" dependencies: - camelcase: ^5.3.1 - find-up: ^4.1.0 - get-package-type: ^0.1.0 - js-yaml: ^3.13.1 - resolve-from: ^5.0.0 - checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10/b000a5acd8d4fe6e34e25c399c8bdbb5d3a202b4e10416e17bfc25e12bab90bb56d33db6089ae30569b52686f4b35ff28ef26e88e21e69821d2b85884bd055b8 languageName: node linkType: hard "@istanbuljs/schema@npm:^0.1.2": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 + checksum: 10/a9b1e49acdf5efc2f5b2359f2df7f90c5c725f2656f16099e8b2cd3a000619ecca9fc48cf693ba789cf0fd989f6e0df6a22bc05574be4223ecdbb7997d04384b languageName: node linkType: hard @@ -1600,13 +1600,13 @@ __metadata: version: 29.7.0 resolution: "@jest/console@npm:29.7.0" dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - slash: ^3.0.0 - checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10/4a80c750e8a31f344233cb9951dee9b77bf6b89377cb131f8b3cde07ff218f504370133a5963f6a786af4d2ce7f85642db206ff7a15f99fe58df4c38ac04899e languageName: node linkType: hard @@ -1614,40 +1614,40 @@ __metadata: version: 29.7.0 resolution: "@jest/core@npm:29.7.0" dependencies: - "@jest/console": ^29.7.0 - "@jest/reporters": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - ci-info: ^3.2.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-changed-files: ^29.7.0 - jest-config: ^29.7.0 - jest-haste-map: ^29.7.0 - jest-message-util: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-resolve-dependencies: ^29.7.0 - jest-runner: ^29.7.0 - jest-runtime: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - jest-watcher: ^29.7.0 - micromatch: ^4.0.4 - pretty-format: ^29.7.0 - slash: ^3.0.0 - strip-ansi: ^6.0.0 + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d + checksum: 10/ab6ac2e562d083faac7d8152ec1cc4eccc80f62e9579b69ed40aedf7211a6b2d57024a6cd53c4e35fd051c39a236e86257d1d99ebdb122291969a0a04563b51e languageName: node linkType: hard @@ -1655,11 +1655,11 @@ __metadata: version: 29.7.0 resolution: "@jest/environment@npm:29.7.0" dependencies: - "@jest/fake-timers": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-mock: ^29.7.0 - checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10/90b5844a9a9d8097f2cf107b1b5e57007c552f64315da8c1f51217eeb0a9664889d3f145cdf8acf23a84f4d8309a6675e27d5b059659a004db0ea9546d1c81a8 languageName: node linkType: hard @@ -1667,8 +1667,8 @@ __metadata: version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" dependencies: - jest-get-type: ^29.6.3 - checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed + jest-get-type: "npm:^29.6.3" + checksum: 10/ef8d379778ef574a17bde2801a6f4469f8022a46a5f9e385191dc73bb1fc318996beaed4513fbd7055c2847227a1bed2469977821866534593a6e52a281499ee languageName: node linkType: hard @@ -1676,9 +1676,9 @@ __metadata: version: 29.7.0 resolution: "@jest/expect@npm:29.7.0" dependencies: - expect: ^29.7.0 - jest-snapshot: ^29.7.0 - checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10/fea6c3317a8da5c840429d90bfe49d928e89c9e89fceee2149b93a11b7e9c73d2f6e4d7cdf647163da938fc4e2169e4490be6bae64952902bc7a701033fd4880 languageName: node linkType: hard @@ -1686,13 +1686,13 @@ __metadata: version: 29.7.0 resolution: "@jest/fake-timers@npm:29.7.0" dependencies: - "@jest/types": ^29.6.3 - "@sinonjs/fake-timers": ^10.0.2 - "@types/node": "*" - jest-message-util: ^29.7.0 - jest-mock: ^29.7.0 - jest-util: ^29.7.0 - checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10/9b394e04ffc46f91725ecfdff34c4e043eb7a16e1d78964094c9db3fde0b1c8803e45943a980e8c740d0a3d45661906de1416ca5891a538b0660481a3a828c27 languageName: node linkType: hard @@ -1700,11 +1700,11 @@ __metadata: version: 29.7.0 resolution: "@jest/globals@npm:29.7.0" dependencies: - "@jest/environment": ^29.7.0 - "@jest/expect": ^29.7.0 - "@jest/types": ^29.6.3 - jest-mock: ^29.7.0 - checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10/97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 languageName: node linkType: hard @@ -1712,36 +1712,36 @@ __metadata: version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@jridgewell/trace-mapping": ^0.3.18 - "@types/node": "*" - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^6.0.0 - istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.1.3 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - jest-worker: ^29.7.0 - slash: ^3.0.0 - string-length: ^4.0.1 - strip-ansi: ^6.0.0 - v8-to-istanbul: ^9.0.1 + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 + checksum: 10/a17d1644b26dea14445cedd45567f4ba7834f980be2ef74447204e14238f121b50d8b858fde648083d2cd8f305f81ba434ba49e37a5f4237a6f2a61180cc73dc languageName: node linkType: hard @@ -1749,8 +1749,8 @@ __metadata: version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" dependencies: - "@sinclair/typebox": ^0.27.8 - checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10/910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 languageName: node linkType: hard @@ -1758,10 +1758,10 @@ __metadata: version: 29.6.3 resolution: "@jest/source-map@npm:29.6.3" dependencies: - "@jridgewell/trace-mapping": ^0.3.18 - callsites: ^3.0.0 - graceful-fs: ^4.2.9 - checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10/bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb languageName: node linkType: hard @@ -1769,11 +1769,11 @@ __metadata: version: 29.7.0 resolution: "@jest/test-result@npm:29.7.0" dependencies: - "@jest/console": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10/c073ab7dfe3c562bff2b8fee6cc724ccc20aa96bcd8ab48ccb2aa309b4c0c1923a9e703cea386bd6ae9b71133e92810475bb9c7c22328fc63f797ad3324ed189 languageName: node linkType: hard @@ -1781,11 +1781,11 @@ __metadata: version: 29.7.0 resolution: "@jest/test-sequencer@npm:29.7.0" dependencies: - "@jest/test-result": ^29.7.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - slash: ^3.0.0 - checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10/4420c26a0baa7035c5419b0892ff8ffe9a41b1583ec54a10db3037cd46a7e29dd3d7202f8aa9d376e9e53be5f8b1bc0d16e1de6880a6d319b033b01dc4c8f639 languageName: node linkType: hard @@ -1793,22 +1793,22 @@ __metadata: version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" dependencies: - "@babel/core": ^7.11.6 - "@jest/types": ^29.6.3 - "@jridgewell/trace-mapping": ^0.3.18 - babel-plugin-istanbul: ^6.1.1 - chalk: ^4.0.0 - convert-source-map: ^2.0.0 - fast-json-stable-stringify: ^2.1.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-util: ^29.7.0 - micromatch: ^4.0.4 - pirates: ^4.0.4 - slash: ^3.0.0 - write-file-atomic: ^4.0.2 - checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10/30f42293545ab037d5799c81d3e12515790bb58513d37f788ce32d53326d0d72ebf5b40f989e6896739aa50a5f77be44686e510966370d58511d5ad2637c68c1 languageName: node linkType: hard @@ -1816,13 +1816,13 @@ __metadata: version: 29.6.3 resolution: "@jest/types@npm:29.6.3" dependencies: - "@jest/schemas": ^29.6.3 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10/f74bf512fd09bbe2433a2ad460b04668b7075235eea9a0c77d6a42222c10a79b9747dc2b2a623f140ed40d6865a2ed8f538f3cbb75169120ea863f29a7ed76cd languageName: node linkType: hard @@ -1830,9 +1830,9 @@ __metadata: version: 0.1.1 resolution: "@jridgewell/gen-mapping@npm:0.1.1" dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc + "@jridgewell/set-array": "npm:^1.0.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10/ba76fae1d8ea52b181474518c705a8eac36405dfc836fb07e9c25730a84d29e05fd6d954f121057742639f3128a24ea45d205c9c989efd464d1114671c19fa6c languageName: node linkType: hard @@ -1840,45 +1840,45 @@ __metadata: version: 0.3.2 resolution: "@jridgewell/gen-mapping@npm:0.3.2" dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 + "@jridgewell/set-array": "npm:^1.0.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10/7ba0070be1aeda7d7694b09d847c3b95879409b26559b9d7e97a88ec94b838fb380df43ae328ee2d2df4d79e75d7afe6ba315199d18d79aa20839ebdfb739420 languageName: node linkType: hard "@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 + checksum: 10/320ceb37af56953757b28e5b90c34556157676d41e3d0a3ff88769274d62373582bb0f0276a4f2d29c3f4fdd55b82b8be5731f52d391ad2ecae9b321ee1c742d languageName: node linkType: hard "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 + checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d languageName: node linkType: hard "@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e + checksum: 10/69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 + checksum: 10/26e768fae6045481a983e48aa23d8fcd23af5da70ebd74b0649000e815e7fbb01ea2bc088c9176b3fffeb9bec02184e58f46125ef3320b30eaa1f4094cfefa38 languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.14": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + checksum: 10/89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09 languageName: node linkType: hard @@ -1886,9 +1886,9 @@ __metadata: version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" dependencies: - "@jridgewell/resolve-uri": ^3.0.3 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: d89597752fd88d3f3480845691a05a44bd21faac18e2185b6f436c3b0fd0c5a859fbbd9aaa92050c4052caf325ad3e10e2e1d1b64327517471b7d51babc0ddef + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10/83deafb8e7a5ca98993c2c6eeaa93c270f6f647a4c0dc00deb38c9cf9b2d3b7bf15e8839540155247ef034a052c0ec4466f980bf0c9e2ab63b97d16c0cedd3ff languageName: node linkType: hard @@ -1896,9 +1896,9 @@ __metadata: version: 0.3.17 resolution: "@jridgewell/trace-mapping@npm:0.3.17" dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 + "@jridgewell/resolve-uri": "npm:3.1.0" + "@jridgewell/sourcemap-codec": "npm:1.4.14" + checksum: 10/790d439c9b271d9fc381dc4a837393ab942920245efedd5db20f65a665c0f778637fa623573337d3241ff784ffdb6724bbadf7fa2b61666bcd4884064b02f113 languageName: node linkType: hard @@ -1906,23 +1906,23 @@ __metadata: version: 0.3.22 resolution: "@jridgewell/trace-mapping@npm:0.3.22" dependencies: - "@jridgewell/resolve-uri": ^3.1.0 - "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: ac7dd2cfe0b479aa1b81776d40d789243131cc792dc8b6b6a028c70fcd6171958ae1a71bf67b618ffe3c0c3feead9870c095ee46a5e30319410d92976b28f498 + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10/48d3e3db00dbecb211613649a1849876ba5544a3f41cf5e6b99ea1130272d6cf18591b5b67389bce20f1c871b4ede5900c3b6446a7aab6d0a3b2fe806a834db7 languageName: node linkType: hard "@lodestar/params@npm:^1.4.1": version: 1.11.3 resolution: "@lodestar/params@npm:1.11.3" - checksum: 40cda13be2d90db6fde1313c858abca7f898f600dc75f1cda9b26dddb581e029283e4b10f3c76176baac7742adf26ff3fb664ffc0f1e5fa49735895178636f2d + checksum: 10/ba5cb729a235c678b15e7e82d284b309e4e1c2ac5539cac0c9c1076cd027a8df5d602e6a6835957321e14912eb9eaa858e958960da6be84c80ea10d4f605e818 languageName: node linkType: hard "@lodestar/params@npm:^1.4.3": version: 1.4.3 resolution: "@lodestar/params@npm:1.4.3" - checksum: c6285dc00dd402e376739198b014c87207b5ce72cea40386ec351d048606dbbed642b1df8557e958ad98e8de1acea80ad206524b4f3e0e4a84b1a7725d248b13 + checksum: 10/579bc3778a59194984bab99c479ba63a259bbca41ce5a2d2ab56f3a01f9784eb3aa6e1e8fe44aa495f9c68b6347e5f6d6cc959000da3c5240db316e743775ed0 languageName: node linkType: hard @@ -1930,9 +1930,9 @@ __metadata: version: 1.4.1 resolution: "@lodestar/types@npm:1.4.1" dependencies: - "@chainsafe/ssz": ^0.9.2 - "@lodestar/params": ^1.4.1 - checksum: 6d61de7480ea0f5023eff10e3c23e8aa96969805d0ee59bdc1487478e79500f585514528e0fb3e12ebb96be812544c1de3f150e53e41f5610b0c29ee03f17688 + "@chainsafe/ssz": "npm:^0.9.2" + "@lodestar/params": "npm:^1.4.1" + checksum: 10/eff689779cf9a93215fb6dc7075b65f860b4147461d57c64aabd2582f1334ee632f1cd3a911d6560b0f0eea8c74c4c52444e2dddb99f8ecfe364cb87c192b726 languageName: node linkType: hard @@ -1940,9 +1940,9 @@ __metadata: version: 1.4.3 resolution: "@lodestar/types@npm:1.4.3" dependencies: - "@chainsafe/ssz": ^0.9.2 - "@lodestar/params": ^1.4.3 - checksum: de54c714f335d6c70ba2cacdc4957142b854fbcc47b0bf543e4274c6e49b8d4180ad3003c25a1733f7ef2951782374b5a243f0623d90c92fba998af1263a0955 + "@chainsafe/ssz": "npm:^0.9.2" + "@lodestar/params": "npm:^1.4.3" + checksum: 10/c90fca37d54a8bd6fda67a5deff2c9cba2242d2beade4a7f25d2c94bc7a67d2399d1a03372561ebe8bb40c867d2fe0adece415275ec99d7e0da6289a53e86731 languageName: node linkType: hard @@ -1950,18 +1950,18 @@ __metadata: version: 1.0.10 resolution: "@mapbox/node-pre-gyp@npm:1.0.10" dependencies: - detect-libc: ^2.0.0 - https-proxy-agent: ^5.0.0 - make-dir: ^3.1.0 - node-fetch: ^2.6.7 - nopt: ^5.0.0 - npmlog: ^5.0.1 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.11 + detect-libc: "npm:^2.0.0" + https-proxy-agent: "npm:^5.0.0" + make-dir: "npm:^3.1.0" + node-fetch: "npm:^2.6.7" + nopt: "npm:^5.0.0" + npmlog: "npm:^5.0.1" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.11" bin: node-pre-gyp: bin/node-pre-gyp - checksum: 1a98db05d955b74dad3814679593df293b9194853698f3f5f1ed00ecd93128cdd4b14fb8767fe44ac6981ef05c23effcfdc88710e7c1de99ccb6f647890597c8 + checksum: 10/ebdde8d64be15755cec0deed373b99d518aff48ff48a7e001db8d52da76df05dd9b76ccf532bb8f9fdc575b2c2517117885cd8cb5bacc31853ef32b6cc492533 languageName: node linkType: hard @@ -1969,12 +1969,12 @@ __metadata: version: 4.0.1 resolution: "@metamask/eth-sig-util@npm:4.0.1" dependencies: - ethereumjs-abi: ^0.6.8 - ethereumjs-util: ^6.2.1 - ethjs-util: ^0.1.6 - tweetnacl: ^1.0.3 - tweetnacl-util: ^0.15.1 - checksum: 740df4c92a1282e6be4c00c86c1a8ccfb93e767596e43f6da895aa5bab4a28fc3c2209f0327db34924a4a1e9db72bc4d3dddfcfc45cca0b218c9ccbf7d1b1445 + ethereumjs-abi: "npm:^0.6.8" + ethereumjs-util: "npm:^6.2.1" + ethjs-util: "npm:^0.1.6" + tweetnacl: "npm:^1.0.3" + tweetnacl-util: "npm:^0.15.1" + checksum: 10/a41a986abd14675badeb02041466e30e1c3ef529c1d131f47c27fd48d73144fcf590f45d8ee8b7cd357725ebf75ece93f4484adf1baf6311cc996f7ef82c4ae1 languageName: node linkType: hard @@ -1982,9 +1982,9 @@ __metadata: version: 0.0.4 resolution: "@mevitae/redis-work-queue@npm:0.0.4" dependencies: - ioredis: ^5.3.2 - uuid: ^9.0.0 - checksum: 407a39650942359ce9504e3c8a12b617d16cb09c7e958490add21f03d7704db973e8c14b846f4737e56df916998f21901e0b3c35f7fd9e0e9c39cb61c1aac943 + ioredis: "npm:^5.3.2" + uuid: "npm:^9.0.0" + checksum: 10/15af9649453cbc8057d6b7aba241679ffc760e61620ce9c39a7c1b5bf16d557838e96a4f3d15337451e2d6eefa46351d2e73e367653dfb35ad405b66f638e766 languageName: node linkType: hard @@ -1992,8 +1992,8 @@ __metadata: version: 0.6.4 resolution: "@morgan-stanley/ts-mocking-bird@npm:0.6.4" dependencies: - lodash: ^4.17.16 - uuid: ^7.0.3 + lodash: "npm:^4.17.16" + uuid: "npm:^7.0.3" peerDependencies: jasmine: 2.x || 3.x || 4.x jest: 26.x || 27.x || 28.x @@ -2003,7 +2003,7 @@ __metadata: optional: true jest: optional: true - checksum: 7d788007c86b6b1455943105c71e5fe60c5087377f78cf6f8281d7f8978ed47322e4e8e6b21c137e5089389d141b0dd6f0e0b12dc53d440604abfa93a7463095 + checksum: 10/5c78afd9629727e227dacef1b7e91c56afff0221e9fc2245e256c36c996c31fa993c3c58731bfd1871b82572f8d682bd9b199623eafe58565d3ea42bd30393b0 languageName: node linkType: hard @@ -2052,21 +2052,21 @@ __metadata: "@noble/bls12-381@npm:^1.3.0": version: 1.4.0 resolution: "@noble/bls12-381@npm:1.4.0" - checksum: 6301785d0d834ceb4dafc1334582f8bafd8ccb2db1c400b651d43255ab26e8020bf5d2b9d8955066f93cc0481f770b59aa45c6fbc9e2ff6cb347c7280e50e0cb + checksum: 10/508b5115f8cbd3e1e4c0b1d6677280fae2a05568edd007217cb5324ec53faa96d6468a403bed4a28be678dd626674978249f5aac38545f042beb717307dda96e languageName: node linkType: hard "@noble/hashes@npm:1.2.0, @noble/hashes@npm:^1, @noble/hashes@npm:^1.0.0, @noble/hashes@npm:~1.2.0": version: 1.2.0 resolution: "@noble/hashes@npm:1.2.0" - checksum: 8ca080ce557b8f40fb2f78d3aedffd95825a415ac8e13d7ffe3643f8626a8c2d99a3e5975b555027ac24316d8b3c02a35b8358567c0c23af681e6573602aa434 + checksum: 10/c295684a2799f4ddad10a855efd9b82c70c27ac5f7437642df9700e120087c796851dd95b12d2e7596802303fe6afbfdf0f8733b5c7453f70c4c080746dde6ff languageName: node linkType: hard "@noble/secp256k1@npm:1.7.1, @noble/secp256k1@npm:~1.7.0": version: 1.7.1 resolution: "@noble/secp256k1@npm:1.7.1" - checksum: d2301f1f7690368d8409a3152450458f27e54df47e3f917292de3de82c298770890c2de7c967d237eff9c95b70af485389a9695f73eb05a43e2bd562d18b18cb + checksum: 10/214d4756c20ed20809d948d0cc161e95664198cb127266faf747fd7deffe5444901f05fe9f833787738f2c6e60b09e544c2f737f42f73b3699e3999ba15b1b63 languageName: node linkType: hard @@ -2074,13 +2074,13 @@ __metadata: version: 4.0.0 resolution: "@nomicfoundation/ethereumjs-block@npm:4.0.0" dependencies: - "@nomicfoundation/ethereumjs-common": ^3.0.0 - "@nomicfoundation/ethereumjs-rlp": ^4.0.0 - "@nomicfoundation/ethereumjs-trie": ^5.0.0 - "@nomicfoundation/ethereumjs-tx": ^4.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - ethereum-cryptography: 0.1.3 - checksum: a57a33dda7724f0a46ef2e0ca0dbb1b427268f4135e8c23eee9ab5730a79369d52122faba7a010d71bca3046f7ce644ed95e4a34d5f2221ecaa5d94886d84b11 + "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" + "@nomicfoundation/ethereumjs-tx": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + ethereum-cryptography: "npm:0.1.3" + checksum: 10/cbdd37fddeeb3aa29dd750409fc4ce1b3ef5691d45d4dc0808706e99080e6f3f4ee4b95e3ce14fccfb91296513196cea84095c64eb740f81ef38f3d9ab0d2a21 languageName: node linkType: hard @@ -2088,19 +2088,19 @@ __metadata: version: 6.0.0 resolution: "@nomicfoundation/ethereumjs-blockchain@npm:6.0.0" dependencies: - "@nomicfoundation/ethereumjs-block": ^4.0.0 - "@nomicfoundation/ethereumjs-common": ^3.0.0 - "@nomicfoundation/ethereumjs-ethash": ^2.0.0 - "@nomicfoundation/ethereumjs-rlp": ^4.0.0 - "@nomicfoundation/ethereumjs-trie": ^5.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - abstract-level: ^1.0.3 - debug: ^4.3.3 - ethereum-cryptography: 0.1.3 - level: ^8.0.0 - lru-cache: ^5.1.1 - memory-level: ^1.0.0 - checksum: 5605c1d249924321de98c1728b5b832ee6488b690a42c829db21afa96f5c152c73afdec6aa4758cb9b24ec7ac19ec9f3146b63cf837e1b91d364e4c37b497881 + "@nomicfoundation/ethereumjs-block": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" + "@nomicfoundation/ethereumjs-ethash": "npm:^2.0.0" + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + abstract-level: "npm:^1.0.3" + debug: "npm:^4.3.3" + ethereum-cryptography: "npm:0.1.3" + level: "npm:^8.0.0" + lru-cache: "npm:^5.1.1" + memory-level: "npm:^1.0.0" + checksum: 10/c380735f69182576694b3ffd5eff7a5e8e562efb5cbd96e5cf186c68a0592acfb0effe4551cdf4ad366f831d4b7dd28c3347bee8ca845ae2352b8e36cdcbb6cb languageName: node linkType: hard @@ -2108,9 +2108,9 @@ __metadata: version: 3.0.0 resolution: "@nomicfoundation/ethereumjs-common@npm:3.0.0" dependencies: - "@nomicfoundation/ethereumjs-util": ^8.0.0 - crc-32: ^1.2.0 - checksum: 6a62908e5ccd8a4f56b841bd6ba9eef21dffafdd505f18b6b886d86ba4287cd12a2c632d521c5fddf2c6fca5a840f580d7601d89820098f6c1f8311db41e496b + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + crc-32: "npm:^1.2.0" + checksum: 10/d7012b0d05fba75e6ad2f54e60f777231896377a0a369af22d4868e4e260fb7e2586ac8d51c35b56ea2c1fa2e62dfef8669b653ed3e3b7816cfc38f2acf26090 languageName: node linkType: hard @@ -2118,13 +2118,13 @@ __metadata: version: 2.0.0 resolution: "@nomicfoundation/ethereumjs-ethash@npm:2.0.0" dependencies: - "@nomicfoundation/ethereumjs-block": ^4.0.0 - "@nomicfoundation/ethereumjs-rlp": ^4.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - abstract-level: ^1.0.3 - bigint-crypto-utils: ^3.0.23 - ethereum-cryptography: 0.1.3 - checksum: 60133df2d450179f2ab26e8784b1bd79b37411bb047a7dace655499749893750f0f8d6d573f182ebcf4dba35f2da6301b0ad1b80dbe7637bb0d5155ccb189fda + "@nomicfoundation/ethereumjs-block": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + abstract-level: "npm:^1.0.3" + bigint-crypto-utils: "npm:^3.0.23" + ethereum-cryptography: "npm:0.1.3" + checksum: 10/dcabac814b7496a19824f6048157a095713afcb0676f4dd3d6172e579b31789dccd0f4417847c1901af3092be0021cc3e98f7f770a81766f505da93ff5930b00 languageName: node linkType: hard @@ -2132,15 +2132,15 @@ __metadata: version: 1.0.0 resolution: "@nomicfoundation/ethereumjs-evm@npm:1.0.0" dependencies: - "@nomicfoundation/ethereumjs-common": ^3.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - "@types/async-eventemitter": ^0.2.1 - async-eventemitter: ^0.2.4 - debug: ^4.3.3 - ethereum-cryptography: 0.1.3 - mcl-wasm: ^0.7.1 - rustbn.js: ~0.2.0 - checksum: d1ffaa1a02c1f78099a5cfe802f2738c498063e383a51ede4b7194c809d7bdb8d322edfea4d83090c8c1b83b42fa9febbd571c35f5cf27f18d47fb664f3ab61e + "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + "@types/async-eventemitter": "npm:^0.2.1" + async-eventemitter: "npm:^0.2.4" + debug: "npm:^4.3.3" + ethereum-cryptography: "npm:0.1.3" + mcl-wasm: "npm:^0.7.1" + rustbn.js: "npm:~0.2.0" + checksum: 10/5a86ded335d74e63564d0b012c2e7807a1f8c9a2aca65a152fab5eb8200b7d2f23bc9fc31e26a3403a76eaba37ccf1bae4be81310da5e4619f8e1d63f1d0e3fd languageName: node linkType: hard @@ -2149,7 +2149,7 @@ __metadata: resolution: "@nomicfoundation/ethereumjs-rlp@npm:4.0.0" bin: rlp: bin/rlp - checksum: b358d239e5a24884f0446d52159c8115b0eb1d6907179dc968df5054dccea7eff72f2d12522c911b6e08bb4b5d3f5f8e1d86a45cb1a24a4831cbb109743d4407 + checksum: 10/9e3e52876e408583cf3b19fd65979162eded9e1d02b699d4936a53bfba4155713084d0b37dbc938ec6a34e5bef61b9f2e3682684a86c6a29ea3900ac51113e92 languageName: node linkType: hard @@ -2157,14 +2157,14 @@ __metadata: version: 1.0.0 resolution: "@nomicfoundation/ethereumjs-statemanager@npm:1.0.0" dependencies: - "@nomicfoundation/ethereumjs-common": ^3.0.0 - "@nomicfoundation/ethereumjs-rlp": ^4.0.0 - "@nomicfoundation/ethereumjs-trie": ^5.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - debug: ^4.3.3 - ethereum-cryptography: 0.1.3 - functional-red-black-tree: ^1.0.1 - checksum: fad02ea922fbe25328186ea2eb43bdba63def57822f373ce213be26125ee8d3c90cf3b6f626e6876637cdb842e3c2b788fb8891fcf1aca3fd655e1c0d9a7e936 + "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + debug: "npm:^4.3.3" + ethereum-cryptography: "npm:0.1.3" + functional-red-black-tree: "npm:^1.0.1" + checksum: 10/faf7629ec3b5b494a955c9ab7a2e775c01796ad6b2441d10562407056b6a6e06ff751ac03ea131c3eddedc12189f1ae382be0cf2854fdce17f28ce62eb3c2f42 languageName: node linkType: hard @@ -2172,11 +2172,11 @@ __metadata: version: 5.0.0 resolution: "@nomicfoundation/ethereumjs-trie@npm:5.0.0" dependencies: - "@nomicfoundation/ethereumjs-rlp": ^4.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - ethereum-cryptography: 0.1.3 - readable-stream: ^3.6.0 - checksum: 468de7ffe05473f0f05940e74bba01652dd9a4ff155a13e0a5395551e53557afde47d98f496f6323824bccfaeee8de4e22fef9b7f88d3bbd4e97cadc54e2e4f9 + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + ethereum-cryptography: "npm:0.1.3" + readable-stream: "npm:^3.6.0" + checksum: 10/709cfbb7be2c64208a3e712c27f0bc0580fc723d12340b211353beeddb886f68059170d51529650a090b821b6a21dbf63dc67499f23877e377fbc97295254b12 languageName: node linkType: hard @@ -2184,11 +2184,11 @@ __metadata: version: 4.0.0 resolution: "@nomicfoundation/ethereumjs-tx@npm:4.0.0" dependencies: - "@nomicfoundation/ethereumjs-common": ^3.0.0 - "@nomicfoundation/ethereumjs-rlp": ^4.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - ethereum-cryptography: 0.1.3 - checksum: d2c0e3384aaa9f3b58232c531a4efd524be257e7257f23c3beed6ec9cf5fba6345cb632b3a464ae0a2aa99fd9e4a2d3e2d5c501593c5466e6ab629f05255791e + "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + ethereum-cryptography: "npm:0.1.3" + checksum: 10/0833c6a4bfe5ad77a2931710ebe79d972d8e89eb59c9066bb0c7347cd6135a66bf0901c55e8c84827c1edad9200446ef0e5260a6026630552c9828e7f4f123a1 languageName: node linkType: hard @@ -2196,9 +2196,9 @@ __metadata: version: 8.0.0 resolution: "@nomicfoundation/ethereumjs-util@npm:8.0.0" dependencies: - "@nomicfoundation/ethereumjs-rlp": ^4.0.0-beta.2 - ethereum-cryptography: 0.1.3 - checksum: a39be4c8d3dea4fae1e969b47138d718cac31bf248bb517766a42c97ca5850ca3ddf16c66d8e404fa0a0363fd6898ae2e716d75da2ed4113e610d26026e4cefb + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0-beta.2" + ethereum-cryptography: "npm:0.1.3" + checksum: 10/8da64af39b83750347bf73fb30b169e1bf702cc26d6f94434a78521b569af9ebbd5c23d729e5e1ce38b22e354696af83f823bccc95f8a427c1baf722936d5404 languageName: node linkType: hard @@ -2206,23 +2206,23 @@ __metadata: version: 6.0.0 resolution: "@nomicfoundation/ethereumjs-vm@npm:6.0.0" dependencies: - "@nomicfoundation/ethereumjs-block": ^4.0.0 - "@nomicfoundation/ethereumjs-blockchain": ^6.0.0 - "@nomicfoundation/ethereumjs-common": ^3.0.0 - "@nomicfoundation/ethereumjs-evm": ^1.0.0 - "@nomicfoundation/ethereumjs-rlp": ^4.0.0 - "@nomicfoundation/ethereumjs-statemanager": ^1.0.0 - "@nomicfoundation/ethereumjs-trie": ^5.0.0 - "@nomicfoundation/ethereumjs-tx": ^4.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - "@types/async-eventemitter": ^0.2.1 - async-eventemitter: ^0.2.4 - debug: ^4.3.3 - ethereum-cryptography: 0.1.3 - functional-red-black-tree: ^1.0.1 - mcl-wasm: ^0.7.1 - rustbn.js: ~0.2.0 - checksum: 3c0e10b377579d74bfdcfd056d5545b605f767982e41038d036c8219a50fe3564c7f146fdd04385d64f48f94b9d95c378d7a37955c5100c46c568a29f54ea737 + "@nomicfoundation/ethereumjs-block": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-blockchain": "npm:^6.0.0" + "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" + "@nomicfoundation/ethereumjs-evm": "npm:^1.0.0" + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-statemanager": "npm:^1.0.0" + "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" + "@nomicfoundation/ethereumjs-tx": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + "@types/async-eventemitter": "npm:^0.2.1" + async-eventemitter: "npm:^0.2.4" + debug: "npm:^4.3.3" + ethereum-cryptography: "npm:0.1.3" + functional-red-black-tree: "npm:^1.0.1" + mcl-wasm: "npm:^0.7.1" + rustbn.js: "npm:~0.2.0" + checksum: 10/16c34baef9a8561d6d580164f258f03d8e0573b76cabb2373835e30ee684aef70d121c4d3a73f3fa5e82081a8b81f643326d11861b18f36d9dcf8e7cf157be96 languageName: node linkType: hard @@ -2300,16 +2300,16 @@ __metadata: version: 0.1.0 resolution: "@nomicfoundation/solidity-analyzer@npm:0.1.0" dependencies: - "@nomicfoundation/solidity-analyzer-darwin-arm64": 0.1.0 - "@nomicfoundation/solidity-analyzer-darwin-x64": 0.1.0 - "@nomicfoundation/solidity-analyzer-freebsd-x64": 0.1.0 - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": 0.1.0 - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": 0.1.0 - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": 0.1.0 - "@nomicfoundation/solidity-analyzer-linux-x64-musl": 0.1.0 - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": 0.1.0 - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": 0.1.0 - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": 0.1.0 + "@nomicfoundation/solidity-analyzer-darwin-arm64": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-darwin-x64": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-freebsd-x64": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "npm:0.1.0" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "npm:0.1.0" dependenciesMeta: "@nomicfoundation/solidity-analyzer-darwin-arm64": optional: true @@ -2331,7 +2331,7 @@ __metadata: optional: true "@nomicfoundation/solidity-analyzer-win32-x64-msvc": optional: true - checksum: 42dc5ba40e76bf14945fb6a423554bbbc6c99596675065d7d6f3c9a49ec39e37f3f77ecfedcf906fdb1bb33b033a5d92a90c645c886d6ff23334c8af8b14ff67 + checksum: 10/2a269b9e1da1a79cd45bd9b50d7e123a85392a11b9be8bb0a765c6e5aadf6c79af1650b7b352d4d2a68a347a401e79f3d02e2a1048f60b02ca9033fa7de91795 languageName: node linkType: hard @@ -2341,7 +2341,7 @@ __metadata: peerDependencies: ethers: ^5.0.0 hardhat: ^2.0.0 - checksum: f7b880cbb3fbf809b5d01619112231be9ef8dc3c2880960d2382813fa19b783670ee2d982ebd43d8867281ad82854ca0d16626c013d0d834eb3b19a65dc0c851 + checksum: 10/ce4a9b7466ad12b860f21f3884ec52fbfc628cbe93d924ef9cbf1365bd0676dfaa80be4ae4ce639fd56a903e9f3f90fe162995c64aeac8e30d71e8cb16ac7aba languageName: node linkType: hard @@ -2349,19 +2349,19 @@ __metadata: version: 3.1.6 resolution: "@nomiclabs/hardhat-etherscan@npm:3.1.6" dependencies: - "@ethersproject/abi": ^5.1.2 - "@ethersproject/address": ^5.0.2 - cbor: ^8.1.0 - chalk: ^2.4.2 - debug: ^4.1.1 - fs-extra: ^7.0.1 - lodash: ^4.17.11 - semver: ^6.3.0 - table: ^6.8.0 - undici: ^5.14.0 + "@ethersproject/abi": "npm:^5.1.2" + "@ethersproject/address": "npm:^5.0.2" + cbor: "npm:^8.1.0" + chalk: "npm:^2.4.2" + debug: "npm:^4.1.1" + fs-extra: "npm:^7.0.1" + lodash: "npm:^4.17.11" + semver: "npm:^6.3.0" + table: "npm:^6.8.0" + undici: "npm:^5.14.0" peerDependencies: hardhat: ^2.0.4 - checksum: 5b1fd197f567d896064c81a4a09995e5be354d008e25be092a5d740136e5b118c2b0f2162c808caec2bbe64718ca3aeb8e886cd4d8968c92800408626429bf7b + checksum: 10/2ad06065210df46abaef7987a3d2eaae917476001ba6a0a545e531f2a015fdd246927dad42a05427217227950bdd48cbfbac53fca81133075da7af4706ba4a62 languageName: node linkType: hard @@ -2369,19 +2369,19 @@ __metadata: version: 3.1.7 resolution: "@nomiclabs/hardhat-etherscan@npm:3.1.7" dependencies: - "@ethersproject/abi": ^5.1.2 - "@ethersproject/address": ^5.0.2 - cbor: ^8.1.0 - chalk: ^2.4.2 - debug: ^4.1.1 - fs-extra: ^7.0.1 - lodash: ^4.17.11 - semver: ^6.3.0 - table: ^6.8.0 - undici: ^5.14.0 + "@ethersproject/abi": "npm:^5.1.2" + "@ethersproject/address": "npm:^5.0.2" + cbor: "npm:^8.1.0" + chalk: "npm:^2.4.2" + debug: "npm:^4.1.1" + fs-extra: "npm:^7.0.1" + lodash: "npm:^4.17.11" + semver: "npm:^6.3.0" + table: "npm:^6.8.0" + undici: "npm:^5.14.0" peerDependencies: hardhat: ^2.0.4 - checksum: 32d74e567e78a940a79cbe49c5dee0eb5cda0a4c0c34a9badfaf13d45e6054d9e717c28b8d2b0b20f29721a484af15a52d391fb60768222c4b13de92ef0f72b3 + checksum: 10/739e731f1efa04021a579c8a8f365bd3254441c822d0c3af9b00c5cfea75a0aa96ebe456881490cd5429431b001af4eb3d3a16a9d990d1f97d33ce726dea764e languageName: node linkType: hard @@ -2393,7 +2393,7 @@ __metadata: ethereum-waffle: "*" ethers: ^5.0.0 hardhat: ^2.0.0 - checksum: 6cdea876ee3babf74ef6aceb9025e287ce4da3b2c7cfeb31834d35a8fdc77e59964395b529007bdbbb84d08f0f2c397ee7f5992fcb42abab88d00e7ae1add0ea + checksum: 10/931dc5844f0eb804d54d5f6426d69fc1e15e4614cd5b4da0bcb8c15f044b94c5fd7ef2ab256baac9f380042f590ffd8d414f0b477dbdbd991c231cf6e778a9a9 languageName: node linkType: hard @@ -2401,9 +2401,9 @@ __metadata: version: 1.1.1 resolution: "@npmcli/fs@npm:1.1.1" dependencies: - "@gar/promisify": ^1.0.1 - semver: ^7.3.5 - checksum: f5ad92f157ed222e4e31c352333d0901df02c7c04311e42a81d8eb555d4ec4276ea9c635011757de20cc476755af33e91622838de573b17e52e2e7703f0a9965 + "@gar/promisify": "npm:^1.0.1" + semver: "npm:^7.3.5" + checksum: 10/8b5e6d75759b9f1a8b7885913df274c8cbbb1221176872615f2aecedf47b2c36e5dfbf4046ff1a905c9f3592fbd32051b3050b8a897bf03514a1a404b39af074 languageName: node linkType: hard @@ -2411,9 +2411,9 @@ __metadata: version: 2.1.2 resolution: "@npmcli/fs@npm:2.1.2" dependencies: - "@gar/promisify": ^1.1.3 - semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 + "@gar/promisify": "npm:^1.1.3" + semver: "npm:^7.3.5" + checksum: 10/c5d4dfee80de2236e1e4ed595d17e217aada72ebd8215183fc46096fa010f583dd2aaaa486758de7cc0b89440dbc31cfe8b276269d75d47af35c716e896f78ec languageName: node linkType: hard @@ -2421,9 +2421,9 @@ __metadata: version: 1.1.2 resolution: "@npmcli/move-file@npm:1.1.2" dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 10/c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 languageName: node linkType: hard @@ -2431,37 +2431,37 @@ __metadata: version: 2.0.1 resolution: "@npmcli/move-file@npm:2.0.1" dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 10/52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 languageName: node linkType: hard "@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/aspromise@npm:1.1.2" - checksum: 011fe7ef0826b0fd1a95935a033a3c0fd08483903e1aa8f8b4e0704e3233406abb9ee25350ec0c20bbecb2aad8da0dcea58b392bbd77d6690736f02c143865d2 + checksum: 10/8a938d84fe4889411296db66b29287bd61ea3c14c2d23e7a8325f46a2b8ce899857c5f038d65d7641805e6c1d06b495525c7faf00c44f85a7ee6476649034969 languageName: node linkType: hard "@protobufjs/base64@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/base64@npm:1.1.2" - checksum: 67173ac34de1e242c55da52c2f5bdc65505d82453893f9b51dc74af9fe4c065cf4a657a4538e91b0d4a1a1e0a0642215e31894c31650ff6e3831471061e1ee9e + checksum: 10/c71b100daeb3c9bdccab5cbc29495b906ba0ae22ceedc200e1ba49717d9c4ab15a6256839cebb6f9c6acae4ed7c25c67e0a95e734f612b258261d1a3098fe342 languageName: node linkType: hard "@protobufjs/codegen@npm:^2.0.4": version: 2.0.4 resolution: "@protobufjs/codegen@npm:2.0.4" - checksum: 59240c850b1d3d0b56d8f8098dd04787dcaec5c5bd8de186fa548de86b86076e1c50e80144b90335e705a044edf5bc8b0998548474c2a10a98c7e004a1547e4b + checksum: 10/c6ee5fa172a8464f5253174d3c2353ea520c2573ad7b6476983d9b1346f4d8f2b44aa29feb17a949b83c1816bc35286a5ea265ed9d8fdd2865acfa09668c0447 languageName: node linkType: hard "@protobufjs/eventemitter@npm:^1.1.0": version: 1.1.0 resolution: "@protobufjs/eventemitter@npm:1.1.0" - checksum: 0369163a3d226851682f855f81413cbf166cd98f131edb94a0f67f79e75342d86e89df9d7a1df08ac28be2bc77e0a7f0200526bb6c2a407abbfee1f0262d5fd7 + checksum: 10/03af3e99f17ad421283d054c88a06a30a615922a817741b43ca1b13e7c6b37820a37f6eba9980fb5150c54dba6e26cb6f7b64a6f7d8afa83596fafb3afa218c3 languageName: node linkType: hard @@ -2469,44 +2469,44 @@ __metadata: version: 1.1.0 resolution: "@protobufjs/fetch@npm:1.1.0" dependencies: - "@protobufjs/aspromise": ^1.1.1 - "@protobufjs/inquire": ^1.1.0 - checksum: 3fce7e09eb3f1171dd55a192066450f65324fd5f7cc01a431df01bb00d0a895e6bfb5b0c5561ce157ee1d886349c90703d10a4e11a1a256418ff591b969b3477 + "@protobufjs/aspromise": "npm:^1.1.1" + "@protobufjs/inquire": "npm:^1.1.0" + checksum: 10/67ae40572ad536e4ef94269199f252c024b66e3059850906bdaee161ca1d75c73d04d35cd56f147a8a5a079f5808e342b99e61942c1dae15604ff0600b09a958 languageName: node linkType: hard "@protobufjs/float@npm:^1.0.2": version: 1.0.2 resolution: "@protobufjs/float@npm:1.0.2" - checksum: 5781e1241270b8bd1591d324ca9e3a3128d2f768077a446187a049e36505e91bc4156ed5ac3159c3ce3d2ba3743dbc757b051b2d723eea9cd367bfd54ab29b2f + checksum: 10/634c2c989da0ef2f4f19373d64187e2a79f598c5fb7991afb689d29a2ea17c14b796b29725945fa34b9493c17fb799e08ac0a7ccaae460ee1757d3083ed35187 languageName: node linkType: hard "@protobufjs/inquire@npm:^1.1.0": version: 1.1.0 resolution: "@protobufjs/inquire@npm:1.1.0" - checksum: ca06f02eaf65ca36fb7498fc3492b7fc087bfcc85c702bac5b86fad34b692bdce4990e0ef444c1e2aea8c034227bd1f0484be02810d5d7e931c55445555646f4 + checksum: 10/c09efa34a5465cb120775e1a482136f2340a58b4abce7e93d72b8b5a9324a0e879275016ef9fcd73d72a4731639c54f2bb755bb82f916e4a78892d1d840bb3d2 languageName: node linkType: hard "@protobufjs/path@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/path@npm:1.1.2" - checksum: 856eeb532b16a7aac071cacde5c5620df800db4c80cee6dbc56380524736205aae21e5ae47739114bf669ab5e8ba0e767a282ad894f3b5e124197cb9224445ee + checksum: 10/bb709567935fd385a86ad1f575aea98131bbd719c743fb9b6edd6b47ede429ff71a801cecbd64fc72deebf4e08b8f1bd8062793178cdaed3713b8d15771f9b83 languageName: node linkType: hard "@protobufjs/pool@npm:^1.1.0": version: 1.1.0 resolution: "@protobufjs/pool@npm:1.1.0" - checksum: d6a34fbbd24f729e2a10ee915b74e1d77d52214de626b921b2d77288bd8f2386808da2315080f2905761527cceffe7ec34c7647bd21a5ae41a25e8212ff79451 + checksum: 10/b9c7047647f6af28e92aac54f6f7c1f7ff31b201b4bfcc7a415b2861528854fce3ec666d7e7e10fd744da905f7d4aef2205bbcc8944ca0ca7a82e18134d00c46 languageName: node linkType: hard "@protobufjs/utf8@npm:^1.1.0": version: 1.1.0 resolution: "@protobufjs/utf8@npm:1.1.0" - checksum: f9bf3163d13aaa3b6f5e6fbf37a116e094ea021c0e1f2a7ccd0e12a29e2ce08dafba4e8b36e13f8ed7397e1591610ce880ed1289af4d66cf4ace8a36a9557278 + checksum: 10/131e289c57534c1d73a0e55782d6751dd821db1583cb2f7f7e017c9d6747addaebe79f28120b2e0185395d990aad347fb14ffa73ef4096fa38508d61a0e64602 languageName: node linkType: hard @@ -2515,7 +2515,7 @@ __metadata: resolution: "@redis/bloom@npm:1.2.0" peerDependencies: "@redis/client": ^1.0.0 - checksum: 8c214227287d6b278109098bca00afc601cf84f7da9c6c24f4fa7d3854b946170e5893aa86ed607ba017a4198231d570541c79931b98b6d50b262971022d1d6c + checksum: 10/a16408f729ddd032a52c9d998661dfa7beabc0e92760d30619c3166c7a53a98c037956d93d230b787005fd8a599a7456461ca7429c1916893c2d13d59a41e0e6 languageName: node linkType: hard @@ -2523,10 +2523,10 @@ __metadata: version: 1.5.6 resolution: "@redis/client@npm:1.5.6" dependencies: - cluster-key-slot: 1.1.2 - generic-pool: 3.9.0 - yallist: 4.0.0 - checksum: df03f77d43e95fa4016b0c434cbdbc1822d2f30b2bfba1b046f7f4d0a6ee9ad15f350e56d6f8030b82b47e1cfa1444e7c43d659e27777ac8b66a1d95e6707f6b + cluster-key-slot: "npm:1.1.2" + generic-pool: "npm:3.9.0" + yallist: "npm:4.0.0" + checksum: 10/0ca1613882787b5218b0012261b8b70f9ee3c26cde671651b17babbcdb3c78e265c3ce7f52c446eed628f7f2adb24d3b222627aca22299d210fd5d1ca5986953 languageName: node linkType: hard @@ -2535,7 +2535,7 @@ __metadata: resolution: "@redis/graph@npm:1.1.0" peerDependencies: "@redis/client": ^1.0.0 - checksum: d3df807108a42929ed65269c691fe6ab7eda55de91318f02a22b2d637c1bfef8817fccd17025904f5a0be8cf1cea5941334ec9f10719336da5d8f1c54cd4997e + checksum: 10/e1d4ee00dff015db4fd0cab74eb8fb862eb415875cf46939ced74ca1a5ec1ef4306eb888683ed85d5ccef6d40d68812ed002ac4666e09fd87f60d55950ca8d6a languageName: node linkType: hard @@ -2544,7 +2544,7 @@ __metadata: resolution: "@redis/json@npm:1.0.4" peerDependencies: "@redis/client": ^1.0.0 - checksum: de07f9c37abed603dec352593eb69fc8a94475e7f86b4f65b9805394492d448a1e4181db74269d80eb9dba6f3ae8a41804204821db36bb801cd7c1e30ac7ec80 + checksum: 10/531179f2041d53f61660d4bc3203ce9589bbd34c6c6615d287d1a6f47f0250d2b1d8e23d476200095bc662a447bffa800eb17bca1a93b1248f03f1c075a66a9b languageName: node linkType: hard @@ -2553,7 +2553,7 @@ __metadata: resolution: "@redis/search@npm:1.1.2" peerDependencies: "@redis/client": ^1.0.0 - checksum: fc3c0bd62c150ea7f8b3f08b0e67893b4e8df71b4820d750de6ba00ccff3720fdc5d4f50618e385c9e183c784635185e2e98a3e6c3d20ac30f2c60996f38b992 + checksum: 10/5255e296ff1a41a94182273dc3e72fc46625a0d5f56620da3eb08b6049d52c73a8deeea5bb64dfebf29d7e142eb96eb9ddc2bd3666562decdea2906480ce2061 languageName: node linkType: hard @@ -2562,7 +2562,7 @@ __metadata: resolution: "@redis/time-series@npm:1.0.4" peerDependencies: "@redis/client": ^1.0.0 - checksum: a5fca079deb04a2f204a7f9a375a6ff698a119d5dd53f7581fa8fd9e3bacacf1ecb0253b97fada484a012fea7a98014bc0f4f79707d4e92ff61c00318f2bfe04 + checksum: 10/8fb19186e88d1201509589fc35e614c6c8e23db482851ee5208ce909d65d7bc5a7bfd5eb5c6b6e95a24d90ba552936d4bdd9ed8fc0806c2e7847f3c78ac476e6 languageName: node linkType: hard @@ -2570,10 +2570,10 @@ __metadata: version: 0.3.3 resolution: "@resolver-engine/core@npm:0.3.3" dependencies: - debug: ^3.1.0 - is-url: ^1.2.4 - request: ^2.85.0 - checksum: e5ac586da2aeb7e384f6841821e528771fca533bf5cf38d7fd0851733bd9b70939e960459f2b841534ecdca6507c9aff71bd317f7481137d7b1d2e87ba15978a + debug: "npm:^3.1.0" + is-url: "npm:^1.2.4" + request: "npm:^2.85.0" + checksum: 10/316f1148675e1dcf2e58e68d8754eb4de3d92a8b91d790ac7e9c4c714a3d93480cd4e31f12b4eb7516e41fd18f55ea39d9f15f7df045257aedc0ad98918fa7c3 languageName: node linkType: hard @@ -2581,9 +2581,9 @@ __metadata: version: 0.3.3 resolution: "@resolver-engine/fs@npm:0.3.3" dependencies: - "@resolver-engine/core": ^0.3.3 - debug: ^3.1.0 - checksum: 734577b7864c3aceaaa80b4b74c252d92fb14a6f3c46dfc0a2d4658288dce1b38797578dd6a4ecbde88cbc4a366e8bdbc46451e282cb25dde8479548453c37a3 + "@resolver-engine/core": "npm:^0.3.3" + debug: "npm:^3.1.0" + checksum: 10/b42ecdcd7f967ad66d3b55bf648e015066bbfa8b1c8117b4c943d53cd9f2532ead266b9051b9a9a069ae2bcd42b624e49f8ffa7a571a291b414131a81fbc4c27 languageName: node linkType: hard @@ -2591,10 +2591,10 @@ __metadata: version: 0.3.3 resolution: "@resolver-engine/imports-fs@npm:0.3.3" dependencies: - "@resolver-engine/fs": ^0.3.3 - "@resolver-engine/imports": ^0.3.3 - debug: ^3.1.0 - checksum: d24778788959f8a201bda0a91527cd1703dfbbf3675fd16bd3891046e3f12378be73233bb9d4da19c7247488be38daeab2bdf800317f70553a16fb62208ba2c7 + "@resolver-engine/fs": "npm:^0.3.3" + "@resolver-engine/imports": "npm:^0.3.3" + debug: "npm:^3.1.0" + checksum: 10/b8b0f407d366bc1ec6ae2f90623a16feb0b22e46537b75b3f183db3a5ef7dfae283d1c2e3b1a9bd3f38abf39759a087f582cd810bd23f9f151ad2d943efed8c3 languageName: node linkType: hard @@ -2602,19 +2602,19 @@ __metadata: version: 0.3.3 resolution: "@resolver-engine/imports@npm:0.3.3" dependencies: - "@resolver-engine/core": ^0.3.3 - debug: ^3.1.0 - hosted-git-info: ^2.6.0 - path-browserify: ^1.0.0 - url: ^0.11.0 - checksum: 690cf550fd0608e849fcb9c20a08479ce405173f8d0b09141a5bd140c4ae7c887ebcb0532c4ca64b5c1d3039fe77cc94172b7afb51c1a8fe7722475c429e6944 + "@resolver-engine/core": "npm:^0.3.3" + debug: "npm:^3.1.0" + hosted-git-info: "npm:^2.6.0" + path-browserify: "npm:^1.0.0" + url: "npm:^0.11.0" + checksum: 10/8d81c2fab14a440d96dfacadc8dff9a3953b266ec48638c586590ea9db35a83d7624c75d4092ba480bc9efe17ddeb2e1444ee4af0a34377479172cda115ca831 languageName: node linkType: hard "@sapphire/async-queue@npm:^1.5.0": version: 1.5.0 resolution: "@sapphire/async-queue@npm:1.5.0" - checksum: 983dbd1fd1b1798496e5edb6a0db7e4d90015160e1028f20475eab0a92625513f1e8d938bc0305811a9cec461c94e01b1e4191615ff03ba49356f568f3255250 + checksum: 10/d22feb63a226486b4a463df145e7e8a94d7149b0772d485e6d315348c8dd4318c7a1724b0961cc023cae4070c0d7f73cbb914310ccbee330007c9bb54a04ae5f languageName: node linkType: hard @@ -2622,23 +2622,23 @@ __metadata: version: 3.9.2 resolution: "@sapphire/shapeshift@npm:3.9.2" dependencies: - fast-deep-equal: ^3.1.3 - lodash: ^4.17.21 - checksum: 0d4572281a2a43dc444f56aef7462d16fdc49cdf0e625d521bfeae4b2219e35b53b7752b4e7396e402ce3b1a21c86afc4c3c82ce1547822a6e844116bb220760 + fast-deep-equal: "npm:^3.1.3" + lodash: "npm:^4.17.21" + checksum: 10/1f268ada96f1716ade47dac5fd5449e29fb2a04a2080f7bba0ea8d94f8fc83b5608e7f9fdbbfd28c0b3921997a8d60c875712f1cf4e14ea96e95b5f72af4d9ea languageName: node linkType: hard "@sapphire/snowflake@npm:^3.5.1": version: 3.5.1 resolution: "@sapphire/snowflake@npm:3.5.1" - checksum: 8fc025020adab1a7a1a5d2cf07704d598cc1977b50e5fcd3a5dd239f00934dc936d3a4d5ae336e71d8bf1d88ec27aa814b34de79e38ff097b7b9ba5a7977a683 + checksum: 10/12d09f0e4f52f86bdc330d70e4a3042f212d787c2d40e7bc41769218c8d08649786109aa78d777262a658a8f29f12ef5bacc6188d46fd1dd35a4e1f29d378723 languageName: node linkType: hard "@scure/base@npm:~1.1.0": version: 1.1.1 resolution: "@scure/base@npm:1.1.1" - checksum: b4fc810b492693e7e8d0107313ac74c3646970c198bbe26d7332820886fa4f09441991023ec9aa3a2a51246b74409ab5ebae2e8ef148bbc253da79ac49130309 + checksum: 10/9aaa525ac25215cbe1bde00733a2fd25e99f03793aa1fd2961c567bb62b60c8a3a485a7cb5d748c41604fca79d149de19b05e64449b770c0a04b9ae38d0b5b2b languageName: node linkType: hard @@ -2646,10 +2646,10 @@ __metadata: version: 1.1.5 resolution: "@scure/bip32@npm:1.1.5" dependencies: - "@noble/hashes": ~1.2.0 - "@noble/secp256k1": ~1.7.0 - "@scure/base": ~1.1.0 - checksum: b08494ab0d2b1efee7226d1b5100db5157ebea22a78bb87126982a76a186cb3048413e8be0ba2622d00d048a20acbba527af730de86c132a77de616eb9907a3b + "@noble/hashes": "npm:~1.2.0" + "@noble/secp256k1": "npm:~1.7.0" + "@scure/base": "npm:~1.1.0" + checksum: 10/4c83e943a66e7b212d18f47b4650ed9b1dfeb69d8bdd8b491b12ba70ca8635cda67fb1ac920d642d66c8a3c2c03303b623c1faceafe7141a6f20a7cd7f66191e languageName: node linkType: hard @@ -2657,9 +2657,9 @@ __metadata: version: 1.1.1 resolution: "@scure/bip39@npm:1.1.1" dependencies: - "@noble/hashes": ~1.2.0 - "@scure/base": ~1.1.0 - checksum: fbb594c50696fa9c14e891d872f382e50a3f919b6c96c55ef2fb10c7102c546dafb8f099a62bd114c12a00525b595dcf7381846f383f0ddcedeaa6e210747d2f + "@noble/hashes": "npm:~1.2.0" + "@scure/base": "npm:~1.1.0" + checksum: 10/08908145e0890e481e3398191424961d9ebfb8913fed6e6cdfc63eb1281bd1895244d46c0e8762b0e30d8dc6f498ed296311382fecbf034253838e3a50f60ca1 languageName: node linkType: hard @@ -2667,12 +2667,12 @@ __metadata: version: 5.30.0 resolution: "@sentry/core@npm:5.30.0" dependencies: - "@sentry/hub": 5.30.0 - "@sentry/minimal": 5.30.0 - "@sentry/types": 5.30.0 - "@sentry/utils": 5.30.0 - tslib: ^1.9.3 - checksum: 8a2b22687e70d76fa4381bce215d770b6c08561c5ff5d6afe39c8c3c509c18ee7384ad0be3aee18d3a858a3c88e1d2821cf10eb5e05646376a33200903b56da2 + "@sentry/hub": "npm:5.30.0" + "@sentry/minimal": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/fef7808017cc9581e94c51fbce3ffeb6bdb62b30d94920fae143d298aed194176ac7c026923d569a33606b93a3747b877e78215a1668ed8eb44e5941527e17e0 languageName: node linkType: hard @@ -2680,10 +2680,10 @@ __metadata: version: 5.30.0 resolution: "@sentry/hub@npm:5.30.0" dependencies: - "@sentry/types": 5.30.0 - "@sentry/utils": 5.30.0 - tslib: ^1.9.3 - checksum: 09f778cc78765213f1e35a3ee6da3a8e02a706e8a7e5b7f84614707f4b665c7297b700a1849ab2ca1f02ede5884fd9ae893e58dc65f04f35ccdfee17e99ee93d + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/b0e21a7acb1c363a3097c7578dd483b2e534bc62541977da7d3c643703767bbcfd65831b70b102fefa715e6b75004ca1dab680d117e1a7455e839042118c1051 languageName: node linkType: hard @@ -2691,10 +2691,10 @@ __metadata: version: 5.30.0 resolution: "@sentry/minimal@npm:5.30.0" dependencies: - "@sentry/hub": 5.30.0 - "@sentry/types": 5.30.0 - tslib: ^1.9.3 - checksum: 934650f6989ce51f425c7c4b4d4d9bfecface8162a36d21df8a241f780ab1716dd47b81e2170e4cc624797ed1eebe10f71e4876c1e25b787860daaef75ca7a0c + "@sentry/hub": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/e74bf519f5e284decb81eea8fd7c75b02827bde36c8ccef5ad0b941043e62a6d6578d7f1ad9dba33e03d240593140990b1999215a35abb344e2b4f3e09b15c90 languageName: node linkType: hard @@ -2702,16 +2702,16 @@ __metadata: version: 5.30.0 resolution: "@sentry/node@npm:5.30.0" dependencies: - "@sentry/core": 5.30.0 - "@sentry/hub": 5.30.0 - "@sentry/tracing": 5.30.0 - "@sentry/types": 5.30.0 - "@sentry/utils": 5.30.0 - cookie: ^0.4.1 - https-proxy-agent: ^5.0.0 - lru_map: ^0.3.3 - tslib: ^1.9.3 - checksum: 5f0367cc52f9d716c64ba727e2a5c8592364494c8fdadfb3df2d0ee9d7956b886fb3ec674370292d2a7b7e1d9a8e1b84c69c06e8a4a064be8d4687698df0090c + "@sentry/core": "npm:5.30.0" + "@sentry/hub": "npm:5.30.0" + "@sentry/tracing": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + cookie: "npm:^0.4.1" + https-proxy-agent: "npm:^5.0.0" + lru_map: "npm:^0.3.3" + tslib: "npm:^1.9.3" + checksum: 10/9fa37b3ce646954f68e4b7506d17c67f5779c69cd432801aaf6796f9ecea9632eb8729b77b71a31dcd5a9f57fb7759fd213222955a667d8ad557df6e997a00c4 languageName: node linkType: hard @@ -2719,19 +2719,19 @@ __metadata: version: 5.30.0 resolution: "@sentry/tracing@npm:5.30.0" dependencies: - "@sentry/hub": 5.30.0 - "@sentry/minimal": 5.30.0 - "@sentry/types": 5.30.0 - "@sentry/utils": 5.30.0 - tslib: ^1.9.3 - checksum: 720c07b111e8128e70a939ab4e9f9cfd13dc23303b27575afddabab08d08f9b94499017c76a9ffe253bf3ca40833e8f9262cf6dc546ba24da6eb74fedae5f92b + "@sentry/hub": "npm:5.30.0" + "@sentry/minimal": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/7e74a29823b445adb104c323324348882987554d049e83e5d3439149d2677024350974161c28b1a55a2750509b030525f81056a48427be06183f3744220ba4b0 languageName: node linkType: hard "@sentry/types@npm:5.30.0": version: 5.30.0 resolution: "@sentry/types@npm:5.30.0" - checksum: de7df777824c8e311f143c6fd7de220b24f25b5018312fe8f67d93bebf0f3cdd32bbca9f155846f5c31441d940eebe27c8338000321559a743264c7e41dda560 + checksum: 10/3ca60689871b298dbab16c1bb6fb4637f72d3c21820017bac9df1765fd560004862cc9e75fb438e5714048b3a9bc641c396cdbb3c3573ac62481d2ea83f1da6d languageName: node linkType: hard @@ -2739,23 +2739,23 @@ __metadata: version: 5.30.0 resolution: "@sentry/utils@npm:5.30.0" dependencies: - "@sentry/types": 5.30.0 - tslib: ^1.9.3 - checksum: 27b259a136c664427641dd32ee3dc490553f3b5e92986accfa829d14063ebc69b191e92209ac9c40fbc367f74cfa17dc93b4c40981d666711fd57b4d51a82062 + "@sentry/types": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/4aa8acf7d0d9688c927a620cbb9fd37d6d2738f701863af772be329baca2cede909dcae6c7b4b449474787245c09212909ee740b4cae143d21ddb1fed910cc3a languageName: node linkType: hard "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 + checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d languageName: node linkType: hard "@sindresorhus/is@npm:^4.0.0, @sindresorhus/is@npm:^4.6.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" - checksum: 83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2 + checksum: 10/e7f36ed72abfcd5e0355f7423a72918b9748bb1ef370a59f3e5ad8d40b728b85d63b272f65f63eec1faf417cda89dcb0aeebe94015647b6054659c1442fe5ce0 languageName: node linkType: hard @@ -2763,8 +2763,8 @@ __metadata: version: 3.0.1 resolution: "@sinonjs/commons@npm:3.0.1" dependencies: - type-detect: 4.0.8 - checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601 + type-detect: "npm:4.0.8" + checksum: 10/a0af217ba7044426c78df52c23cedede6daf377586f3ac58857c565769358ab1f44ebf95ba04bbe38814fba6e316ca6f02870a009328294fc2c555d0f85a7117 languageName: node linkType: hard @@ -2772,8 +2772,8 @@ __metadata: version: 10.3.0 resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: - "@sinonjs/commons": ^3.0.0 - checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10/78155c7bd866a85df85e22028e046b8d46cf3e840f72260954f5e3ed5bd97d66c595524305a6841ffb3f681a08f6e5cef572a2cce5442a8a232dc29fb409b83e languageName: node linkType: hard @@ -2781,8 +2781,8 @@ __metadata: version: 0.14.5 resolution: "@solidity-parser/parser@npm:0.14.5" dependencies: - antlr4ts: ^0.5.0-alpha.4 - checksum: 9e85a0d4f8a05a11db6022444b70b2f353e2358467b1cce44cdda703ae1e3c7337e1b8cbc2eec8e14a8f34f9c60b42f325e5fe9b3c934cc980e35091e292d7ee + antlr4ts: "npm:^0.5.0-alpha.4" + checksum: 10/5ceb5601cf0b65cfcea86adf3efa3918cc377fff50cec361a3a0987de6c1ec79c5b5c4be8cc67df55d5a26f3243b35813a71f3d2e26f258fb38ce8158be97ea6 languageName: node linkType: hard @@ -2790,8 +2790,8 @@ __metadata: version: 4.0.6 resolution: "@szmarczak/http-timer@npm:4.0.6" dependencies: - defer-to-connect: ^2.0.0 - checksum: c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 + defer-to-connect: "npm:^2.0.0" + checksum: 10/c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 languageName: node linkType: hard @@ -2799,22 +2799,22 @@ __metadata: version: 5.0.1 resolution: "@szmarczak/http-timer@npm:5.0.1" dependencies: - defer-to-connect: ^2.0.1 - checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 + defer-to-connect: "npm:^2.0.1" + checksum: 10/fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 languageName: node linkType: hard "@tootallnate/once@npm:1": version: 1.1.2 resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 + checksum: 10/e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 languageName: node linkType: hard "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + checksum: 10/ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 languageName: node linkType: hard @@ -2822,9 +2822,9 @@ __metadata: version: 1.1.10 resolution: "@trufflesuite/bigint-buffer@npm:1.1.10" dependencies: - node-gyp: latest - node-gyp-build: 4.4.0 - checksum: e1dc5e4fbf348a55e660c0055267021eb04cbbdb7f6b0ee983ad32cd4aae1200be448a2ca3963c7d19c7c936d42f66c1ff8b5e4e2332cb1a9e3f870ff818dce4 + node-gyp: "npm:latest" + node-gyp-build: "npm:4.4.0" + checksum: 10/544b39fe3c7ebf895359bc46d255e350c723700601498674c8797bc2e6b6139cb898307530331d1c96821faa0b4a63d5a38876b4b32891dc3a4b3422014df0bf languageName: node linkType: hard @@ -2832,37 +2832,37 @@ __metadata: version: 1.1.9 resolution: "@trufflesuite/bigint-buffer@npm:1.1.9" dependencies: - node-gyp: latest - node-gyp-build: 4.3.0 - checksum: 627dcff2cae7afe31432646232518363869e89b300f90f88ca68d903d0bdc79119975a5bc338223c03c1a4484cfac6d9cf4413ef20933a69eee48dd925519165 + node-gyp: "npm:latest" + node-gyp-build: "npm:4.3.0" + checksum: 10/e175bcfdaffe53a5e787146ea93e7687a3d755217a6a736e1efb7cfb9b7230f56671f5d4aa2fc29dba932da76ec26848014912c47c8bee839275fa75e17d01f1 languageName: node linkType: hard "@tsconfig/node10@npm:^1.0.7": version: 1.0.9 resolution: "@tsconfig/node10@npm:1.0.9" - checksum: a33ae4dc2a621c0678ac8ac4bceb8e512ae75dac65417a2ad9b022d9b5411e863c4c198b6ba9ef659e14b9fb609bbec680841a2e84c1172df7a5ffcf076539df + checksum: 10/a33ae4dc2a621c0678ac8ac4bceb8e512ae75dac65417a2ad9b022d9b5411e863c4c198b6ba9ef659e14b9fb609bbec680841a2e84c1172df7a5ffcf076539df languageName: node linkType: hard "@tsconfig/node12@npm:^1.0.7": version: 1.0.11 resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a + checksum: 10/5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a languageName: node linkType: hard "@tsconfig/node14@npm:^1.0.0": version: 1.0.3 resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d + checksum: 10/19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d languageName: node linkType: hard "@tsconfig/node16@npm:^1.0.2": version: 1.0.3 resolution: "@tsconfig/node16@npm:1.0.3" - checksum: 3a8b657dd047495b7ad23437d6afd20297ce90380ff0bdee93fc7d39a900dbd8d9e26e53ff6b465e7967ce2adf0b218782590ce9013285121e6a5928fbd6819f + checksum: 10/3a8b657dd047495b7ad23437d6afd20297ce90380ff0bdee93fc7d39a900dbd8d9e26e53ff6b465e7967ce2adf0b218782590ce9013285121e6a5928fbd6819f languageName: node linkType: hard @@ -2870,8 +2870,8 @@ __metadata: version: 10.2.0 resolution: "@typechain/ethers-v5@npm:10.2.0" dependencies: - lodash: ^4.17.15 - ts-essentials: ^7.0.1 + lodash: "npm:^4.17.15" + ts-essentials: "npm:^7.0.1" peerDependencies: "@ethersproject/abi": ^5.0.0 "@ethersproject/bytes": ^5.0.0 @@ -2879,21 +2879,21 @@ __metadata: ethers: ^5.1.3 typechain: ^8.1.1 typescript: ">=4.3.0" - checksum: 22f7109f22a6e2b459c45aaf5424143b6129455659aa132ab447ed14d24bb68a6b3b4021008244faca743d469208037a7766d3d9c3ab49db42d36f4e382887c4 + checksum: 10/1cad4d5947728dbe2de28e87692c35f9cdb5fea6925299d27b062d4a17bb8108a9ea8f5f656944f4cbd2d5d0c77e88cccd969c3ac683f41ad6b896b9089b271e languageName: node linkType: hard "@types/abstract-leveldown@npm:*": version: 7.2.1 resolution: "@types/abstract-leveldown@npm:7.2.1" - checksum: 20689e7d144ce26d2384e2e151eed59046c95d573a6988da5e77e3076808eb4f435f474a0387af9ac786bfbfc7089e277dcfd9572ae902553d5c018e9b527a30 + checksum: 10/20689e7d144ce26d2384e2e151eed59046c95d573a6988da5e77e3076808eb4f435f474a0387af9ac786bfbfc7089e277dcfd9572ae902553d5c018e9b527a30 languageName: node linkType: hard "@types/async-eventemitter@npm:^0.2.1": version: 0.2.1 resolution: "@types/async-eventemitter@npm:0.2.1" - checksum: 36ba0a6f52082f76b19b9123a2fa0497f94fe15218fa54040cc45f0edff483ec3be93a38c177cd4dab79f5e32333fbdf3682d4dc94197438e86694b1fddd6896 + checksum: 10/52f6a9c6773edec9bc8449273de8b08fca45ebbf1907c755cd67be9aca4f26988aebb6d0e461aecf01463b76f0e1b427f149a8ce54d27cec191702488c676f48 languageName: node linkType: hard @@ -2901,12 +2901,12 @@ __metadata: version: 7.20.0 resolution: "@types/babel__core@npm:7.20.0" dependencies: - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 49b601a0a7637f1f387442c8156bd086cfd10ff4b82b0e1994e73a6396643b5435366fb33d6b604eade8467cca594ef97adcbc412aede90bb112ebe88d0ad6df + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10/b82e432bfc42075d4f6218e5ed5c4a7cdeb087e0416f969fc65a755c41d129d7e369c93e9a9dc59d43291327aa8d7cd149f3573d1c3b54d0192561d02bb225eb languageName: node linkType: hard @@ -2914,8 +2914,8 @@ __metadata: version: 7.6.4 resolution: "@types/babel__generator@npm:7.6.4" dependencies: - "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 + "@babel/types": "npm:^7.0.0" + checksum: 10/34f361a0d54a0d85ea4c4b5122c4025a5738fe6795361c85f07a4f8f9add383de640e8611edeeb8339db8203c2d64bff30be266bdcfe3cf777c19e8d34f9cebc languageName: node linkType: hard @@ -2923,9 +2923,9 @@ __metadata: version: 7.4.1 resolution: "@types/babel__template@npm:7.4.1" dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10/649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee languageName: node linkType: hard @@ -2933,8 +2933,8 @@ __metadata: version: 7.18.3 resolution: "@types/babel__traverse@npm:7.18.3" dependencies: - "@babel/types": ^7.3.0 - checksum: d20953338b2f012ab7750932ece0a78e7d1645b0a6ff42d49be90f55e9998085da1374a9786a7da252df89555c6586695ba4d1d4b4e88ab2b9f306bcd35e00d3 + "@babel/types": "npm:^7.3.0" + checksum: 10/efa35b698a328e0faf3d833598a388e592e9dcf2b069857aae6f3f96fada56df8fc5f20fa1b81f8e5c239112e7c3c5867608daad7eebeb895c43844f005cbc06 languageName: node linkType: hard @@ -2942,8 +2942,8 @@ __metadata: version: 4.11.6 resolution: "@types/bn.js@npm:4.11.6" dependencies: - "@types/node": "*" - checksum: 7f66f2c7b7b9303b3205a57184261974b114495736b77853af5b18d857c0b33e82ce7146911e86e87a87837de8acae28986716fd381ac7c301fd6e8d8b6c811f + "@types/node": "npm:*" + checksum: 10/9ff3e7a1539a953c381c0d30ea2049162e3cab894cda91ee10f3a84d603f9afa2b2bc2a38fe9b427de94b6e2b7b77aefd217c1c7b07a10ae8d7499f9d6697a41 languageName: node linkType: hard @@ -2951,8 +2951,8 @@ __metadata: version: 5.1.1 resolution: "@types/bn.js@npm:5.1.1" dependencies: - "@types/node": "*" - checksum: e50ed2dd3abe997e047caf90e0352c71e54fc388679735217978b4ceb7e336e51477791b715f49fd77195ac26dd296c7bad08a3be9750e235f9b2e1edb1b51c2 + "@types/node": "npm:*" + checksum: 10/cf2c45833e67ecfc45e5336151965a47857431640b61708b6e4dc81d88ed53585c9b30be59abbbee609cdf7a63828e5b8a58c1a27eb4306e5cb7ddd9bad46650 languageName: node linkType: hard @@ -2960,11 +2960,11 @@ __metadata: version: 6.0.3 resolution: "@types/cacheable-request@npm:6.0.3" dependencies: - "@types/http-cache-semantics": "*" - "@types/keyv": ^3.1.4 - "@types/node": "*" - "@types/responselike": ^1.0.0 - checksum: d9b26403fe65ce6b0cb3720b7030104c352bcb37e4fac2a7089a25a97de59c355fa08940658751f2f347a8512aa9d18fdb66ab3ade835975b2f454f2d5befbd9 + "@types/http-cache-semantics": "npm:*" + "@types/keyv": "npm:^3.1.4" + "@types/node": "npm:*" + "@types/responselike": "npm:^1.0.0" + checksum: 10/159f9fdb2a1b7175eef453ae2ced5ea04c0d2b9610cc9ccd9f9abb066d36dacb1f37acd879ace10ad7cbb649490723feb396fb7307004c9670be29636304b988 languageName: node linkType: hard @@ -2972,8 +2972,8 @@ __metadata: version: 1.6.1 resolution: "@types/concat-stream@npm:1.6.1" dependencies: - "@types/node": "*" - checksum: 7d211e74331affd3578b5469244f5cef84a93775f38332adb3ef12413559a23862bc682c6873d0a404b01c9d5d5f7d3ae091fe835b435b633eb420e3055b3e56 + "@types/node": "npm:*" + checksum: 10/7d211e74331affd3578b5469244f5cef84a93775f38332adb3ef12413559a23862bc682c6873d0a404b01c9d5d5f7d3ae091fe835b435b633eb420e3055b3e56 languageName: node linkType: hard @@ -2981,8 +2981,8 @@ __metadata: version: 0.0.33 resolution: "@types/form-data@npm:0.0.33" dependencies: - "@types/node": "*" - checksum: f0c283fdef2dd7191168a37b9cb2625af3cfbd7f72b5a514f938bea0a135669f79d736186d434b9e81150b47ef1bf20d97b188014a00583556fad6ce59fb9bbf + "@types/node": "npm:*" + checksum: 10/f0c7437e9dd7b348cf7de772bf9c5ad810ecaec767b9199cfc600f4929d600212b52d1acd5a1c674e1ceec5e063cb4d9ce96c8e479aea8dacd56371e04aab836 languageName: node linkType: hard @@ -2990,9 +2990,9 @@ __metadata: version: 7.2.0 resolution: "@types/glob@npm:7.2.0" dependencies: - "@types/minimatch": "*" - "@types/node": "*" - checksum: 6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19 + "@types/minimatch": "npm:*" + "@types/node": "npm:*" + checksum: 10/6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19 languageName: node linkType: hard @@ -3000,22 +3000,22 @@ __metadata: version: 4.1.6 resolution: "@types/graceful-fs@npm:4.1.6" dependencies: - "@types/node": "*" - checksum: c3070ccdc9ca0f40df747bced1c96c71a61992d6f7c767e8fd24bb6a3c2de26e8b84135ede000b7e79db530a23e7e88dcd9db60eee6395d0f4ce1dae91369dd4 + "@types/node": "npm:*" + checksum: 10/c3070ccdc9ca0f40df747bced1c96c71a61992d6f7c767e8fd24bb6a3c2de26e8b84135ede000b7e79db530a23e7e88dcd9db60eee6395d0f4ce1dae91369dd4 languageName: node linkType: hard "@types/http-cache-semantics@npm:*": version: 4.0.1 resolution: "@types/http-cache-semantics@npm:4.0.1" - checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 + checksum: 10/d059bf8a15d5163cc60da51ba00d17620507f968d0b792cd55f62043016344a5f0e1aa94fa411089d41114035fcd0ea656f968bda7eabb6663a97787e3445a1c languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 + checksum: 10/a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 languageName: node linkType: hard @@ -3023,8 +3023,8 @@ __metadata: version: 3.0.0 resolution: "@types/istanbul-lib-report@npm:3.0.0" dependencies: - "@types/istanbul-lib-coverage": "*" - checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10/f121dcac8a6b8184f3cab97286d8d519f1937fa8620ada5dbc43b699d602b8be289e4a4bccbd6ee1aade6869d3c9fb68bf04c6fdca8c5b0c4e7e314c31c7900a languageName: node linkType: hard @@ -3032,8 +3032,8 @@ __metadata: version: 3.0.1 resolution: "@types/istanbul-reports@npm:3.0.1" dependencies: - "@types/istanbul-lib-report": "*" - checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 + "@types/istanbul-lib-report": "npm:*" + checksum: 10/f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 languageName: node linkType: hard @@ -3041,16 +3041,16 @@ __metadata: version: 29.5.12 resolution: "@types/jest@npm:29.5.12" dependencies: - expect: ^29.0.0 - pretty-format: ^29.0.0 - checksum: 19b1efdeed9d9a60a81edc8226cdeae5af7479e493eaed273e01243891c9651f7b8b4c08fc633a7d0d1d379b091c4179bbaa0807af62542325fd72f2dd17ce1c + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10/312e8dcf92cdd5a5847d6426f0940829bca6fe6b5a917248f3d7f7ef5d85c9ce78ef05e47d2bbabc40d41a930e0e36db2d443d2610a9e3db9062da2d5c904211 languageName: node linkType: hard "@types/js-yaml@npm:^4.0.5": version: 4.0.5 resolution: "@types/js-yaml@npm:4.0.5" - checksum: 7dcac8c50fec31643cc9d6444b5503239a861414cdfaa7ae9a38bc22597c4d850c4b8cec3d82d73b3fbca408348ce223b0408d598b32e094470dfffc6d486b4d + checksum: 10/6fff5f47d97070f1a01022517ce4bd81a0cfac7cd30f9dbc7222dc5f8db4bfe5f5c8cba3f4b02bdbd6f31f691050db97395b33c8df66d1e7c4f66096b41a3df6 languageName: node linkType: hard @@ -3058,15 +3058,15 @@ __metadata: version: 3.1.4 resolution: "@types/keyv@npm:3.1.4" dependencies: - "@types/node": "*" - checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d + "@types/node": "npm:*" + checksum: 10/e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d languageName: node linkType: hard "@types/level-errors@npm:*": version: 3.0.0 resolution: "@types/level-errors@npm:3.0.0" - checksum: ad9392663439306677ac9cb704f8fa0b64c300dfea4f3494369eb78a2e09c194156cbab2b52c71a361a09b735d54a2de65195dcadba0ec7db1d14a320198133e + checksum: 10/ad9392663439306677ac9cb704f8fa0b64c300dfea4f3494369eb78a2e09c194156cbab2b52c71a361a09b735d54a2de65195dcadba0ec7db1d14a320198133e languageName: node linkType: hard @@ -3074,38 +3074,38 @@ __metadata: version: 4.3.3 resolution: "@types/levelup@npm:4.3.3" dependencies: - "@types/abstract-leveldown": "*" - "@types/level-errors": "*" - "@types/node": "*" - checksum: 04969bb805035960b8d6650e8f76893be7ba70267bb7012f6f00d67a0cf096ada552355629791b3f5925e9cdb6912d3fe08892c33c3c583e8fd02099b573bdd7 + "@types/abstract-leveldown": "npm:*" + "@types/level-errors": "npm:*" + "@types/node": "npm:*" + checksum: 10/eb8a653d0d7c63a356d90e2e649c421399281139ca8c52d524384172f84678a68425a97e97dc3fe60cd8177f4c543b0414c44d34af353ebcc44e030beaf48493 languageName: node linkType: hard "@types/long@npm:^4.0.1": version: 4.0.2 resolution: "@types/long@npm:4.0.2" - checksum: d16cde7240d834cf44ba1eaec49e78ae3180e724cd667052b194a372f350d024cba8dd3f37b0864931683dab09ca935d52f0c4c1687178af5ada9fc85b0635f4 + checksum: 10/68afa05fb20949d88345876148a76f6ccff5433310e720db51ac5ca21cb8cc6714286dbe04713840ddbd25a8b56b7a23aa87d08472fabf06463a6f2ed4967707 languageName: node linkType: hard "@types/lru-cache@npm:5.1.1, @types/lru-cache@npm:^5.1.0": version: 5.1.1 resolution: "@types/lru-cache@npm:5.1.1" - checksum: e1d6c0085f61b16ec5b3073ec76ad1be4844ea036561c3f145fc19f71f084b58a6eb600b14128aa95809d057d28f1d147c910186ae51219f58366ffd2ff2e118 + checksum: 10/0afadefc983306684a8ef95b6337a0d9e3f687e7e89e1f1f3f2e1ce3fbab5b018bb84cf277d781f871175a2c8f0176762b69e58b6f4296ee1b816cea94d5ef06 languageName: node linkType: hard "@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" - checksum: 0391a282860c7cb6fe262c12b99564732401bdaa5e395bee9ca323c312c1a0f45efbf34dce974682036e857db59a5c9b1da522f3d6055aeead7097264c8705a8 + checksum: 10/94db5060d20df2b80d77b74dd384df3115f01889b5b6c40fa2dfa27cfc03a68fb0ff7c1f2a0366070263eb2e9d6bfd8c87111d4bc3ae93c3f291297c1bf56c85 languageName: node linkType: hard "@types/minimatch@npm:^3.0.3": version: 3.0.5 resolution: "@types/minimatch@npm:3.0.5" - checksum: c41d136f67231c3131cf1d4ca0b06687f4a322918a3a5adddc87ce90ed9dbd175a3610adee36b106ae68c0b92c637c35e02b58c8a56c424f71d30993ea220b92 + checksum: 10/c41d136f67231c3131cf1d4ca0b06687f4a322918a3a5adddc87ce90ed9dbd175a3610adee36b106ae68c0b92c637c35e02b58c8a56c424f71d30993ea220b92 languageName: node linkType: hard @@ -3113,8 +3113,8 @@ __metadata: version: 0.5.2 resolution: "@types/mkdirp@npm:0.5.2" dependencies: - "@types/node": "*" - checksum: 21e6681ee18cee6314dbe0f57ada48981912b76de8266f438ba2573770d60aaa8dd376baad3f20e2346696a7cca84b0aadd1737222341553a0091831a46e6ad1 + "@types/node": "npm:*" + checksum: 10/c3c2c244ec6961bf7a565d44b21dcb94368e01804c3a6783a2b8b11231fe496eca8d5b6f06f3b385b9ad2c0e0fc8ea10b3ddf66f4052214334df53eacad58e6e languageName: node linkType: hard @@ -3122,44 +3122,44 @@ __metadata: version: 2.6.2 resolution: "@types/node-fetch@npm:2.6.2" dependencies: - "@types/node": "*" - form-data: ^3.0.0 - checksum: 6f73b1470000d303d25a6fb92875ea837a216656cb7474f66cdd67bb014aa81a5a11e7ac9c21fe19bee9ecb2ef87c1962bceeaec31386119d1ac86e4c30ad7a6 + "@types/node": "npm:*" + form-data: "npm:^3.0.0" + checksum: 10/8f964e8372f6221e99c9421985bc22b7786db665b886e3db0d17a985faf617c069f49b71c02d93a6585809bd692063f483068abc86a1291cb9762fada4823c21 languageName: node linkType: hard "@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^18.0.0": version: 18.14.1 resolution: "@types/node@npm:18.14.1" - checksum: 58556bbdb0050e44a4934742c1da2530812782c06d266a758e669e44c5aa196166c5fce45fdb03f016876717e3840478b3220129bb77367f979607564047f0a3 + checksum: 10/6dd6393789367eef5cea2b752fceb6038f4ef7bbc1b9fa49401f181e29b657480d3cdfabf84e58b8dc21f182cb2aafec890ca16ed4761c7e03226a12e3c09cea languageName: node linkType: hard "@types/node@npm:11.11.6": version: 11.11.6 resolution: "@types/node@npm:11.11.6" - checksum: 075f1c011cf568e49701419acbcb55c24906b3bb5a34d9412a3b88f228a7a78401a5ad4d3e1cd6855c99aaea5ef96e37fc86ca097e50f06da92cf822befc1fff + checksum: 10/3b0be5fe7104dc24d34271cb043149dab55317356bc20d7f3871dc9cb60954dc77ffc6b0531b00c3de32a748c207db769b925f17dbe03565f8a4a5001acbf367 languageName: node linkType: hard "@types/node@npm:^10.0.3": version: 10.17.60 resolution: "@types/node@npm:10.17.60" - checksum: 2cdb3a77d071ba8513e5e8306fa64bf50e3c3302390feeaeff1fd325dd25c8441369715dfc8e3701011a72fed5958c7dfa94eb9239a81b3c286caa4d97db6eef + checksum: 10/f9161493b3284b1d41d5d594c2768625acdd9e33f992f71ccde47861916e662e2ae438d2cc5f1b285053391a31b52a7564ecedc22d485610d236bfad9c7e6a1c languageName: node linkType: hard "@types/node@npm:^12.12.6": version: 12.20.55 resolution: "@types/node@npm:12.20.55" - checksum: e4f86785f4092706e0d3b0edff8dca5a13b45627e4b36700acd8dfe6ad53db71928c8dee914d4276c7fd3b6ccd829aa919811c9eb708a2c8e4c6eb3701178c37 + checksum: 10/1f916a06fff02faadb09a16ed6e31820ce170798b202ef0b14fc244bfbd721938c54a3a99836e185e4414ca461fe96c5bb5c67c3d248f153555b7e6347f061dd languageName: node linkType: hard "@types/node@npm:^8.0.0": version: 8.10.66 resolution: "@types/node@npm:8.10.66" - checksum: c52039de862654a139abdc6a51de532a69dd80516ac35a959c3b3a2831ecbaaf065b0df5f9db943f5e28b544ebb9a891730d52b52f7a169b86a82bc060210000 + checksum: 10/49a93cbeeca74e247970b5c2130abe8204587b6d3c5ec259543e7511234e5fa340341668155807ade7a86c22dab1ec8ee18c0ac745e4d54679de1b2dabd99363 languageName: node linkType: hard @@ -3167,22 +3167,22 @@ __metadata: version: 3.1.0 resolution: "@types/pbkdf2@npm:3.1.0" dependencies: - "@types/node": "*" - checksum: d15024b1957c21cf3b8887329d9bd8dfde754cf13a09d76ae25f1391cfc62bb8b8d7b760773c5dbaa748172fba8b3e0c3dbe962af6ccbd69b76df12a48dfba40 + "@types/node": "npm:*" + checksum: 10/d15024b1957c21cf3b8887329d9bd8dfde754cf13a09d76ae25f1391cfc62bb8b8d7b760773c5dbaa748172fba8b3e0c3dbe962af6ccbd69b76df12a48dfba40 languageName: node linkType: hard "@types/prettier@npm:^2.1.1": version: 2.7.2 resolution: "@types/prettier@npm:2.7.2" - checksum: b47d76a5252265f8d25dd2fe2a5a61dc43ba0e6a96ffdd00c594cb4fd74c1982c2e346497e3472805d97915407a09423804cc2110a0b8e1b22cffcab246479b7 + checksum: 10/8b91984884220a4b14b8b0803b5ed02acfe7b8cbee3f4d814e7c021818fbaf936b0d8a67b9aa1bb6c0126fbdd788432095416ffcf48576de71541e998717b18a languageName: node linkType: hard "@types/qs@npm:^6.2.31": version: 6.9.7 resolution: "@types/qs@npm:6.9.7" - checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba + checksum: 10/7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba languageName: node linkType: hard @@ -3190,8 +3190,8 @@ __metadata: version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" dependencies: - "@types/node": "*" - checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 + "@types/node": "npm:*" + checksum: 10/e4972389457e4edce3cbba5e8474fb33684d73879433a9eec989d0afb7e550fd6fa3ffb8fe68dbb429288d10707796a193bc0007c4e8429fd267bdc4d8404632 languageName: node linkType: hard @@ -3199,29 +3199,29 @@ __metadata: version: 4.0.3 resolution: "@types/secp256k1@npm:4.0.3" dependencies: - "@types/node": "*" - checksum: 1bd10b9afa724084b655dc81b7b315def3d2d0e272014ef16009fa76e17537411c07c0695fdea412bc7b36d2a02687f5fea33522d55b8ef29eda42992f812913 + "@types/node": "npm:*" + checksum: 10/aa8176f3fb9a9f37189592425cb6bfec4ffcf3dc397f2bfd8e3acd06be25f5213cbc0df01f541c7cc955b906a61befd5c1092d46adc62e489970bfebf4409e1d languageName: node linkType: hard "@types/seedrandom@npm:3.0.1": version: 3.0.1 resolution: "@types/seedrandom@npm:3.0.1" - checksum: d9755452f224a4f5072a1d8738da6c9de3039fc59a2a449b1f658e51087be7b48ada49bcabc8b0f16633c095f55598c32fcd072c448858422a2f6a0566569e4c + checksum: 10/d9755452f224a4f5072a1d8738da6c9de3039fc59a2a449b1f658e51087be7b48ada49bcabc8b0f16633c095f55598c32fcd072c448858422a2f6a0566569e4c languageName: node linkType: hard "@types/stack-utils@npm:^2.0.0": version: 2.0.1 resolution: "@types/stack-utils@npm:2.0.1" - checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 + checksum: 10/205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 languageName: node linkType: hard "@types/triple-beam@npm:^1.3.2": version: 1.3.3 resolution: "@types/triple-beam@npm:1.3.3" - checksum: e2d54d27536a7a7cd1e4c6e9f3799a894aa5b2dc00b8dba656be7c038c3c1dedd6236551afa9c9c6ce32b0d691e1468bc124f899be0d832bc6ddea4e830107d6 + checksum: 10/e2d54d27536a7a7cd1e4c6e9f3799a894aa5b2dc00b8dba656be7c038c3c1dedd6236551afa9c9c6ce32b0d691e1468bc124f899be0d832bc6ddea4e830107d6 languageName: node linkType: hard @@ -3229,15 +3229,15 @@ __metadata: version: 8.5.5 resolution: "@types/ws@npm:8.5.5" dependencies: - "@types/node": "*" - checksum: d00bf8070e6938e3ccf933010921c6ce78ac3606696ce37a393b27a9a603f7bd93ea64f3c5fa295a2f743575ba9c9a9fdb904af0f5fe2229bf2adf0630386e4a + "@types/node": "npm:*" + checksum: 10/b2d7da5bd469c2ff1ddcfba1da33a556dc02c539e727001e7dc7b4182935154143e96a101cc091686acefb4e115c8ee38111c6634934748b8dd2db0c851c50ab languageName: node linkType: hard "@types/yargs-parser@npm:*": version: 21.0.0 resolution: "@types/yargs-parser@npm:21.0.0" - checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 + checksum: 10/c4caec730c1ee09466588389ba4ac83d85a01423c539b9565bb5b5a084bff3f4e47bfb7c06e963c0ef8d4929cf6fca0bc2923a33ef16727cdba60e95c8cdd0d0 languageName: node linkType: hard @@ -3245,15 +3245,15 @@ __metadata: version: 17.0.22 resolution: "@types/yargs@npm:17.0.22" dependencies: - "@types/yargs-parser": "*" - checksum: 0773523fda71bafdc52f13f5970039e535a353665a60ba9261149a5c9c2b908242e6e77fbb7a8c06931ec78ce889d64d09673c68ba23eb5f5742d5385d0d1982 + "@types/yargs-parser": "npm:*" + checksum: 10/39563a907c4a70fc972e8955f0fda5f980190d2248bc6ec1c4e8448bae3a1f46dc408352b2dc1489fe53830c264bd6a170ec2973f2a2f4ba3b379df255b5b338 languageName: node linkType: hard "@vladfrangu/async_event_emitter@npm:^2.2.2": version: 2.2.2 resolution: "@vladfrangu/async_event_emitter@npm:2.2.2" - checksum: ed948294fea1a2dc8b8f307f4061bf65e2043a946132f288702f0572a806ebe3123b8c7e522e70d2abbd3616f5d67027c9e59df9ef80b0195f7502a848a426ba + checksum: 10/1c1fcee04aecfa3cceb05e9bcd3a8aae053ce0512e79e7f878a5d2b8458a926aa3e6da553be0a431e7acb58d9aec3df435a845653a642b864c6b67e2a44ec40c languageName: node linkType: hard @@ -3261,25 +3261,25 @@ __metadata: version: 0.0.0-use.local resolution: "DendrETH-darwinia@workspace:beacon-light-client/solidity" dependencies: - "@chainsafe/bls": ^6.0.3 - "@chainsafe/blst": 0.2.4 - "@chainsafe/lodestar-types": ^0.34.4 - "@chainsafe/ssz": ^0.9.2 - "@iden3/binfileutils": ^0.0.11 - "@noble/bls12-381": ^1.3.0 - "@nomiclabs/hardhat-ethers": ^2.2.2 - "@nomiclabs/hardhat-etherscan": ^3.1.7 - "@nomiclabs/hardhat-waffle": ^2.0.3 - await-exec: ^0.1.2 - chai: ^4.3.6 - circom_tester: ^0.0.14 - crypto-js: ^4.1.1 - ethers: ^5.6.9 - hardhat: 2.10.2 - hardhat-gas-reporter: ^1.0.8 - r1csfile: ^0.0.40 - snarkjs: ^0.4.24 - ts-node: ^10.9.1 + "@chainsafe/bls": "npm:^6.0.3" + "@chainsafe/blst": "npm:0.2.4" + "@chainsafe/lodestar-types": "npm:^0.34.4" + "@chainsafe/ssz": "npm:^0.9.2" + "@iden3/binfileutils": "npm:^0.0.11" + "@noble/bls12-381": "npm:^1.3.0" + "@nomiclabs/hardhat-ethers": "npm:^2.2.2" + "@nomiclabs/hardhat-etherscan": "npm:^3.1.7" + "@nomiclabs/hardhat-waffle": "npm:^2.0.3" + await-exec: "npm:^0.1.2" + chai: "npm:^4.3.6" + circom_tester: "npm:^0.0.14" + crypto-js: "npm:^4.1.1" + ethers: "npm:^5.6.9" + hardhat: "npm:2.10.2" + hardhat-gas-reporter: "npm:^1.0.8" + r1csfile: "npm:^0.0.40" + snarkjs: "npm:^0.4.24" + ts-node: "npm:^10.9.1" languageName: unknown linkType: soft @@ -3287,46 +3287,46 @@ __metadata: version: 0.0.0-use.local resolution: "DendrETH@workspace:." dependencies: - "@chainsafe/bls": ^6.0.3 - "@chainsafe/blst": ^0.2.4 - "@chainsafe/ssz": ^0.9.2 - "@cosmjs/cosmwasm-stargate": ^0.30.0 - "@cosmjs/proto-signing": ^0.30.0 - "@cosmjs/stargate": ^0.30.0 - "@iden3/binfileutils": ^0.0.11 - "@lodestar/types": 1.4.1 - "@mevitae/redis-work-queue": ^0.0.4 - "@noble/bls12-381": ^1.3.0 - "@nomiclabs/hardhat-ethers": ^2.1.1 - "@nomiclabs/hardhat-etherscan": ^3.1.0 - "@nomiclabs/hardhat-waffle": ^2.0.3 - "@types/glob": ^7.2.0 - "@types/jest": ^29.5.12 - "@types/node": ^18.0.0 - bullmq: ^3.7.1 - circom_tester: ^0.0.14 - circomlibjs: ^0.1.7 - crypto-js: ^4.1.1 - dotenv: ^16.0.2 - ethers: ^5.7.0 - ffjavascript: ^0.2.59 - glob: ^8.0.3 - hardhat: ^2.10.2 - hardhat-gas-reporter: ^1.0.8 - jest: ^29.7.0 - prettier: ^2.6.2 - prom-client: ^14.2.0 - r1csfile: ^0.0.40 - redis: ^4.6.5 - redis-commander: ^0.8.0 - snarkit2: ^0.2.0 + "@chainsafe/bls": "npm:^6.0.3" + "@chainsafe/blst": "npm:^0.2.4" + "@chainsafe/ssz": "npm:^0.9.2" + "@cosmjs/cosmwasm-stargate": "npm:^0.30.0" + "@cosmjs/proto-signing": "npm:^0.30.0" + "@cosmjs/stargate": "npm:^0.30.0" + "@iden3/binfileutils": "npm:^0.0.11" + "@lodestar/types": "npm:1.4.1" + "@mevitae/redis-work-queue": "npm:^0.0.4" + "@noble/bls12-381": "npm:^1.3.0" + "@nomiclabs/hardhat-ethers": "npm:^2.1.1" + "@nomiclabs/hardhat-etherscan": "npm:^3.1.0" + "@nomiclabs/hardhat-waffle": "npm:^2.0.3" + "@types/glob": "npm:^7.2.0" + "@types/jest": "npm:^29.5.12" + "@types/node": "npm:^18.0.0" + bullmq: "npm:^3.7.1" + circom_tester: "npm:^0.0.14" + circomlibjs: "npm:^0.1.7" + crypto-js: "npm:^4.1.1" + dotenv: "npm:^16.0.2" + ethers: "npm:^5.7.0" + ffjavascript: "npm:^0.2.59" + glob: "npm:^8.0.3" + hardhat: "npm:^2.10.2" + hardhat-gas-reporter: "npm:^1.0.8" + jest: "npm:^29.7.0" + prettier: "npm:^2.6.2" + prom-client: "npm:^14.2.0" + r1csfile: "npm:^0.0.40" + redis: "npm:^4.6.5" + redis-commander: "npm:^0.8.0" + snarkit2: "npm:^0.2.0" snarkjs: "github:metacraft-labs/snarkjs" - ts-jest: ^29.1.2 - ts-node: ^10.9.1 - typescript: 5.2.2 - uuid: ^9.0.0 - winston: ^3.10.0 - yargs: ^17.7.1 + ts-jest: "npm:^29.1.2" + ts-node: "npm:^10.9.1" + typescript: "npm:5.2.2" + uuid: "npm:^9.0.0" + winston: "npm:^3.10.0" + yargs: "npm:^17.7.1" languageName: unknown linkType: soft @@ -3334,19 +3334,19 @@ __metadata: version: 0.0.0-use.local resolution: "Relay@workspace:relay" dependencies: - "@effect/schema": ^0.33.0 - discord.js: ^14.12.1 - ts-node: ^10.9.1 - web3: ^1.10.0 - winston: ^3.10.0 - yargs: ^17.7.1 + "@effect/schema": "npm:^0.33.0" + discord.js: "npm:^14.12.1" + ts-node: "npm:^10.9.1" + web3: "npm:^1.10.0" + winston: "npm:^3.10.0" + yargs: "npm:^17.7.1" languageName: unknown linkType: soft "abbrev@npm:1, abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + checksum: 10/2d882941183c66aa665118bafdab82b7a177e9add5eb2776c33e960a4f3c89cff88a1b38aba13a456de01d0dd9d66a8bea7c903268b21ea91dd1097e1e2e8243 languageName: node linkType: hard @@ -3354,15 +3354,15 @@ __metadata: version: 3.0.0 resolution: "abort-controller@npm:3.0.0" dependencies: - event-target-shim: ^5.0.0 - checksum: 170bdba9b47b7e65906a28c8ce4f38a7a369d78e2271706f020849c1bfe0ee2067d4261df8bbb66eb84f79208fd5b710df759d64191db58cfba7ce8ef9c54b75 + event-target-shim: "npm:^5.0.0" + checksum: 10/ed84af329f1828327798229578b4fe03a4dd2596ba304083ebd2252666bdc1d7647d66d0b18704477e1f8aa315f055944aa6e859afebd341f12d0a53c37b4b40 languageName: node linkType: hard "abortcontroller-polyfill@npm:^1.7.3": version: 1.7.5 resolution: "abortcontroller-polyfill@npm:1.7.5" - checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa + checksum: 10/aac398f7fc076235fe731adaffd2c319fe6c1527af8ca561890242d5396351350e0705726478778dc90326a69a4c044890c156fe867cba7f3ffeb670f8665a51 languageName: node linkType: hard @@ -3370,14 +3370,14 @@ __metadata: version: 1.0.3 resolution: "abstract-level@npm:1.0.3" dependencies: - buffer: ^6.0.3 - catering: ^2.1.0 - is-buffer: ^2.0.5 - level-supports: ^4.0.0 - level-transcoder: ^1.0.1 - module-error: ^1.0.1 - queue-microtask: ^1.2.3 - checksum: 70d61a3924526ebc257b138992052f9ff571a6cee5a7660836e37a1cc7081273c3acf465dd2f5e1897b38dc743a6fd9dba14a5d8a2a9d39e5787cd3da99f301d + buffer: "npm:^6.0.3" + catering: "npm:^2.1.0" + is-buffer: "npm:^2.0.5" + level-supports: "npm:^4.0.0" + level-transcoder: "npm:^1.0.1" + module-error: "npm:^1.0.1" + queue-microtask: "npm:^1.2.3" + checksum: 10/a6872010a7be78240e1e5bf24b202950adbbd2a382970e17cc661ac8a73663327c241dc25f2863e599f3f5b24d0c3c357b5af4092c4ce34511bae1c09283a278 languageName: node linkType: hard @@ -3385,12 +3385,12 @@ __metadata: version: 6.3.0 resolution: "abstract-leveldown@npm:6.3.0" dependencies: - buffer: ^5.5.0 - immediate: ^3.2.3 - level-concat-iterator: ~2.0.0 - level-supports: ~1.0.0 - xtend: ~4.0.0 - checksum: 121a8509d8c6a540e656c2a69e5b8d853d4df71072011afefc868b98076991bb00120550e90643de9dc18889c675f62413409eeb4c8c204663124c7d215e4ec3 + buffer: "npm:^5.5.0" + immediate: "npm:^3.2.3" + level-concat-iterator: "npm:~2.0.0" + level-supports: "npm:~1.0.0" + xtend: "npm:~4.0.0" + checksum: 10/b12d224822ba9351d525c22de35eb3f0f432f7392ee58d9f229fe8f0103aef732dea036c34787df5196152a24808f7377a8d11d55a8db2627219d06f3ea2c0b0 languageName: node linkType: hard @@ -3398,13 +3398,13 @@ __metadata: version: 7.2.0 resolution: "abstract-leveldown@npm:7.2.0" dependencies: - buffer: ^6.0.3 - catering: ^2.0.0 - is-buffer: ^2.0.5 - level-concat-iterator: ^3.0.0 - level-supports: ^2.0.1 - queue-microtask: ^1.2.3 - checksum: d558111f2d123da95ac80b8ba3b9b0a5bc8cd87296e64b05dca693f5f4839aa0e2fc97bad56a101766f499824e2962611750f8a76bbac4a5db35801968fbbe02 + buffer: "npm:^6.0.3" + catering: "npm:^2.0.0" + is-buffer: "npm:^2.0.5" + level-concat-iterator: "npm:^3.0.0" + level-supports: "npm:^2.0.1" + queue-microtask: "npm:^1.2.3" + checksum: 10/607a43c0963a8ac1388f8248045f84fb557440b6668b45464a0668652d6fd442d726d536d1f03ab2865530ccdb689a55bca400144fe0ae9c710d4594f0400b55 languageName: node linkType: hard @@ -3412,12 +3412,12 @@ __metadata: version: 6.2.3 resolution: "abstract-leveldown@npm:6.2.3" dependencies: - buffer: ^5.5.0 - immediate: ^3.2.3 - level-concat-iterator: ~2.0.0 - level-supports: ~1.0.0 - xtend: ~4.0.0 - checksum: 00202b2eb7955dd7bc04f3e44d225e60160cedb8f96fe6ae0e6dca9c356d57071f001ece8ae1d53f48095c4c036d92b3440f2bc7666730610ddea030f9fbde4a + buffer: "npm:^5.5.0" + immediate: "npm:^3.2.3" + level-concat-iterator: "npm:~2.0.0" + level-supports: "npm:~1.0.0" + xtend: "npm:~4.0.0" + checksum: 10/4e0b4ce14715822f3e54610d8e91c22bb62fa9bb684860c6af7fac82e28c1efdf14b82c5a8ee7c9cf4912e67e3320209fc230eed7a668c66811b6fadea279277 languageName: node linkType: hard @@ -3425,16 +3425,16 @@ __metadata: version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: - mime-types: ~2.1.34 - negotiator: 0.6.3 - checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10/67eaaa90e2917c58418e7a9b89392002d2b1ccd69bcca4799135d0c632f3b082f23f4ae4ddeedbced5aa59bcc7bdf4699c69ebed4593696c922462b7bc5744d6 languageName: node linkType: hard "acorn-walk@npm:^8.1.1": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" - checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 + checksum: 10/e69f7234f2adfeb16db3671429a7c80894105bd7534cb2032acf01bb26e6a847952d11a062d071420b43f8d82e33d2e57f26fe87d9cce0853e8143d8910ff1de languageName: node linkType: hard @@ -3443,21 +3443,21 @@ __metadata: resolution: "acorn@npm:8.8.2" bin: acorn: bin/acorn - checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 + checksum: 10/b4e77d56d24d3e11a45d9ac8ae661b4e14a4af04ae33edbf1e6bf910887e5bb352cc60e9ea06a0944880e6b658f58c095d3b54e88e1921cb9319608b51085dd7 languageName: node linkType: hard "adm-zip@npm:^0.4.16": version: 0.4.16 resolution: "adm-zip@npm:0.4.16" - checksum: 5ea46664d8b3b073fffeb7f934705fea288708745e708cffc1dd732ce3d2672cecd476b243f9d051892fd12952db2b6bd061975e1ff40057246f6d0cb6534a50 + checksum: 10/897003d21a445bfce251d5a328706035dc03af53cd4c66bb0a4558496939f89767ae5e7c67d10a5a9ad0146081a339bed3361405d6cca648a4378198573e9cad languageName: node linkType: hard "aes-js@npm:3.0.0": version: 3.0.0 resolution: "aes-js@npm:3.0.0" - checksum: 251e26d533cd1a915b44896b17d5ed68c24a02484cfdd2e74ec700a309267db96651ea4eb657bf20aac32a3baa61f6e34edf8e2fec2de440a655da9942d334b8 + checksum: 10/1b3772e5ba74abdccb6c6b99bf7f50b49057b38c0db1612b46c7024414f16e65ba7f1643b2d6e38490b1870bdf3ba1b87b35e2c831fd3fdaeff015f08aad19d1 languageName: node linkType: hard @@ -3465,8 +3465,8 @@ __metadata: version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + debug: "npm:4" + checksum: 10/21fb903e0917e5cb16591b4d0ef6a028a54b83ac30cd1fca58dece3d4e0990512a8723f9f83130d88a41e2af8b1f7be1386fda3ea2d181bb1a62155e75e95e23 languageName: node linkType: hard @@ -3474,10 +3474,10 @@ __metadata: version: 4.2.1 resolution: "agentkeepalive@npm:4.2.1" dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 + debug: "npm:^4.1.0" + depd: "npm:^1.1.2" + humanize-ms: "npm:^1.2.1" + checksum: 10/63961cba1afa26d708da94159f3b9428d46fdc137b783fbc399b848e750c5e28c97d96839efa8cb3c2d11ecd12dd411298c00d164600212f660e8c55369c9e55 languageName: node linkType: hard @@ -3485,9 +3485,9 @@ __metadata: version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10/1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 languageName: node linkType: hard @@ -3495,11 +3495,11 @@ __metadata: version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: - fast-deep-equal: ^3.1.1 - fast-json-stable-stringify: ^2.0.0 - json-schema-traverse: ^0.4.1 - uri-js: ^4.2.2 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10/48d6ad21138d12eb4d16d878d630079a2bda25a04e745c07846a4ad768319533031e28872a9b3c5790fa1ec41aabdf2abed30a56e5a03ebc2cf92184b8ee306c languageName: node linkType: hard @@ -3507,32 +3507,32 @@ __metadata: version: 8.12.0 resolution: "ajv@npm:8.12.0" dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 + fast-deep-equal: "npm:^3.1.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.2.2" + checksum: 10/b406f3b79b5756ac53bfe2c20852471b08e122bc1ee4cde08ae4d6a800574d9cd78d60c81c69c63ff81e4da7cd0b638fafbb2303ae580d49cf1600b9059efb85 languageName: node linkType: hard "ansi-colors@npm:3.2.3": version: 3.2.3 resolution: "ansi-colors@npm:3.2.3" - checksum: 018a92fbf8b143feb9e00559655072598902ff2cdfa07dbe24b933c70ae04845e3dda2c091ab128920fc50b3db06c3f09947f49fcb287d53beb6c5869b8bb32b + checksum: 10/9465fcf0feca5001201013091036397537a7e196e04efca48aa1e7f4a986176778a33924d506e2b9af74321be9fb0649ab0c11be168d15aae5459feff681d665 languageName: node linkType: hard "ansi-colors@npm:4.1.1": version: 4.1.1 resolution: "ansi-colors@npm:4.1.1" - checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 + checksum: 10/e862fddd0a9ca88f1e7c9312ea70674cec3af360c994762309f6323730525e92c77d2715ee5f08aa8f438b7ca18efe378af647f501fc92b15b8e4b3b52d09db4 languageName: node linkType: hard "ansi-colors@npm:^4.1.1": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" - checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e + checksum: 10/43d6e2fc7b1c6e4dc373de708ee76311ec2e0433e7e8bd3194e7ff123ea6a747428fc61afdcf5969da5be3a5f0fd054602bec56fc0ebe249ce2fcde6e649e3c2 languageName: node linkType: hard @@ -3540,29 +3540,29 @@ __metadata: version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + type-fest: "npm:^0.21.3" + checksum: 10/8661034456193ffeda0c15c8c564a9636b0c04094b7f78bd01517929c17c504090a60f7a75f949f5af91289c264d3e1001d91492c1bd58efc8e100500ce04de2 languageName: node linkType: hard "ansi-regex@npm:^3.0.0": version: 3.0.1 resolution: "ansi-regex@npm:3.0.1" - checksum: 09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc + checksum: 10/09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc languageName: node linkType: hard "ansi-regex@npm:^4.1.0": version: 4.1.1 resolution: "ansi-regex@npm:4.1.1" - checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 + checksum: 10/b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 languageName: node linkType: hard "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + checksum: 10/2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b languageName: node linkType: hard @@ -3570,8 +3570,8 @@ __metadata: version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + color-convert: "npm:^1.9.0" + checksum: 10/d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 languageName: node linkType: hard @@ -3579,15 +3579,15 @@ __metadata: version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + color-convert: "npm:^2.0.1" + checksum: 10/b4494dfbfc7e4591b4711a396bd27e540f8153914123dccb4cdbbcb514015ada63a3809f362b9d8d4f6b17a706f1d7bea3c6f974b15fa5ae76b5b502070889ff languageName: node linkType: hard "ansi-styles@npm:^5.0.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" - checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + checksum: 10/d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 languageName: node linkType: hard @@ -3595,8 +3595,8 @@ __metadata: version: 0.5.0-dev resolution: "antlr4ts@npm:0.5.0-dev" dependencies: - source-map-support: ^0.5.16 - checksum: 640dae2229124372b0329315e9614ae983bb80b1af237d8c0b3e90a2d85fb534e851c51d65d1897c92b36d27851d041ad8d95aab44af19cf7355b3ad11a3ddbf + source-map-support: "npm:^0.5.16" + checksum: 10/a95a061fb2fc9e2a0cd065e112fbc3fb899f408feace51249367051711b2255488b4e89b5912a706080f807c72484499e0f61f6a782391ecaba39c556d479f55 languageName: node linkType: hard @@ -3604,16 +3604,16 @@ __metadata: version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10/3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 languageName: node linkType: hard "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + checksum: 10/c2b9a631298e8d6f3797547e866db642f68493808f5b37cd61da778d5f6ada890d16f668285f7d60bd4fc3b03889bd590ffe62cf81b700e9bb353431238a0a7b languageName: node linkType: hard @@ -3621,9 +3621,9 @@ __metadata: version: 2.0.0 resolution: "are-we-there-yet@npm:2.0.0" dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10/ea6f47d14fc33ae9cbea3e686eeca021d9d7b9db83a306010dd04ad5f2c8b7675291b127d3fcbfcbd8fec26e47b3324ad5b469a6cc3733a582f2fe4e12fc6756 languageName: node linkType: hard @@ -3631,16 +3631,16 @@ __metadata: version: 3.0.1 resolution: "are-we-there-yet@npm:3.0.1" dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10/390731720e1bf9ed5d0efc635ea7df8cbc4c90308b0645a932f06e8495a0bf1ecc7987d3b97e805f62a17d6c4b634074b25200aa4d149be2a7b17250b9744bc4 languageName: node linkType: hard "arg@npm:^4.1.0": version: 4.1.3 resolution: "arg@npm:4.1.3" - checksum: 544af8dd3f60546d3e4aff084d451b96961d2267d668670199692f8d054f0415d86fc5497d0e641e91546f0aa920e7c29e5250e99fc89f5552a34b5d93b77f43 + checksum: 10/969b491082f20cad166649fa4d2073ea9e974a4e5ac36247ca23d2e5a8b3cb12d60e9ff70a8acfe26d76566c71fd351ee5e6a9a6595157eb36f92b1fd64e1599 languageName: node linkType: hard @@ -3648,43 +3648,43 @@ __metadata: version: 1.0.10 resolution: "argparse@npm:1.0.10" dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 + sprintf-js: "npm:~1.0.2" + checksum: 10/c6a621343a553ff3779390bb5ee9c2263d6643ebcd7843227bdde6cc7adbed796eb5540ca98db19e3fd7b4714e1faa51551f8849b268bb62df27ddb15cbcd91e languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced + checksum: 10/18640244e641a417ec75a9bd38b0b2b6b95af5199aa241b131d4b2fb206f334d7ecc600bd194861610a5579084978bfcbb02baa399dbe442d56d0ae5e60dbaef languageName: node linkType: hard "array-back@npm:^3.0.1, array-back@npm:^3.1.0": version: 3.1.0 resolution: "array-back@npm:3.1.0" - checksum: 7205004fcd0f9edd926db921af901b083094608d5b265738d0290092f9822f73accb468e677db74c7c94ef432d39e5ed75a7b1786701e182efb25bbba9734209 + checksum: 10/7205004fcd0f9edd926db921af901b083094608d5b265738d0290092f9822f73accb468e677db74c7c94ef432d39e5ed75a7b1786701e182efb25bbba9734209 languageName: node linkType: hard "array-back@npm:^4.0.1, array-back@npm:^4.0.2": version: 4.0.2 resolution: "array-back@npm:4.0.2" - checksum: f30603270771eeb54e5aad5f54604c62b3577a18b6db212a7272b2b6c32049121b49431f656654790ed1469411e45f387e7627c0de8fd0515995cc40df9b9294 + checksum: 10/f30603270771eeb54e5aad5f54604c62b3577a18b6db212a7272b2b6c32049121b49431f656654790ed1469411e45f387e7627c0de8fd0515995cc40df9b9294 languageName: node linkType: hard "array-flatten@npm:1.1.1": version: 1.1.1 resolution: "array-flatten@npm:1.1.1" - checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b + checksum: 10/e13c9d247241be82f8b4ec71d035ed7204baa82fae820d4db6948d30d3c4a9f2b3905eb2eec2b937d4aa3565200bd3a1c500480114cff649fa748747d2a50feb languageName: node linkType: hard "array-uniq@npm:1.0.3": version: 1.0.3 resolution: "array-uniq@npm:1.0.3" - checksum: 1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e + checksum: 10/1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e languageName: node linkType: hard @@ -3692,19 +3692,19 @@ __metadata: version: 1.0.5 resolution: "array.prototype.reduce@npm:1.0.5" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-array-method-boxes-properly: ^1.0.0 - is-string: ^1.0.7 - checksum: f44691395f9202aba5ec2446468d4c27209bfa81464f342ae024b7157dbf05b164e47cca01250b8c7c2a8219953fb57651cca16aab3d16f43b85c0d92c26eef3 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + es-abstract: "npm:^1.20.4" + es-array-method-boxes-properly: "npm:^1.0.0" + is-string: "npm:^1.0.7" + checksum: 10/ad8976da587854088fe8d5290e0709d670ba0dcac840b380b4aee11eae61b25fa78c324373387d39f4242345fda9cc57ff1b0cbfe510b9afa0cd1624ab1a1cab languageName: node linkType: hard "asap@npm:~2.0.6": version: 2.0.6 resolution: "asap@npm:2.0.6" - checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d + checksum: 10/b244c0458c571945e4b3be0b14eb001bea5596f9868cc50cc711dc03d58a7e953517d3f0dad81ccde3ff37d1f074701fa76a6f07d41aaa992d7204a37b915dda languageName: node linkType: hard @@ -3712,15 +3712,15 @@ __metadata: version: 0.2.6 resolution: "asn1@npm:0.2.6" dependencies: - safer-buffer: ~2.1.0 - checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d + safer-buffer: "npm:~2.1.0" + checksum: 10/cf629291fee6c1a6f530549939433ebf32200d7849f38b810ff26ee74235e845c0c12b2ed0f1607ac17383d19b219b69cefa009b920dab57924c5c544e495078 languageName: node linkType: hard "assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": version: 1.0.0 resolution: "assert-plus@npm:1.0.0" - checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 + checksum: 10/f4f991ae2df849cc678b1afba52d512a7cbf0d09613ba111e72255409ff9158550c775162a47b12d015d1b82b3c273e8e25df0e4783d3ddb008a293486d00a07 languageName: node linkType: hard @@ -3728,25 +3728,25 @@ __metadata: version: 2.0.0 resolution: "assert@npm:2.0.0" dependencies: - es6-object-assign: ^1.1.0 - is-nan: ^1.2.1 - object-is: ^1.0.1 - util: ^0.12.0 - checksum: bb91f181a86d10588ee16c5e09c280f9811373974c29974cbe401987ea34e966699d7989a812b0e19377b511ea0bc627f5905647ce569311824848ede382cae8 + es6-object-assign: "npm:^1.1.0" + is-nan: "npm:^1.2.1" + object-is: "npm:^1.0.1" + util: "npm:^0.12.0" + checksum: 10/5bd5e80a0dc5fce9ac812254ad39bcec8c224878705e5021a1a0ae84e2c30b980f90584ef544a5f6b1cd79edb002e80972367731260dac723c7a6f76e0fcd2ea languageName: node linkType: hard "assertion-error@npm:^1.1.0": version: 1.1.0 resolution: "assertion-error@npm:1.1.0" - checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf + checksum: 10/fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf languageName: node linkType: hard "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" - checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 + checksum: 10/876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 languageName: node linkType: hard @@ -3754,22 +3754,22 @@ __metadata: version: 0.2.4 resolution: "async-eventemitter@npm:0.2.4" dependencies: - async: ^2.4.0 - checksum: b9e77e0f58ebd7188c50c23d613d1263e0ab501f5e677e02b57cc97d7032beaf60aafa189887e7105569c791e212df4af00b608be1e9a4c425911d577124911e + async: "npm:^2.4.0" + checksum: 10/4f927de88add821cb11640dcbbc8bad561dace016b661ad8d597b60641d57cee740477a34ba9832b60f89a93cad43e78a3eb881f00fe0da49a85844a7b9de026 languageName: node linkType: hard "async-limiter@npm:~1.0.0": version: 1.0.1 resolution: "async-limiter@npm:1.0.1" - checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b + checksum: 10/2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b languageName: node linkType: hard "async@npm:3.2.3": version: 3.2.3 resolution: "async@npm:3.2.3" - checksum: c4bee57ab2249af3dc83ca3ef9acfa8e822c0d5e5aa41bae3eaf7f673648343cd64ecd7d26091ffd357f3f044428b17b5f00098494b6cf8b6b3e9681f0636ca1 + checksum: 10/1265841be4f461fb17a8ed1c6ac1d427c57b33fea999cefdcee588f08f218886fd41d48da6943e4dca6a8ccd76d4536b6901a28927588ff671ce0ed61ac415a2 languageName: node linkType: hard @@ -3777,57 +3777,57 @@ __metadata: version: 2.6.4 resolution: "async@npm:2.6.4" dependencies: - lodash: ^4.17.14 - checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 + lodash: "npm:^4.17.14" + checksum: 10/df8e52817d74677ab50c438d618633b9450aff26deb274da6dfedb8014130909482acdc7753bce9b72e6171ce9a9f6a92566c4ced34c3cb3714d57421d58ad27 languageName: node linkType: hard "async@npm:^3.2.0, async@npm:^3.2.3": version: 3.2.4 resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 + checksum: 10/bebb5dc2258c45b83fa1d3be179ae0eb468e1646a62d443c8d60a45e84041b28fccebe1e2d1f234bfc3dcad44e73dcdbf4ba63d98327c9f6556e3dbd47c2ae8b languageName: node linkType: hard "async@npm:~0.1.22": version: 0.1.22 resolution: "async@npm:0.1.22" - checksum: 0e9135551072b1f0a75b431e4d472b348d60105f2eb475b2dffc9b9f96dc771a3da750a3c1061a5f1329c205c670bb5afcaca16acc293b955de86b6c8e661bfb + checksum: 10/874b52c6ecd2caec6b9d672a8d36e800878972633352241244680b735e8e4da764c0b3ec669ddc6449d352683413e7db80b9884dd023be2e5e6b4c849efd1762 languageName: node linkType: hard "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be + checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 languageName: node linkType: hard "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a + checksum: 10/4d4d5e86ea0425696f40717882f66a570647b94ac8d273ddc7549a9b61e5da099e149bf431530ccbd776bd74e02039eb8b5edf426e3e2211ee61af16698a9064 languageName: node linkType: hard "await-exec@npm:^0.1.2": version: 0.1.2 resolution: "await-exec@npm:0.1.2" - checksum: 19fe95f371f098efd8c088905eea76725d164f7277cece92b32da9266ec8fa1e508fb89b60f1480709ac4584ce217692d2a0452c6a334abb4ab53451a2db2621 + checksum: 10/19fe95f371f098efd8c088905eea76725d164f7277cece92b32da9266ec8fa1e508fb89b60f1480709ac4584ce217692d2a0452c6a334abb4ab53451a2db2621 languageName: node linkType: hard "aws-sign2@npm:~0.7.0": version: 0.7.0 resolution: "aws-sign2@npm:0.7.0" - checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 + checksum: 10/2ac497d739f71be3264cf096a33ab256a1fea7fe80b87dc51ec29374505bd5a661279ef1c22989d68528ea61ed634021ca63b31cf1d3c2a3682ffc106f7d0e96 languageName: node linkType: hard "aws4@npm:^1.8.0": version: 1.12.0 resolution: "aws4@npm:1.12.0" - checksum: 68f79708ac7c335992730bf638286a3ee0a645cf12575d557860100767c500c08b30e24726b9f03265d74116417f628af78509e1333575e9f8d52a80edfe8cbc + checksum: 10/2b8455fe1eee87f0e7d5f32e81e7fec74dce060c72d03f528c8c631fa74209cef53aab6fede182ea17d0c9520cb1e5e3023c5fedb4f1139ae9f067fc720869a5 languageName: node linkType: hard @@ -3835,15 +3835,15 @@ __metadata: version: 0.21.4 resolution: "axios@npm:0.21.4" dependencies: - follow-redirects: ^1.14.0 - checksum: 44245f24ac971e7458f3120c92f9d66d1fc695e8b97019139de5b0cc65d9b8104647db01e5f46917728edfc0cfd88eb30fc4c55e6053eef4ace76768ce95ff3c + follow-redirects: "npm:^1.14.0" + checksum: 10/da644592cb6f8f9f8c64fdabd7e1396d6769d7a4c1ea5f8ae8beb5c2eb90a823e3a574352b0b934ac62edc762c0f52647753dc54f7d07279127a7e5c4cd20272 languageName: node linkType: hard "b4a@npm:^1.0.1": version: 1.6.1 resolution: "b4a@npm:1.6.1" - checksum: 9d085922d4a6bcaac69e68520681cd60da0e2dca8ea80a89cd27a3a3037058d4669a2904aa9925c7f567d84f62f64beafaf0c831771bd4eb86ca5ecbbca402d8 + checksum: 10/53a1c895ea50cf80dda8970039f7fec05d8600b71c51aa3cddaecc1f9c2b80b6a37ba564f7795982e2bb5c224f75dc68181152afce58c888ccbe39215f0de027 languageName: node linkType: hard @@ -3851,16 +3851,16 @@ __metadata: version: 29.7.0 resolution: "babel-jest@npm:29.7.0" dependencies: - "@jest/transform": ^29.7.0 - "@types/babel__core": ^7.1.14 - babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.6.3 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - slash: ^3.0.0 + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" peerDependencies: "@babel/core": ^7.8.0 - checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 + checksum: 10/8a0953bd813b3a8926008f7351611055548869e9a53dd36d6e7e96679001f71e65fd7dbfe253265c3ba6a4e630dc7c845cf3e78b17d758ef1880313ce8fba258 languageName: node linkType: hard @@ -3868,12 +3868,12 @@ __metadata: version: 6.1.1 resolution: "babel-plugin-istanbul@npm:6.1.1" dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@istanbuljs/load-nyc-config": ^1.0.0 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-instrument: ^5.0.4 - test-exclude: ^6.0.0 - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10/ffd436bb2a77bbe1942a33245d770506ab2262d9c1b3c1f1da7f0592f78ee7445a95bc2efafe619dd9c1b6ee52c10033d6c7d29ddefe6f5383568e60f31dfe8d languageName: node linkType: hard @@ -3881,11 +3881,11 @@ __metadata: version: 29.6.3 resolution: "babel-plugin-jest-hoist@npm:29.6.3" dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.1.14 - "@types/babel__traverse": ^7.0.6 - checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10/9bfa86ec4170bd805ab8ca5001ae50d8afcb30554d236ba4a7ffc156c1a92452e220e4acbd98daefc12bf0216fccd092d0a2efed49e7e384ec59e0597a926d65 languageName: node linkType: hard @@ -3893,21 +3893,21 @@ __metadata: version: 1.0.1 resolution: "babel-preset-current-node-syntax@npm:1.0.1" dependencies: - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-bigint": ^7.8.3 - "@babel/plugin-syntax-class-properties": ^7.8.3 - "@babel/plugin-syntax-import-meta": ^7.8.3 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.8.3 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-top-level-await": ^7.8.3 + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.8.3" + "@babel/plugin-syntax-import-meta": "npm:^7.8.3" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0 - checksum: d118c2742498c5492c095bc8541f4076b253e705b5f1ad9a2e7d302d81a84866f0070346662355c8e25fc02caa28dc2da8d69bcd67794a0d60c4d6fab6913cc8 + checksum: 10/94561959cb12bfa80867c9eeeace7c3d48d61707d33e55b4c3fdbe82fc745913eb2dbfafca62aef297421b38aadcb58550e5943f50fbcebbeefd70ce2bed4b74 languageName: node linkType: hard @@ -3915,18 +3915,18 @@ __metadata: version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" dependencies: - babel-plugin-jest-hoist: ^29.6.3 - babel-preset-current-node-syntax: ^1.0.0 + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" peerDependencies: "@babel/core": ^7.0.0 - checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb + checksum: 10/aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + checksum: 10/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 languageName: node linkType: hard @@ -3934,15 +3934,15 @@ __metadata: version: 3.0.9 resolution: "base-x@npm:3.0.9" dependencies: - safe-buffer: ^5.0.1 - checksum: 957101d6fd09e1903e846fd8f69fd7e5e3e50254383e61ab667c725866bec54e5ece5ba49ce385128ae48f9ec93a26567d1d5ebb91f4d56ef4a9cc0d5a5481e8 + safe-buffer: "npm:^5.0.1" + checksum: 10/957101d6fd09e1903e846fd8f69fd7e5e3e50254383e61ab667c725866bec54e5ece5ba49ce385128ae48f9ec93a26567d1d5ebb91f4d56ef4a9cc0d5a5481e8 languageName: node linkType: hard "base64-js@npm:^1.3.0, base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" - checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 + checksum: 10/669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 languageName: node linkType: hard @@ -3950,8 +3950,8 @@ __metadata: version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" dependencies: - tweetnacl: ^0.14.3 - checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 + tweetnacl: "npm:^0.14.3" + checksum: 10/13a4cde058250dbf1fa77a4f1b9a07d32ae2e3b9e28e88a0c7a1827835bc3482f3e478c4a0cfd4da6ff0c46dae07da1061123a995372b32cc563d9975f975404 languageName: node linkType: hard @@ -3959,16 +3959,16 @@ __metadata: version: 5.0.1 resolution: "bcrypt@npm:5.0.1" dependencies: - "@mapbox/node-pre-gyp": ^1.0.0 - node-addon-api: ^3.1.0 - checksum: b59625519f2b2891010b8094208588462b1c759ccacebfd74f0b9a4c1885743434ede246c26b615b94a5cf203dfcb9eb25a1e8dec315afd3098da2b848c0fa12 + "@mapbox/node-pre-gyp": "npm:^1.0.0" + node-addon-api: "npm:^3.1.0" + checksum: 10/50dc6aea8fad09a0b8619231c569061efe04daea24d72d251c4a096985283c529c4599ac685c67060e8be7391488f2ea3bd455a8b65c26755cdc80cce2e227c8 languageName: node linkType: hard "bcryptjs@npm:2.4.3": version: 2.4.3 resolution: "bcryptjs@npm:2.4.3" - checksum: 0e80ed852a41f5dfb1853f53ee14a7390b0ef263ce05dba6e2ef3cd919dfad025a7c21ebcfe5bc7fa04b100990edf90c7a877ff7fe623d3e479753253131b629 + checksum: 10/f6798e57eacfe86960d31af9b8fbc15dc73281c42cfb2a294e2d737e0e9bb7e402dbd39ac68b114867b234fd841ae689dbac031cc6af822b9e72099f52157a8c languageName: node linkType: hard @@ -3976,17 +3976,17 @@ __metadata: version: 5.4.0 resolution: "bcrypto@npm:5.4.0" dependencies: - bufio: ~1.0.7 - loady: ~0.0.5 - node-gyp: latest - checksum: 0618353afadd524ec3a9907dcbb2059ac37a953ae108fb524e80ded490373db567aebfaefd742351f86fd5099f09ea514950fb4853f8c81bae2802be0facbd1c + bufio: "npm:~1.0.7" + loady: "npm:~0.0.5" + node-gyp: "npm:latest" + checksum: 10/5dcd3726b5bb767aac749ad7fe773a0e3f8aa226db04c260ac2a3b659d007708c9195844c7d5e2718b7ec82a089076183c0a870cd203546e1fbf2dd951975557 languageName: node linkType: hard "bech32@npm:1.1.4, bech32@npm:^1.1.4": version: 1.1.4 resolution: "bech32@npm:1.1.4" - checksum: 0e98db619191548390d6f09ff68b0253ba7ae6a55db93dfdbb070ba234c1fd3308c0606fbcc95fad50437227b10011e2698b89f0181f6e7f845c499bd14d0f4b + checksum: 10/63ff37c0ce43be914c685ce89700bba1589c319af0dac1ea04f51b33d0e5ecfd40d14c24f527350b94f0a4e236385373bb9122ec276410f354ddcdbf29ca13f4 languageName: node linkType: hard @@ -3994,18 +3994,18 @@ __metadata: version: 7.0.2 resolution: "bfj@npm:7.0.2" dependencies: - bluebird: ^3.5.5 - check-types: ^11.1.1 - hoopy: ^0.1.4 - tryer: ^1.0.1 - checksum: 0ca673234170eb3dcf00fb1d867ba274729ab05779dd19b35628c49da7adc32472b5f0bca0554ffdca15b094f9b36f16f2a8992ba8884ebd1d351d7f27abee7b + bluebird: "npm:^3.5.5" + check-types: "npm:^11.1.1" + hoopy: "npm:^0.1.4" + tryer: "npm:^1.0.1" + checksum: 10/e1040fe6aec2afeb6f6c5231bbbc055616fa99c23c5249c7d20a2919507a69d8fd4d82d2245eca5ee08cbfcd3e70ce817328b8a20acda69af4638f1c11343bc7 languageName: node linkType: hard "big-integer@npm:^1.6.48": version: 1.6.51 resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 + checksum: 10/c7a12640901906d6f6b6bdb42a4eaba9578397b6d9a0dd090cf001ec813ff2bfcd441e364068ea0416db6175d2615f8ed19cff7d1a795115bf7c92d44993f991 languageName: node linkType: hard @@ -4013,36 +4013,36 @@ __metadata: version: 3.1.8 resolution: "bigint-crypto-utils@npm:3.1.8" dependencies: - bigint-mod-arith: ^3.1.0 - checksum: deb004aacf0ac6150b3cebe472c8166a7a315c411260d6c20e43c8c9b1e48831879e5a2e8e7af1ef1aefc542ad7d842a1de4bef12b98e50c825d9243321efe52 + bigint-mod-arith: "npm:^3.1.0" + checksum: 10/7f540d2eb673042bdcf6c320526897a0cf22da503d1c78bdcec93ba13f476899ba750f76283f255f9a48f8f6affc9f72ebd6856fa2596c4e57096bab55dd4f98 languageName: node linkType: hard "bigint-mod-arith@npm:^3.1.0": version: 3.1.2 resolution: "bigint-mod-arith@npm:3.1.2" - checksum: badddd745f6e6c45674b22335d26a9ea83250e749abde20c5f84b24afbc747e259bc36798530953332349ed898f38ec39125b326cae8b8ee2dddfaea7ddf8448 + checksum: 10/c8e25a37d61571faf9af44da7172dbdd8a3f611c7d403b6edf759480149c4fe48ad422680eaf97296aa60877365e2a9064f3aa9cad4013f3521ee8dbad9044bc languageName: node linkType: hard "bignumber.js@npm:^9.0.0": version: 9.1.1 resolution: "bignumber.js@npm:9.1.1" - checksum: ad243b7e2f9120b112d670bb3d674128f0bd2ca1745b0a6c9df0433bd2c0252c43e6315d944c2ac07b4c639e7496b425e46842773cf89c6a2dcd4f31e5c4b11e + checksum: 10/1f771bfa883a5863626e1e4274042065d5f975651eda556ecd28560f287c065004681226f826380792a22be116d7666499c3e3300b1a48b2a7bff66e8dde7aa8 languageName: node linkType: hard "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + checksum: 10/ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 languageName: node linkType: hard "bintrees@npm:1.0.2": version: 1.0.2 resolution: "bintrees@npm:1.0.2" - checksum: 56a52b7d3634e30002b1eda740d2517a22fa8e9e2eb088e919f37c030a0ed86e364ab59e472fc770fc8751308054bb1c892979d150e11d9e11ac33bcc1b5d16e + checksum: 10/071896cea5ea5413316c8436e95799444c208630d5c539edd8a7089fc272fc5d3634aa4a2e4847b28350dda1796162e14a34a0eda53108cc5b3c2ff6a036c1fa languageName: node linkType: hard @@ -4050,11 +4050,11 @@ __metadata: version: 3.0.4 resolution: "bip39@npm:3.0.4" dependencies: - "@types/node": 11.11.6 - create-hash: ^1.1.0 - pbkdf2: ^3.0.9 - randombytes: ^2.0.1 - checksum: 79ce1600a03d1ba5053bdd4e6323f9463ec340764c7e52918b6c6b9dca81221940f2d9a65656447f108f9bc2c8d9ae8df319cca83bbd1dad63f53ef2768d9bae + "@types/node": "npm:11.11.6" + create-hash: "npm:^1.1.0" + pbkdf2: "npm:^3.0.9" + randombytes: "npm:^2.0.1" + checksum: 10/938d4d764819c1927315ce3607b46a21f0d222042fa56e0d622ba6dccab37f7062619b0204d610e3280109f385b02c96e109e8df7fcacd90266cb3b163d94e6f languageName: node linkType: hard @@ -4062,11 +4062,11 @@ __metadata: version: 2.0.0 resolution: "blake-hash@npm:2.0.0" dependencies: - node-addon-api: ^3.0.0 - node-gyp: latest - node-gyp-build: ^4.2.2 - readable-stream: ^3.6.0 - checksum: a0d9a8f3953b986d3b30a741a6c000dedcc9a03b1318f52cc01ae62d18829ba6cb1a4d8cbe74785abfdc952a21db410984523bd457764aca716162cfd3ca8ea4 + node-addon-api: "npm:^3.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.2" + readable-stream: "npm:^3.6.0" + checksum: 10/91cb584c2c98bfeb94f2fe01ab1663577fd8a69c330b03ea071ce53eda8e3e28293da891e3eacd78a95ad1275325cf7055e39294535c0474f297ada373083fd2 languageName: node linkType: hard @@ -4074,8 +4074,8 @@ __metadata: version: 2.1.0 resolution: "blake2b-wasm@https://github.com/jbaylina/blake2b-wasm.git#commit=0d5f024b212429c7f50a7f533aa3a2406b5b42b3" dependencies: - nanoassert: ^1.0.0 - checksum: 6e768fe5d7de20806f9fed6c155ef6289ceaea78988c12a6827c72331089c190ccb7f82ea34b2c1afb3894d39d5f2976b9d013d2fd31f93666c45ad34d75393e + nanoassert: "npm:^1.0.0" + checksum: 10/7b6167d9c0b3f6f2b14cca02d6f8dd70daf6972781f030793141dd61fe271bf4fd095e9e97177611ecc2386b7991505e00062fd9e7ee3a68e3e7d8beddf052b6 languageName: node linkType: hard @@ -4083,9 +4083,9 @@ __metadata: version: 2.4.0 resolution: "blake2b-wasm@npm:2.4.0" dependencies: - b4a: ^1.0.1 - nanoassert: ^2.0.0 - checksum: 1839dd0693681228d81f781dd8680a6803a629ca374aed5ac02fa649ce40a67a85eb49eeb2ec6aeb7ef3ef5aa169b3579b50eabf7afa360d190338bc3e8666bd + b4a: "npm:^1.0.1" + nanoassert: "npm:^2.0.0" + checksum: 10/91d523a8e3e28005eefdf41783ccc473e386f500f9130bd18d4715df5fb77441b17c94513e8825b5ba0aae18a66835aa247799d61b1af9f5f24910b7c267f9c6 languageName: node linkType: hard @@ -4093,51 +4093,51 @@ __metadata: version: 2.1.4 resolution: "blake2b@npm:2.1.4" dependencies: - blake2b-wasm: ^2.4.0 - nanoassert: ^2.0.0 - checksum: cd598c96d459017714b7f9cb8892ef2b0a94f362e26e6baa46b7b8b189af0006ce25ab1713e3ec1484eb18ce7ebe1eb24e07d01e42ab1147067de2419c7f6158 + blake2b-wasm: "npm:^2.4.0" + nanoassert: "npm:^2.0.0" + checksum: 10/a863d8fb45b7bf163a1d90a300dbe7a24e84ba109df33f161dc23e77f2dcca7bb8dd2f11f37a95eee59c48c3236bd03d06209191c82a2df1f16a589470ac065b languageName: node linkType: hard "blakejs@npm:^1.1.0": version: 1.2.1 resolution: "blakejs@npm:1.2.1" - checksum: d699ba116cfa21d0b01d12014a03e484dd76d483133e6dc9eb415aa70a119f08beb3bcefb8c71840106a00b542cba77383f8be60cd1f0d4589cb8afb922eefbe + checksum: 10/0638b1bd058b21892633929c43005aa6a4cc4b2ac5b338a146c3c076622f1b360795bd7a4d1f077c9b01863ed2df0c1504a81c5b520d164179120434847e6cd7 languageName: node linkType: hard "bls-eth-wasm@npm:^0.4.8": version: 0.4.8 resolution: "bls-eth-wasm@npm:0.4.8" - checksum: f4cddc9132d367b7aeb45b4dc66c56e83b92a3fa135a6244f5e5506d58f5b69a6bc53c0cc2e821c558c1ebc21dddf28781a22725a62fab00cec4d147cfd46ed9 + checksum: 10/707427e68bbc22afce804429353c2db09726887a07b7ba52f17f03fe3f71545879f3ccef866f54af67a37661dd821ac90aaa584f37249259cc16a333b1b0fcd1 languageName: node linkType: hard "bluebird@npm:^3.5.0, bluebird@npm:^3.5.5": version: 3.7.2 resolution: "bluebird@npm:3.7.2" - checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef + checksum: 10/007c7bad22c5d799c8dd49c85b47d012a1fe3045be57447721e6afbd1d5be43237af1db62e26cb9b0d9ba812d2e4ca3bac82f6d7e016b6b88de06ee25ceb96e7 languageName: node linkType: hard "bn.js@npm:4.11.6": version: 4.11.6 resolution: "bn.js@npm:4.11.6" - checksum: db23047bf06fdf9cf74401c8e76bca9f55313c81df382247d2c753868b368562e69171716b81b7038ada8860af18346fd4bcd1cf9d4963f923fe8e54e61cb58a + checksum: 10/22741b015c9fff60fce32fc9988331b298eb9b6db5bfb801babb23b846eaaf894e440e0d067b2b3ae4e46aab754e90972f8f333b31bf94a686bbcb054bfa7b14 languageName: node linkType: hard "bn.js@npm:^4.0.0, bn.js@npm:^4.11.0, bn.js@npm:^4.11.1, bn.js@npm:^4.11.6, bn.js@npm:^4.11.8, bn.js@npm:^4.11.9": version: 4.12.0 resolution: "bn.js@npm:4.12.0" - checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12 + checksum: 10/10f8db196d3da5adfc3207d35d0a42aa29033eb33685f20ba2c36cadfe2de63dad05df0a20ab5aae01b418d1c4b3d4d205273085262fa020d17e93ff32b67527 languageName: node linkType: hard "bn.js@npm:^5.1.1, bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": version: 5.2.1 resolution: "bn.js@npm:5.2.1" - checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 + checksum: 10/7a7e8764d7a6e9708b8b9841b2b3d6019cc154d2fc23716d0efecfe1e16921b7533c6f7361fb05471eab47986c4aa310c270f88e3507172104632ac8df2cfd84 languageName: node linkType: hard @@ -4145,19 +4145,19 @@ __metadata: version: 1.20.0 resolution: "body-parser@npm:1.20.0" dependencies: - bytes: 3.1.2 - content-type: ~1.0.4 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.10.3 - raw-body: 2.5.1 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: 12fffdeac82fe20dddcab7074215d5156e7d02a69ae90cbe9fee1ca3efa2f28ef52097cbea76685ee0a1509c71d85abd0056a08e612c09077cad6277a644cf88 + bytes: "npm:3.1.2" + content-type: "npm:~1.0.4" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + on-finished: "npm:2.4.1" + qs: "npm:6.10.3" + raw-body: "npm:2.5.1" + type-is: "npm:~1.6.18" + unpipe: "npm:1.0.0" + checksum: 10/63fe82c27fdacac51d26665c3d13d4c6e48d1c3e9efe1fbc0fd18801aa9a598ab1023b09298ae4b3d0a7598d55902d793f7fa1b5551da99c16eabfed9b022a51 languageName: node linkType: hard @@ -4165,19 +4165,19 @@ __metadata: version: 1.20.1 resolution: "body-parser@npm:1.20.1" dependencies: - bytes: 3.1.2 - content-type: ~1.0.4 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 + bytes: "npm:3.1.2" + content-type: "npm:~1.0.4" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + on-finished: "npm:2.4.1" + qs: "npm:6.11.0" + raw-body: "npm:2.5.1" + type-is: "npm:~1.6.18" + unpipe: "npm:1.0.0" + checksum: 10/5f8d128022a2fb8b6e7990d30878a0182f300b70e46b3f9d358a9433ad6275f0de46add6d63206da3637c01c3b38b6111a7480f7e7ac2e9f7b989f6133fe5510 languageName: node linkType: hard @@ -4185,19 +4185,19 @@ __metadata: version: 1.20.2 resolution: "body-parser@npm:1.20.2" dependencies: - bytes: 3.1.2 - content-type: ~1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: 14d37ec638ab5c93f6099ecaed7f28f890d222c650c69306872e00b9efa081ff6c596cd9afb9930656aae4d6c4e1c17537bea12bb73c87a217cb3cfea8896737 + bytes: "npm:3.1.2" + content-type: "npm:~1.0.5" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + on-finished: "npm:2.4.1" + qs: "npm:6.11.0" + raw-body: "npm:2.5.2" + type-is: "npm:~1.6.18" + unpipe: "npm:1.0.0" + checksum: 10/3cf171b82190cf91495c262b073e425fc0d9e25cc2bf4540d43f7e7bbca27d6a9eae65ca367b6ef3993eea261159d9d2ab37ce444e8979323952e12eb3df319a languageName: node linkType: hard @@ -4205,9 +4205,9 @@ __metadata: version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10/faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 languageName: node linkType: hard @@ -4215,8 +4215,8 @@ __metadata: version: 2.0.1 resolution: "brace-expansion@npm:2.0.1" dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + balanced-match: "npm:^1.0.0" + checksum: 10/a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 languageName: node linkType: hard @@ -4224,15 +4224,15 @@ __metadata: version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + fill-range: "npm:^7.0.1" + checksum: 10/966b1fb48d193b9d155f810e5efd1790962f2c4e0829f8440b8ad236ba009222c501f70185ef732fef17a4c490bb33a03b90dab0631feafbdf447da91e8165b1 languageName: node linkType: hard "brorand@npm:^1.0.1, brorand@npm:^1.1.0": version: 1.1.0 resolution: "brorand@npm:1.1.0" - checksum: 8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be + checksum: 10/8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be languageName: node linkType: hard @@ -4240,18 +4240,18 @@ __metadata: version: 1.0.1 resolution: "browser-level@npm:1.0.1" dependencies: - abstract-level: ^1.0.2 - catering: ^2.1.1 - module-error: ^1.0.2 - run-parallel-limit: ^1.1.0 - checksum: 67fbc77ce832940bfa25073eccff279f512ad56f545deb996a5b23b02316f5e76f4a79d381acc27eda983f5c9a2566aaf9c97e4fdd0748288c4407307537a29b + abstract-level: "npm:^1.0.2" + catering: "npm:^2.1.1" + module-error: "npm:^1.0.2" + run-parallel-limit: "npm:^1.1.0" + checksum: 10/e712569111782da76853fecf648b43ff878ff2301c2830a9e7399685b646824a85f304dea5f023e02ee41a63a972f9aad734bd411069095adc9c79784fc649a5 languageName: node linkType: hard "browser-stdout@npm:1.3.1": version: 1.3.1 resolution: "browser-stdout@npm:1.3.1" - checksum: b717b19b25952dd6af483e368f9bcd6b14b87740c3d226c2977a65e84666ffd67000bddea7d911f111a9b6ddc822b234de42d52ab6507bce4119a4cc003ef7b3 + checksum: 10/ac70a84e346bb7afc5045ec6f22f6a681b15a4057447d4cc1c48a25c6dedb302a49a46dd4ddfb5cdd9c96e0c905a8539be1b98ae7bc440512152967009ec7015 languageName: node linkType: hard @@ -4259,13 +4259,13 @@ __metadata: version: 1.2.0 resolution: "browserify-aes@npm:1.2.0" dependencies: - buffer-xor: ^1.0.3 - cipher-base: ^1.0.0 - create-hash: ^1.1.0 - evp_bytestokey: ^1.0.3 - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 4a17c3eb55a2aa61c934c286f34921933086bf6d67f02d4adb09fcc6f2fc93977b47d9d884c25619144fccd47b3b3a399e1ad8b3ff5a346be47270114bcf7104 + buffer-xor: "npm:^1.0.3" + cipher-base: "npm:^1.0.0" + create-hash: "npm:^1.1.0" + evp_bytestokey: "npm:^1.0.3" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10/2813058f74e083a00450b11ea9d5d1f072de7bf0133f5d122d4ff7b849bece56d52b9c51ad0db0fad21c0bc4e8272fd5196114bbe7b94a9b7feb0f9fbb33a3bf languageName: node linkType: hard @@ -4273,13 +4273,13 @@ __metadata: version: 4.21.5 resolution: "browserslist@npm:4.21.5" dependencies: - caniuse-lite: ^1.0.30001449 - electron-to-chromium: ^1.4.284 - node-releases: ^2.0.8 - update-browserslist-db: ^1.0.10 + caniuse-lite: "npm:^1.0.30001449" + electron-to-chromium: "npm:^1.4.284" + node-releases: "npm:^2.0.8" + update-browserslist-db: "npm:^1.0.10" bin: browserslist: cli.js - checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706 + checksum: 10/560ec095ab4fa878f611ddf29038193d3a40ce69282dd15e633bcb9523fa25122e566d34192ab45e261a637d768884e7318cb3545533720469ee8f10d10c3298 languageName: node linkType: hard @@ -4287,8 +4287,8 @@ __metadata: version: 0.2.6 resolution: "bs-logger@npm:0.2.6" dependencies: - fast-json-stable-stringify: 2.x - checksum: d34bdaf68c64bd099ab97c3ea608c9ae7d3f5faa1178b3f3f345acd94e852e608b2d4f9103fb2e503f5e69780e98293df41691b84be909b41cf5045374d54606 + fast-json-stable-stringify: "npm:2.x" + checksum: 10/e6d3ff82698bb3f20ce64fb85355c5716a3cf267f3977abe93bf9c32a2e46186b253f48a028ae5b96ab42bacd2c826766d9ae8cf6892f9b944656be9113cf212 languageName: node linkType: hard @@ -4296,8 +4296,8 @@ __metadata: version: 4.0.1 resolution: "bs58@npm:4.0.1" dependencies: - base-x: ^3.0.2 - checksum: b3c5365bb9e0c561e1a82f1a2d809a1a692059fae016be233a6127ad2f50a6b986467c3a50669ce4c18929dcccb297c5909314dd347a25a68c21b68eb3e95ac2 + base-x: "npm:^3.0.2" + checksum: 10/b3c5365bb9e0c561e1a82f1a2d809a1a692059fae016be233a6127ad2f50a6b986467c3a50669ce4c18929dcccb297c5909314dd347a25a68c21b68eb3e95ac2 languageName: node linkType: hard @@ -4305,10 +4305,10 @@ __metadata: version: 2.1.2 resolution: "bs58check@npm:2.1.2" dependencies: - bs58: ^4.0.0 - create-hash: ^1.1.0 - safe-buffer: ^5.1.2 - checksum: 43bdf08a5dd04581b78f040bc4169480e17008da482ffe2a6507327bbc4fc5c28de0501f7faf22901cfe57fbca79cbb202ca529003fedb4cb8dccd265b38e54d + bs58: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + safe-buffer: "npm:^5.1.2" + checksum: 10/43bdf08a5dd04581b78f040bc4169480e17008da482ffe2a6507327bbc4fc5c28de0501f7faf22901cfe57fbca79cbb202ca529003fedb4cb8dccd265b38e54d languageName: node linkType: hard @@ -4316,36 +4316,36 @@ __metadata: version: 2.1.1 resolution: "bser@npm:2.1.1" dependencies: - node-int64: ^0.4.0 - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 + node-int64: "npm:^0.4.0" + checksum: 10/edba1b65bae682450be4117b695997972bd9a3c4dfee029cab5bcb72ae5393a79a8f909b8bc77957eb0deec1c7168670f18f4d5c556f46cdd3bca5f3b3a8d020 languageName: node linkType: hard "buffer-equal-constant-time@npm:1.0.1": version: 1.0.1 resolution: "buffer-equal-constant-time@npm:1.0.1" - checksum: 80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab + checksum: 10/80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab languageName: node linkType: hard "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + checksum: 10/0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb languageName: node linkType: hard "buffer-to-arraybuffer@npm:^0.0.5": version: 0.0.5 resolution: "buffer-to-arraybuffer@npm:0.0.5" - checksum: b2e6493a6679e03d0e0e146b4258b9a6d92649d528d8fc4a74423b77f0d4f9398c9f965f3378d1683a91738054bae2761196cfe233f41ab3695126cb58cb25f9 + checksum: 10/df16190b3bf0ecdf70e761514ecc8dbb9b8310e7c2882c800dc6d2d06859b9c85baa67f4cad53aaf9f0cbdd936f4b1c09f549eed8ae33c1c1258d7b6b1648cde languageName: node linkType: hard "buffer-xor@npm:^1.0.3": version: 1.0.3 resolution: "buffer-xor@npm:1.0.3" - checksum: 10c520df29d62fa6e785e2800e586a20fc4f6dfad84bcdbd12e1e8a83856de1cb75c7ebd7abe6d036bbfab738a6cf18a3ae9c8e5a2e2eb3167ca7399ce65373a + checksum: 10/4a63d48b5117c7eda896d81cd3582d9707329b07c97a14b0ece2edc6e64220ea7ea17c94b295e8c2cb7b9f8291e2b079f9096be8ac14be238420a43e06ec66e2 languageName: node linkType: hard @@ -4353,8 +4353,8 @@ __metadata: version: 2.0.2 resolution: "buffer-xor@npm:2.0.2" dependencies: - safe-buffer: ^5.1.1 - checksum: 78226fcae9f4a0b4adec69dffc049f26f6bab240dfdd1b3f6fe07c4eb6b90da202ea5c363f98af676156ee39450a06405fddd9e8965f68a5327edcc89dcbe5d0 + safe-buffer: "npm:^5.1.1" + checksum: 10/78226fcae9f4a0b4adec69dffc049f26f6bab240dfdd1b3f6fe07c4eb6b90da202ea5c363f98af676156ee39450a06405fddd9e8965f68a5327edcc89dcbe5d0 languageName: node linkType: hard @@ -4362,9 +4362,9 @@ __metadata: version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: - base64-js: ^1.3.1 - ieee754: ^1.1.13 - checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10/997434d3c6e3b39e0be479a80288875f71cd1c07d75a3855e6f08ef848a3c966023f79534e22e415ff3a5112708ce06127277ab20e527146d55c84566405c7c6 languageName: node linkType: hard @@ -4372,9 +4372,9 @@ __metadata: version: 6.0.3 resolution: "buffer@npm:6.0.3" dependencies: - base64-js: ^1.3.1 - ieee754: ^1.2.1 - checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10/b6bc68237ebf29bdacae48ce60e5e28fc53ae886301f2ad9496618efac49427ed79096750033e7eab1897a4f26ae374ace49106a5758f38fb70c78c9fda2c3b1 languageName: node linkType: hard @@ -4382,9 +4382,9 @@ __metadata: version: 4.0.5 resolution: "bufferutil@npm:4.0.5" dependencies: - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: 37d5bef7cb38d29f9377b8891ff8a57f53ae6057313d77a8aa2a7417df37a72f16987100796cb2f1e1862f3eb80057705f3c052615ec076a0dcc7aa6c83b68c9 + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10/f6fadb1f024b355a3bb08cffbc56c5d013944d0229eb793e5308f86fc0d8e7f8f17b69958aa5baa84db8f11870c8b0e2383d501cf41e79b93a1f3a5ef257c6e6 languageName: node linkType: hard @@ -4392,16 +4392,16 @@ __metadata: version: 4.0.7 resolution: "bufferutil@npm:4.0.7" dependencies: - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: f75aa87e3d1b99b87a95f60a855e63f70af07b57fb8443e75a2ddfef2e47788d130fdd46e3a78fd7e0c10176082b26dfbed970c5b8632e1cc299cafa0e93ce45 + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10/01e2144e88a6cb1cd8e4e0bb1ec622c6e400646fb451a672d20e7d40cdc7d4a82a64dbcda6f5f92b36eeca0d1e5290baf7af707994f7b7c87e911d51a265bf07 languageName: node linkType: hard "bufio@npm:~1.0.7": version: 1.0.7 resolution: "bufio@npm:1.0.7" - checksum: 4871b8060a8d3bc04de8722f5cc5575b77f4cb18af389eab62d51bf42b08f43fe75159126ef11f15fe4045dc8c20e0e344406ca8388cb1371e558b986e971a57 + checksum: 10/281073ac13ddb8fbb761015263aef6af3f4085b12cd468a2d254be8665d956cbc07917a40433e8e0ee6de44a136fa9a2400737d0723f9b92e5c18263ab6abfaf languageName: node linkType: hard @@ -4409,15 +4409,15 @@ __metadata: version: 3.7.2 resolution: "bullmq@npm:3.7.2" dependencies: - cron-parser: ^4.6.0 - glob: ^8.0.3 - ioredis: ^5.3.0 - lodash: ^4.17.21 - msgpackr: ^1.6.2 - semver: ^7.3.7 - tslib: ^2.0.0 - uuid: ^9.0.0 - checksum: d0a8bd8f6475e6dd1e79b59ae30292dbcd86b5b3f53530d1e2d5b43d82e5b97398fd6a04b1c738d193044ad80d17f11efcea9e47c2e7088118914391653c154a + cron-parser: "npm:^4.6.0" + glob: "npm:^8.0.3" + ioredis: "npm:^5.3.0" + lodash: "npm:^4.17.21" + msgpackr: "npm:^1.6.2" + semver: "npm:^7.3.7" + tslib: "npm:^2.0.0" + uuid: "npm:^9.0.0" + checksum: 10/46e598b49f0885ad30c1c63227296c152e1ad6ef49fd7d3d4e22fae7caf711650e893f128054c8fa376227974545d53df65ca717345cbe87a6a7742e6e2a7d9d languageName: node linkType: hard @@ -4425,15 +4425,15 @@ __metadata: version: 1.6.0 resolution: "busboy@npm:1.6.0" dependencies: - streamsearch: ^1.1.0 - checksum: 32801e2c0164e12106bf236291a00795c3c4e4b709ae02132883fe8478ba2ae23743b11c5735a0aae8afe65ac4b6ca4568b91f0d9fed1fdbc32ede824a73746e + streamsearch: "npm:^1.1.0" + checksum: 10/bee10fa10ea58e7e3e7489ffe4bda6eacd540a17de9f9cd21cc37e297b2dd9fe52b2715a5841afaec82900750d810d01d7edb4b2d456427f449b92b417579763 languageName: node linkType: hard "bytes@npm:3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" - checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e + checksum: 10/a10abf2ba70c784471d6b4f58778c0beeb2b5d405148e66affa91f23a9f13d07603d0a0354667310ae1d6dc141474ffd44e2a074be0f6e2254edb8fc21445388 languageName: node linkType: hard @@ -4441,25 +4441,25 @@ __metadata: version: 15.3.0 resolution: "cacache@npm:15.3.0" dependencies: - "@npmcli/fs": ^1.0.0 - "@npmcli/move-file": ^1.0.1 - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - glob: ^7.1.4 - infer-owner: ^1.0.4 - lru-cache: ^6.0.0 - minipass: ^3.1.1 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.2 - mkdirp: ^1.0.3 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^8.0.1 - tar: ^6.0.2 - unique-filename: ^1.1.1 - checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 + "@npmcli/fs": "npm:^1.0.0" + "@npmcli/move-file": "npm:^1.0.1" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + glob: "npm:^7.1.4" + infer-owner: "npm:^1.0.4" + lru-cache: "npm:^6.0.0" + minipass: "npm:^3.1.1" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.2" + mkdirp: "npm:^1.0.3" + p-map: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^3.0.2" + ssri: "npm:^8.0.1" + tar: "npm:^6.0.2" + unique-filename: "npm:^1.1.1" + checksum: 10/1432d84f3f4b31421cf47c15e6956e5e736a93c65126b0fd69ae5f70643d29be8996f33d4995204f578850de5d556268540911c04ecc1c026375b18600534f08 languageName: node linkType: hard @@ -4467,39 +4467,39 @@ __metadata: version: 16.1.3 resolution: "cacache@npm:16.1.3" dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 + "@npmcli/fs": "npm:^2.1.0" + "@npmcli/move-file": "npm:^2.0.0" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.1.0" + glob: "npm:^8.0.1" + infer-owner: "npm:^1.0.4" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + mkdirp: "npm:^1.0.4" + p-map: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^3.0.2" + ssri: "npm:^9.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^2.0.0" + checksum: 10/a14524d90e377ee691d63a81173b33c473f8bc66eb299c64290b58e1d41b28842397f8d6c15a01b4c57ca340afcec019ae112a45c2f67a79f76130d326472e92 languageName: node linkType: hard "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" - checksum: 763e02cf9196bc9afccacd8c418d942fc2677f22261969a4c2c2e760fa44a2351a81557bd908291c3921fe9beb10b976ba8fa50c5ca837c5a0dd945f16468f2d + checksum: 10/618a8b3eea314060e74cb3285a6154e8343c244a34235acf91cfe626ee0705c24e3cd11e4b1a7b3900bd749ee203ae65afe13adf610c8ab173e99d4a208faf75 languageName: node linkType: hard "cacheable-lookup@npm:^6.0.4": version: 6.1.0 resolution: "cacheable-lookup@npm:6.1.0" - checksum: 4e37afe897219b1035335b0765106a2c970ffa930497b43cac5000b860f3b17f48d004187279fae97e2e4cbf6a3693709b6d64af65279c7d6c8453321d36d118 + checksum: 10/9b37d31fba27ff244254294814dfdad69e3d257cb283932f58823141de5043a46d35339fa81ec40fdbb5d76d1578324258995f41a4fd37ed05d4e9b54823802e languageName: node linkType: hard @@ -4507,14 +4507,14 @@ __metadata: version: 7.0.2 resolution: "cacheable-request@npm:7.0.2" dependencies: - clone-response: ^1.0.2 - get-stream: ^5.1.0 - http-cache-semantics: ^4.0.0 - keyv: ^4.0.0 - lowercase-keys: ^2.0.0 - normalize-url: ^6.0.1 - responselike: ^2.0.0 - checksum: 6152813982945a5c9989cb457a6c499f12edcc7ade323d2fbfd759abc860bdbd1306e08096916bb413c3c47e812f8e4c0a0cc1e112c8ce94381a960f115bc77f + clone-response: "npm:^1.0.2" + get-stream: "npm:^5.1.0" + http-cache-semantics: "npm:^4.0.0" + keyv: "npm:^4.0.0" + lowercase-keys: "npm:^2.0.0" + normalize-url: "npm:^6.0.1" + responselike: "npm:^2.0.0" + checksum: 10/51404dd0b669d34f68f191d88d84e0d223e274808f7ab668192bc65e2a9133b4f5948a509d8272766dd19e46decb25b53ca1e23d3ec3846937250f4eb1f9c7d9 languageName: node linkType: hard @@ -4522,58 +4522,58 @@ __metadata: version: 1.0.2 resolution: "call-bind@npm:1.0.2" dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 + function-bind: "npm:^1.1.1" + get-intrinsic: "npm:^1.0.2" + checksum: 10/ca787179c1cbe09e1697b56ad499fd05dc0ae6febe5081d728176ade699ea6b1589240cb1ff1fe11fcf9f61538c1af60ad37e8eb2ceb4ef21cd6085dfd3ccedd languageName: node linkType: hard "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + checksum: 10/072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 languageName: node linkType: hard "camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b + checksum: 10/e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b languageName: node linkType: hard "camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d languageName: node linkType: hard "caniuse-lite@npm:^1.0.30001449": version: 1.0.30001457 resolution: "caniuse-lite@npm:1.0.30001457" - checksum: f311a7c5098681962402a86a0a367014ee91c3135395ee68bbfaf45caf0e36d581e42d7c5b1526ce99484a228e6cf5cf0e400678292c65f5a21512a3fc7a5fb6 + checksum: 10/f6530abb9f9cf179d4ffc6bf00807614b7157b239916c2c94ef9a1a6220b9a1ad2a45e26b723e5b91a14b85bc746a97eb8fed801f025a66bf9226f526fe8707e languageName: node linkType: hard "case@npm:^1.6.3": version: 1.6.3 resolution: "case@npm:1.6.3" - checksum: febe73278f910b0d28aab7efd6f51c235f9aa9e296148edb56dfb83fd58faa88308c30ce9a0122b6e53e0362c44f4407105bd5ef89c46860fc2b184e540fd68d + checksum: 10/2fc1df75bbb4118339e06141b9a54aba95cc62460ac92730290144fbec6b6a04f5bf7abf6a6486a1338f5821bd184402f216cec8cea0472451759c27e20fc332 languageName: node linkType: hard "caseless@npm:^0.12.0, caseless@npm:~0.12.0": version: 0.12.0 resolution: "caseless@npm:0.12.0" - checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 + checksum: 10/ea1efdf430975fdbac3505cdd21007f7ac5aa29b6d4d1c091f965853cd1bf87e4b08ea07b31a6d688b038872b7cdf0589d9262d59c699d199585daad052aeb20 languageName: node linkType: hard "catering@npm:^2.0.0, catering@npm:^2.1.0, catering@npm:^2.1.1": version: 2.1.1 resolution: "catering@npm:2.1.1" - checksum: 205daefa69c935b0c19f3d8f2e0a520dd69aebe9bda55902958003f7c9cff8f967dfb90071b421bd6eb618576f657a89d2bc0986872c9bc04bbd66655e9d4bd6 + checksum: 10/4669c9fa5f3a73273535fb458a964d8aba12dc5102d8487049cf03623bef3cdff4b5d9f92ff04c00f1001057a7cc7df6e700752ac622c2a7baf7bcff34166683 languageName: node linkType: hard @@ -4581,8 +4581,8 @@ __metadata: version: 8.1.0 resolution: "cbor@npm:8.1.0" dependencies: - nofilter: ^3.1.0 - checksum: a90338435dc7b45cc01461af979e3bb6ddd4f2a08584c437586039cd5f2235014c06e49d664295debbfb3514d87b2f06728092ab6aa6175e2e85e9cd7dc0c1fd + nofilter: "npm:^3.1.0" + checksum: 10/fc6c6d4f8d14def3a0f2ef111f4fc14b3b0bc91d22ed8fd0eb005095c4699c723a45721e515d713571148d0d965ceeb771f4ad422953cb4e9658b379991b52c9 languageName: node linkType: hard @@ -4590,14 +4590,14 @@ __metadata: version: 4.3.7 resolution: "chai@npm:4.3.7" dependencies: - assertion-error: ^1.1.0 - check-error: ^1.0.2 - deep-eql: ^4.1.2 - get-func-name: ^2.0.0 - loupe: ^2.3.1 - pathval: ^1.1.1 - type-detect: ^4.0.5 - checksum: 0bba7d267848015246a66995f044ce3f0ebc35e530da3cbdf171db744e14cbe301ab913a8d07caf7952b430257ccbb1a4a983c570a7c5748dc537897e5131f7c + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.2" + deep-eql: "npm:^4.1.2" + get-func-name: "npm:^2.0.0" + loupe: "npm:^2.3.1" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.0.5" + checksum: 10/615eabfeb9032315fb2d287fb03c29b7996f943024c7d4482b1b5370b6c22807fd4da329244dc5ac0c8802408d741dfb9b86245ffeddc83ce18898dda8d7aed4 languageName: node linkType: hard @@ -4605,10 +4605,10 @@ __metadata: version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10/3d1d103433166f6bfe82ac75724951b33769675252d8417317363ef9d54699b7c3b2d46671b772b893a8e50c3ece70c4b933c73c01e81bc60ea4df9b55afa303 languageName: node linkType: hard @@ -4616,44 +4616,44 @@ __metadata: version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10/cb3f3e594913d63b1814d7ca7c9bafbf895f75fbf93b92991980610dfd7b48500af4e3a5d4e3a8f337990a96b168d7eb84ee55efdce965e2ee8efc20f8c8f139 languageName: node linkType: hard "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" - checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 + checksum: 10/1ec5c2906adb9f84e7f6732a40baef05d7c85401b82ffcbc44b85fbd0f7a2b0c2a96f2eb9cf55cae3235dc12d4023003b88f09bcae8be9ae894f52ed746f4d48 languageName: node linkType: hard "charenc@npm:>= 0.0.1": version: 0.0.2 resolution: "charenc@npm:0.0.2" - checksum: 81dcadbe57e861d527faf6dd3855dc857395a1c4d6781f4847288ab23cffb7b3ee80d57c15bba7252ffe3e5e8019db767757ee7975663ad2ca0939bb8fcaf2e5 + checksum: 10/81dcadbe57e861d527faf6dd3855dc857395a1c4d6781f4847288ab23cffb7b3ee80d57c15bba7252ffe3e5e8019db767757ee7975663ad2ca0939bb8fcaf2e5 languageName: node linkType: hard "check-error@npm:^1.0.2": version: 1.0.2 resolution: "check-error@npm:1.0.2" - checksum: d9d106504404b8addd1ee3f63f8c0eaa7cd962a1a28eb9c519b1c4a1dc7098be38007fc0060f045ee00f075fbb7a2a4f42abcf61d68323677e11ab98dc16042e + checksum: 10/011e74b2eac49bd42c5610f15d6949d982e7ec946247da0276278a90e7476e6b88d25d3c605a4115d5e3575312e1f5a11e91c82290c8a47ca275c92f5d0981db languageName: node linkType: hard "check-types@npm:^11.1.1": version: 11.2.2 resolution: "check-types@npm:11.2.2" - checksum: 61ed60d59e3397c8cf694f20edf73d0061cd6a905754efdec2ccdceafbd390cb09717bab855f9eba921d36278f84c86fe20f7e731a384e9803bc469c09153831 + checksum: 10/a741fc4748d1923b0ff11003aab3fc18eaa8d8b6b3d5e93d21796fc6355f95557b9acc6189fe9e2411efe8724313b3123ba0bc1d728c0db30791c3b8a894a38a languageName: node linkType: hard "child_process@npm:^1.0.2": version: 1.0.2 resolution: "child_process@npm:1.0.2" - checksum: bd814d82bc8c6e85ed6fb157878978121cd03b5296c09f6135fa3d081fd9a6a617a6d509c50397711df713af403331241a9c0397a7fad30672051485e156c2a1 + checksum: 10/bd814d82bc8c6e85ed6fb157878978121cd03b5296c09f6135fa3d081fd9a6a617a6d509c50397711df713af403331241a9c0397a7fad30672051485e156c2a1 languageName: node linkType: hard @@ -4661,18 +4661,18 @@ __metadata: version: 3.3.0 resolution: "chokidar@npm:3.3.0" dependencies: - anymatch: ~3.1.1 - braces: ~3.0.2 - fsevents: ~2.1.1 - glob-parent: ~5.1.0 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.2.0 + anymatch: "npm:~3.1.1" + braces: "npm:~3.0.2" + fsevents: "npm:~2.1.1" + glob-parent: "npm:~5.1.0" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.2.0" dependenciesMeta: fsevents: optional: true - checksum: e9863256ebb29dbc5e58a7e2637439814beb63b772686cb9e94478312c24dcaf3d0570220c5e75ea29029f43b664f9956d87b716120d38cf755f32124f047e8e + checksum: 10/57c5c20fd1e46cf32f626f907b0a3e0dd584b2939cd8ca67cbfb255e334355f2781674d4148e2c92d045b2722fcb50178e50e57307b511f86d1e90098532d962 languageName: node linkType: hard @@ -4680,46 +4680,46 @@ __metadata: version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.2 - glob-parent: ~5.1.2 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.6.0 + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" dependenciesMeta: fsevents: optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + checksum: 10/863e3ff78ee7a4a24513d2a416856e84c8e4f5e60efbe03e8ab791af1a183f569b62fc6f6b8044e2804966cb81277ddbbc1dc374fba3265bd609ea8efd62f5b3 languageName: node linkType: hard "chownr@npm:^1.1.4": version: 1.1.4 resolution: "chownr@npm:1.1.4" - checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d + checksum: 10/115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d languageName: node linkType: hard "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + checksum: 10/c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f languageName: node linkType: hard "ci-info@npm:^2.0.0": version: 2.0.0 resolution: "ci-info@npm:2.0.0" - checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 + checksum: 10/3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 languageName: node linkType: hard "ci-info@npm:^3.2.0": version: 3.8.0 resolution: "ci-info@npm:3.8.0" - checksum: d0a4d3160497cae54294974a7246202244fff031b0a6ea20dd57b10ec510aa17399c41a1b0982142c105f3255aff2173e5c0dd7302ee1b2f28ba3debda375098 + checksum: 10/b00e9313c1f7042ca8b1297c157c920d6d69f0fbad7b867910235676df228c4b4f4df33d06cacae37f9efba7a160b0a167c6be85492b419ef71d85660e60606b languageName: node linkType: hard @@ -4727,12 +4727,12 @@ __metadata: version: 0.7.5 resolution: "cids@npm:0.7.5" dependencies: - buffer: ^5.5.0 - class-is: ^1.1.0 - multibase: ~0.6.0 - multicodec: ^1.0.0 - multihashes: ~0.4.15 - checksum: 54aa031bef76b08a2c934237696a4af2cfc8afb5d2727cb39ab69f6ac142ef312b9a0c6070dc2b4be0a43076d8961339d8bf85287773c647b3d1d25ce203f325 + buffer: "npm:^5.5.0" + class-is: "npm:^1.1.0" + multibase: "npm:~0.6.0" + multicodec: "npm:^1.0.0" + multihashes: "npm:~0.4.15" + checksum: 10/b916b0787e238dd9f84fb5e155333cadf07fd7ad34ea8dbd47f98bb618eecc9c70760767c0966d0eae73050c4fa6080fdc387e515565b009d2126253c7775fac languageName: node linkType: hard @@ -4740,9 +4740,9 @@ __metadata: version: 1.0.4 resolution: "cipher-base@npm:1.0.4" dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 47d3568dbc17431a339bad1fe7dff83ac0891be8206911ace3d3b818fc695f376df809bea406e759cdea07fff4b454fa25f1013e648851bec790c1d75763032e + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10/3d5d6652ca499c3f7c5d7fdc2932a357ec1e5aa84f2ad766d850efd42e89753c97b795c3a104a8e7ae35b4e293f5363926913de3bf8181af37067d9d541ca0db languageName: node linkType: hard @@ -4750,24 +4750,24 @@ __metadata: version: 0.0.0-use.local resolution: "circom@workspace:beacon-light-client/circom" dependencies: - "@chainsafe/lodestar-types": ^0.39.0 - "@chainsafe/ssz": ^0.9.2 - "@lodestar/types": ^1.4.1 - "@nomiclabs/hardhat-ethers": ^2.0.5 - "@nomiclabs/hardhat-waffle": ^2.0.3 - "@types/js-yaml": ^4.0.5 - bullmq: ^3.7.1 - chai: ^4.3.6 - circom_tester: ^0.0.14 - circomlib: 2.0.2 - ethereum-waffle: ^4.0.7 - ethers: ^5.6.4 - hardhat: ^2.9.3 - js-yaml: ^4.1.0 - redis: ^4.6.5 + "@chainsafe/lodestar-types": "npm:^0.39.0" + "@chainsafe/ssz": "npm:^0.9.2" + "@lodestar/types": "npm:^1.4.1" + "@nomiclabs/hardhat-ethers": "npm:^2.0.5" + "@nomiclabs/hardhat-waffle": "npm:^2.0.3" + "@types/js-yaml": "npm:^4.0.5" + bullmq: "npm:^3.7.1" + chai: "npm:^4.3.6" + circom_tester: "npm:^0.0.14" + circomlib: "npm:2.0.2" + ethereum-waffle: "npm:^4.0.7" + ethers: "npm:^5.6.4" + hardhat: "npm:^2.9.3" + js-yaml: "npm:^4.1.0" + redis: "npm:^4.6.5" snarkit2: "https://github.com/fluidex/snarkit2#70142d8bbc5ec79cfa6869205263ff77e8423975" snarkjs: "github:metacraft-labs/snarkjs" - ts-node: ^10.9.1 + ts-node: "npm:^10.9.1" languageName: unknown linkType: soft @@ -4775,11 +4775,11 @@ __metadata: version: 0.1.13 resolution: "circom_runtime@npm:0.1.13" dependencies: - ffjavascript: 0.2.35 - fnv-plus: ^1.3.1 + ffjavascript: "npm:0.2.35" + fnv-plus: "npm:^1.3.1" bin: calcwit: calcwit.js - checksum: 7bab6c3a0587a6c7e2c19d87e0ef412cf678babeeecb33f8ea843e8d961da0eb842271b3ebb449e76226698a991a9954c8bc28a361865b26d1dee10f16461416 + checksum: 10/d02ebcb22e0580c6171caf7465b288cc42cd325fc6a009252132538e6f42fb0dc5fb00936d34588586ffbcd9a92706ccb685e8ee8900dda2ee1be2f1a6a3d737 languageName: node linkType: hard @@ -4787,11 +4787,11 @@ __metadata: version: 0.1.14 resolution: "circom_runtime@npm:0.1.14" dependencies: - ffjavascript: 0.2.39 - fnv-plus: ^1.3.1 + ffjavascript: "npm:0.2.39" + fnv-plus: "npm:^1.3.1" bin: calcwit: calcwit.js - checksum: c1cfd92fafebd0b11086a8a15595431f46593c1c8556f52fc0817535d5391a3a32f0d03dbadedc9a174e67b0335df12b1d6a58e6ae18ef37dacbe849ba4c126d + checksum: 10/1770540b9c6ef4a59bafc18386e5f219c93d0dbeca979f0300cd3e1a0efb63b1e081418e59af5f7ce214fcbd0dc599c0216b5292ebc9d71e9f784cca145cc9c5 languageName: node linkType: hard @@ -4799,10 +4799,10 @@ __metadata: version: 0.1.20 resolution: "circom_runtime@npm:0.1.20" dependencies: - ffjavascript: 0.2.55 + ffjavascript: "npm:0.2.55" bin: calcwit: calcwit.js - checksum: eea406509ee8b3615a38e3f14d9601906045938d6e227d8f025fc29157b3b0b64901db10f8f0e8758e809f4271132a267c4783c063d235892b67d09ff125b756 + checksum: 10/f84e429485139b48b111b597f353d1857f3764f6af392576eb5579b54ca6acd0fef5e8792534eae751ed65e2ffeca1c35f861369b6087430b778d2f6ba175750 languageName: node linkType: hard @@ -4810,10 +4810,10 @@ __metadata: version: 0.1.22 resolution: "circom_runtime@npm:0.1.22" dependencies: - ffjavascript: 0.2.57 + ffjavascript: "npm:0.2.57" bin: calcwit: calcwit.js - checksum: bf7b2e9f74cd7704ebc45ce686d4df49e58ed09114070a98beaab90e5ff7784d1943468ea3315bd4db638e6a76cda24e8b610aa2cd50be56adb4391e20469366 + checksum: 10/b783251b1caf1098e60129b59862f9d1116a4e1304cbcbd2ed80c575f011d04a20c2c49cd661a6adfc30f59db8f0e49afee740a6f19fb69f6bef7492ebcc3f8e languageName: node linkType: hard @@ -4821,22 +4821,22 @@ __metadata: version: 0.0.14 resolution: "circom_tester@npm:0.0.14" dependencies: - chai: ^4.3.4 - child_process: ^1.0.2 - ffjavascript: ^0.2.38 - fnv-plus: ^1.3.1 - r1csfile: 0.0.37 - snarkjs: 0.4.10 - tmp-promise: ^3.0.2 - util: ^0.12.4 - checksum: 755c5f8c017418f318416283fc5094cec507369386210dd76174814111be89c601a7bf95eca9f2b02331c612dade1d8a6a572f42bcbfa32c55a815db6e178a44 + chai: "npm:^4.3.4" + child_process: "npm:^1.0.2" + ffjavascript: "npm:^0.2.38" + fnv-plus: "npm:^1.3.1" + r1csfile: "npm:0.0.37" + snarkjs: "npm:0.4.10" + tmp-promise: "npm:^3.0.2" + util: "npm:^0.12.4" + checksum: 10/ba2190faff937123c8e4ee163a42e2954fa4209cbfb6b9db4443438cc437d148f4d9f4d3fede83880dd34da6d694dd62eee9ade868c090ff1ca5e644cfe23297 languageName: node linkType: hard "circomlib@npm:2.0.2": version: 2.0.2 resolution: "circomlib@npm:2.0.2" - checksum: 7bf7fea613ed37c2520e16c74f80404bea1a3ddc4801e3fb68ad90dd49ea295876df8c55a0a11eae4927e0e3f1b56913ac8d8165d07617cc8b32a13f3827f6c9 + checksum: 10/948d223c23e86bc2acac07a4a569da66206023de6c967fa93308a96ea4d02a8b9c4a23187d38ef3b16e6178126bcf7045597edde136892e554c7575234094dc7 languageName: node linkType: hard @@ -4844,25 +4844,25 @@ __metadata: version: 0.1.7 resolution: "circomlibjs@npm:0.1.7" dependencies: - blake-hash: ^2.0.0 - blake2b: ^2.1.3 - ethers: ^5.5.1 - ffjavascript: ^0.2.45 - checksum: 843aa422e7a203d06e1ef9ae6bf334d726a8091eda5afcc3a6531727a6ea3acb5c4a2498bf444fda35824064d45c25cb89fe99b02410fc0f7ff2dc6d7101d779 + blake-hash: "npm:^2.0.0" + blake2b: "npm:^2.1.3" + ethers: "npm:^5.5.1" + ffjavascript: "npm:^0.2.45" + checksum: 10/0a4fec401a17d41d5dda79124f0e72cbbbbba099eded8f4d2a6141fd68f68a89ba8b83c838635e34ac1867bc4cd3cb9637de08caf2dd975c2a6b554fa5a2d756 languageName: node linkType: hard "cjs-module-lexer@npm:^1.0.0": version: 1.2.2 resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 977f3f042bd4f08e368c890d91eecfbc4f91da0bc009a3c557bc4dfbf32022ad1141244ac1178d44de70fc9f3dea7add7cd9a658a34b9fae98a55d8f92331ce5 + checksum: 10/f80f84bfdcc53379cc18e25ea3c0cdb4595c142b8e28df304f5c88f38202e1bccf13e845401593656781f79fb43273e1d402d6187d0eeee8dca5ddecee1dcad4 languageName: node linkType: hard "class-is@npm:^1.1.0": version: 1.1.0 resolution: "class-is@npm:1.1.0" - checksum: 49024de3b264fc501a38dd59d8668f1a2b4973fa6fcef6b83d80fe6fe99a2000a8fbea5b50d4607169c65014843c9f6b41a4f8473df806c1b4787b4d47521880 + checksum: 10/8147a3e4ce86eb103d78621d665b87e8e33fcb3f54932fdca894b8222820903b43b2f6b4335d8822104702a5dc904c8f187127fdea4e7d48d905488b35c9e6a7 languageName: node linkType: hard @@ -4870,20 +4870,20 @@ __metadata: version: 1.2.0 resolution: "classic-level@npm:1.2.0" dependencies: - abstract-level: ^1.0.2 - catering: ^2.1.0 - module-error: ^1.0.1 - napi-macros: ~2.0.0 - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: 88ddd12f2192c2775107d5e462998ac01095cb0222ca01dc2be77d8dcbbf9883c4c0a0248529cceee40a2f1232c68027b1aca731da9f767ad8e9483cbd61dd37 + abstract-level: "npm:^1.0.2" + catering: "npm:^2.1.0" + module-error: "npm:^1.0.1" + napi-macros: "npm:~2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10/0a6116b5c3e650e33fe63365357ccc0ecd0694d33df1e4b773baa485fa5a37e0f892337c95b1de133f6f62b029add85eb1fc58e03c2e390ce6e5448781af1235 languageName: node linkType: hard "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + checksum: 10/2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 languageName: node linkType: hard @@ -4891,13 +4891,13 @@ __metadata: version: 0.5.1 resolution: "cli-table3@npm:0.5.1" dependencies: - colors: ^1.1.2 - object-assign: ^4.1.0 - string-width: ^2.1.1 + colors: "npm:^1.1.2" + object-assign: "npm:^4.1.0" + string-width: "npm:^2.1.1" dependenciesMeta: colors: optional: true - checksum: 3ff8c821440a2a0e655a01f04e5b54a0365b3814676cd93cec2b2b0b9952a08311797ad242a181733fcff714fa7d776f8bb45ad812f296390bfa5ef584fb231d + checksum: 10/5b4aaa81943c9030e3366aaf20cc4be0792397d82dea3a1660e80ce49edded4dcc722f9bf272354061c5bfa3f4236ad2fdc86bc7bb0bbf7e4b8e8d3b418b955a languageName: node linkType: hard @@ -4905,10 +4905,10 @@ __metadata: version: 2.0.10 resolution: "clipboard@npm:2.0.10" dependencies: - good-listener: ^1.2.2 - select: ^1.1.2 - tiny-emitter: ^2.0.0 - checksum: 401ae9f27c9cb8f03f7a33e1a06ad8f1208a75dc36d037cc6542708c8e4a43974c4e4186d9154e0161541934bb2073ee2e078db80e5c7df3f0544aad2508262c + good-listener: "npm:^1.2.2" + select: "npm:^1.1.2" + tiny-emitter: "npm:^2.0.0" + checksum: 10/2df69dd4ed86939cf1c330e23281dd979636475ba40d0b6c7c61702d63606b75c6a24660894c897a089922ca32251afe24448d58d8c57895215cb8dfeddf2858 languageName: node linkType: hard @@ -4916,10 +4916,10 @@ __metadata: version: 5.0.0 resolution: "cliui@npm:5.0.0" dependencies: - string-width: ^3.1.0 - strip-ansi: ^5.2.0 - wrap-ansi: ^5.1.0 - checksum: 0bb8779efe299b8f3002a73619eaa8add4081eb8d1c17bc4fedc6240557fb4eacdc08fe87c39b002eacb6cfc117ce736b362dbfd8bf28d90da800e010ee97df4 + string-width: "npm:^3.1.0" + strip-ansi: "npm:^5.2.0" + wrap-ansi: "npm:^5.1.0" + checksum: 10/381264fcc3c8316b77b378ce5471ff9a1974d1f6217e0be8f4f09788482b3e6f7c0894eb21e0a86eab4ce0c68426653a407226dd51997306cb87f734776f5fdc languageName: node linkType: hard @@ -4927,10 +4927,10 @@ __metadata: version: 6.0.0 resolution: "cliui@npm:6.0.0" dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^6.2.0 - checksum: 4fcfd26d292c9f00238117f39fc797608292ae36bac2168cfee4c85923817d0607fe21b3329a8621e01aedf512c99b7eaa60e363a671ffd378df6649fb48ae42 + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10/44afbcc29df0899e87595590792a871cd8c4bc7d6ce92832d9ae268d141a77022adafca1aeaeccff618b62a613b8354e57fe22a275c199ec04baf00d381ef6ab languageName: node linkType: hard @@ -4938,10 +4938,10 @@ __metadata: version: 7.0.4 resolution: "cliui@npm:7.0.4" dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^7.0.0 - checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10/db858c49af9d59a32d603987e6fddaca2ce716cd4602ba5a2bb3a5af1351eebe82aba8dff3ef3e1b331f7fa9d40ca66e67bdf8e7c327ce0ea959747ead65c0ef languageName: node linkType: hard @@ -4949,10 +4949,10 @@ __metadata: version: 8.0.1 resolution: "cliui@npm:8.0.1" dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.1 - wrap-ansi: ^7.0.0 - checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10/eaa5561aeb3135c2cddf7a3b3f562fc4238ff3b3fc666869ef2adf264be0f372136702f16add9299087fb1907c2e4ec5dbfe83bd24bce815c70a80c6c1a2e950 languageName: node linkType: hard @@ -4960,15 +4960,15 @@ __metadata: version: 1.0.3 resolution: "clone-response@npm:1.0.3" dependencies: - mimic-response: ^1.0.0 - checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e + mimic-response: "npm:^1.0.0" + checksum: 10/4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e languageName: node linkType: hard "cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0": version: 1.1.2 resolution: "cluster-key-slot@npm:1.1.2" - checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681 + checksum: 10/516ed8b5e1a14d9c3a9c96c72ef6de2d70dfcdbaa0ec3a90bc7b9216c5457e39c09a5775750c272369070308542e671146120153062ab5f2f481bed5de2c925f languageName: node linkType: hard @@ -4976,22 +4976,22 @@ __metadata: version: 0.0.3 resolution: "cmdparser@npm:0.0.3" dependencies: - async: ~0.1.22 - checksum: 7578d0b08e2697233a085fa24d8f81545168ca34f7ef14e373a18610bbf6797c9b139c277a833101dda4d1eea29a2f08fe17a2a46716d8b1550bfd8e9b14ac01 + async: "npm:~0.1.22" + checksum: 10/9037c7047db3f2f9da6e73b05a5bec26a2a24a785744a009c676277a6660603bcdc5de07928c6e778061e029d5462d316fb04a54fa2ae3b1479834a816723c77 languageName: node linkType: hard "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" - checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + checksum: 10/a5d9f37091c70398a269e625cedff5622f200ed0aa0cff22ee7b55ed74a123834b58711776eb0f1dc58eb6ebbc1185aa7567b57bd5979a948c6e4f85073e2c05 languageName: node linkType: hard "collect-v8-coverage@npm:^1.0.0": version: 1.0.1 resolution: "collect-v8-coverage@npm:1.0.1" - checksum: 4efe0a1fccd517b65478a2364b33dadd0a43fc92a56f59aaece9b6186fe5177b2de471253587de7c91516f07c7268c2f6770b6cbcffc0e0ece353b766ec87e55 + checksum: 10/85b26945ab9b8e15077f877a4a5bc91d836480c600bac4cd0a0e8be8515583fdfc393ccff049ff3e9f46cac39e5295af049209f3c484f30a028056cc5dd1fe8a languageName: node linkType: hard @@ -4999,8 +4999,8 @@ __metadata: version: 1.9.3 resolution: "color-convert@npm:1.9.3" dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + color-name: "npm:1.1.3" + checksum: 10/ffa319025045f2973919d155f25e7c00d08836b6b33ea2d205418c59bd63a665d713c52d9737a9e0fe467fb194b40fbef1d849bae80d674568ee220a31ef3d10 languageName: node linkType: hard @@ -5008,22 +5008,22 @@ __metadata: version: 2.0.1 resolution: "color-convert@npm:2.0.1" dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + color-name: "npm:~1.1.4" + checksum: 10/fa00c91b4332b294de06b443923246bccebe9fab1b253f7fe1772d37b06a2269b4039a85e309abe1fe11b267b11c08d1d0473fda3badd6167f57313af2887a64 languageName: node linkType: hard "color-name@npm:1.1.3": version: 1.1.3 resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + checksum: 10/09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d languageName: node linkType: hard "color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard @@ -5031,9 +5031,9 @@ __metadata: version: 1.9.1 resolution: "color-string@npm:1.9.1" dependencies: - color-name: ^1.0.0 - simple-swizzle: ^0.2.2 - checksum: c13fe7cff7885f603f49105827d621ce87f4571d78ba28ef4a3f1a104304748f620615e6bf065ecd2145d0d9dad83a3553f52bb25ede7239d18e9f81622f1cc5 + color-name: "npm:^1.0.0" + simple-swizzle: "npm:^0.2.2" + checksum: 10/72aa0b81ee71b3f4fb1ac9cd839cdbd7a011a7d318ef58e6cb13b3708dca75c7e45029697260488709f1b1c7ac4e35489a87e528156c1e365917d1c4ccb9b9cd languageName: node linkType: hard @@ -5042,7 +5042,7 @@ __metadata: resolution: "color-support@npm:1.1.3" bin: color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + checksum: 10/4bcfe30eea1498fe1cabc852bbda6c9770f230ea0e4faf4611c5858b1b9e4dde3730ac485e65f54ca182f4c50b626c1bea7c8441ceda47367a54a818c248aa7a languageName: node linkType: hard @@ -5050,16 +5050,16 @@ __metadata: version: 3.2.1 resolution: "color@npm:3.2.1" dependencies: - color-convert: ^1.9.3 - color-string: ^1.6.0 - checksum: f81220e8b774d35865c2561be921f5652117638dcda7ca4029262046e37fc2444ac7bbfdd110cf1fd9c074a4ee5eda8f85944ffbdda26186b602dd9bb05f6400 + color-convert: "npm:^1.9.3" + color-string: "npm:^1.6.0" + checksum: 10/bf70438e0192f4f62f4bfbb303e7231289e8cc0d15ff6b6cbdb722d51f680049f38d4fdfc057a99cb641895cf5e350478c61d98586400b060043afc44285e7ae languageName: node linkType: hard "colors@npm:1.4.0, colors@npm:^1.1.2": version: 1.4.0 resolution: "colors@npm:1.4.0" - checksum: 98aa2c2418ad87dedf25d781be69dc5fc5908e279d9d30c34d8b702e586a0474605b3a189511482b9d5ed0d20c867515d22749537f7bc546256c6014f3ebdcec + checksum: 10/90b2d5465159813a3983ea72ca8cff75f784824ad70f2cc2b32c233e95bcfbcda101ebc6d6766bc50f57263792629bfb4f1f8a4dfbd1d240f229fc7f69b785fc languageName: node linkType: hard @@ -5067,9 +5067,9 @@ __metadata: version: 1.1.4 resolution: "colorspace@npm:1.1.4" dependencies: - color: ^3.1.3 - text-hex: 1.0.x - checksum: bb3934ef3c417e961e6d03d7ca60ea6e175947029bfadfcdb65109b01881a1c0ecf9c2b0b59abcd0ee4a0d7c1eae93beed01b0e65848936472270a0b341ebce8 + color: "npm:^3.1.3" + text-hex: "npm:1.0.x" + checksum: 10/bb3934ef3c417e961e6d03d7ca60ea6e175947029bfadfcdb65109b01881a1c0ecf9c2b0b59abcd0ee4a0d7c1eae93beed01b0e65848936472270a0b341ebce8 languageName: node linkType: hard @@ -5077,15 +5077,15 @@ __metadata: version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + delayed-stream: "npm:~1.0.0" + checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 languageName: node linkType: hard "command-exists@npm:^1.2.8": version: 1.2.9 resolution: "command-exists@npm:1.2.9" - checksum: 729ae3d88a2058c93c58840f30341b7f82688a573019535d198b57a4d8cb0135ced0ad7f52b591e5b28a90feb2c675080ce916e56254a0f7c15cb2395277cac3 + checksum: 10/46fb3c4d626ca5a9d274f8fe241230817496abc34d12911505370b7411999e183c11adff7078dd8a03ec4cf1391290facda40c6a4faac8203ae38c985eaedd63 languageName: node linkType: hard @@ -5093,11 +5093,11 @@ __metadata: version: 5.2.1 resolution: "command-line-args@npm:5.2.1" dependencies: - array-back: ^3.1.0 - find-replace: ^3.0.0 - lodash.camelcase: ^4.3.0 - typical: ^4.0.0 - checksum: e759519087be3cf2e86af8b9a97d3058b4910cd11ee852495be881a067b72891f6a32718fb685ee6d41531ab76b2b7bfb6602f79f882cd4b7587ff1e827982c7 + array-back: "npm:^3.1.0" + find-replace: "npm:^3.0.0" + lodash.camelcase: "npm:^4.3.0" + typical: "npm:^4.0.0" + checksum: 10/e6a42652ae8843fbb56e2fba1e85da00a16a0482896bb1849092e1bc70b8bf353d945e69732bf4ae98370ff84e8910ff4933af8f2f747806a6b2cb5074799fdb languageName: node linkType: hard @@ -5105,39 +5105,39 @@ __metadata: version: 6.1.3 resolution: "command-line-usage@npm:6.1.3" dependencies: - array-back: ^4.0.2 - chalk: ^2.4.2 - table-layout: ^1.0.2 - typical: ^5.2.0 - checksum: 8261d4e5536eb0bcddee0ec5e89c05bb2abd18e5760785c8078ede5020bc1c612cbe28eb6586f5ed4a3660689748e5aaad4a72f21566f4ef39393694e2fa1a0b + array-back: "npm:^4.0.2" + chalk: "npm:^2.4.2" + table-layout: "npm:^1.0.2" + typical: "npm:^5.2.0" + checksum: 10/902901582a543b26f55f90fc0f266c08a603a92bfadd8d07c66679f3d9eea2c074a039404126b0c4b65ff8452153c5f2010ea2f4ec14b70be0c77241f6d5bd53 languageName: node linkType: hard "commander@npm:3.0.2": version: 3.0.2 resolution: "commander@npm:3.0.2" - checksum: 6d14ad030d1904428139487ed31febcb04c1604db2b8d9fae711f60ee6718828dc0e11602249e91c8a97b0e721e9c6d53edbc166bad3cde1596851d59a8f824d + checksum: 10/f42053569f5954498246783465b39139917a51284bf3361574c9f731fea27a4bd6452dbb1755cc2d923c7b47dfea67930037c7b7e862288f2c397cec9a74da87 languageName: node linkType: hard "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" - checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc + checksum: 10/9973af10727ad4b44f26703bf3e9fdc323528660a7590efe3aa9ad5042b4584c0deed84ba443f61c9d6f02dade54a5a5d3c95e306a1e1630f8374ae6db16c06d languageName: node linkType: hard "commander@npm:^8.1.0": version: 8.3.0 resolution: "commander@npm:8.3.0" - checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 + checksum: 10/6b7b5d334483ce24bd73c5dac2eab901a7dbb25fd983ea24a1eeac6e7166bb1967f641546e8abf1920afbde86a45fbfe5812fbc69d0dc451bb45ca416a12a3a3 languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + checksum: 10/9680699c8e2b3af0ae22592cb764acaf973f292a7b71b8a06720233011853a58e256c89216a10cbe889727532fd77f8bcd49a760cedfde271b8e006c20e079f2 languageName: node linkType: hard @@ -5145,11 +5145,11 @@ __metadata: version: 1.6.2 resolution: "concat-stream@npm:1.6.2" dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^2.2.2 - typedarray: ^0.0.6 - checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 + buffer-from: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.2.2" + typedarray: "npm:^0.0.6" + checksum: 10/71db903c84fc073ca35a274074e8d26c4330713d299f8623e993c448c1f6bf8b967806dd1d1a7b0f8add6f15ab1af7435df21fe79b4fe7efd78420c89e054e28 languageName: node linkType: hard @@ -5157,15 +5157,15 @@ __metadata: version: 3.3.7 resolution: "config@npm:3.3.7" dependencies: - json5: ^2.1.1 - checksum: 53b68dbf303a262b16ee376bb8ee08a9f1f4d09ea5d35a45cd9a47a47591a0817c00d5d10f0d53328221f2a927c98ef8eb921679ad9722c80400df6839c40861 + json5: "npm:^2.1.1" + checksum: 10/0e4dae97de77ca229feb63b715254b4219aa3b09d1bb66ecdadf82bd4d6617bf85bfec54b0b7ae09727058386fa9dadfe9ea66e73330a696ab1ae0c7e6555b63 languageName: node linkType: hard "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + checksum: 10/27b5fa302bc8e9ae9e98c03c66d76ca289ad0c61ce2fe20ab288d288bee875d217512d2edb2363fc83165e88f1c405180cf3f5413a46e51b4fe1a004840c6cdb languageName: node linkType: hard @@ -5173,8 +5173,8 @@ __metadata: version: 0.5.4 resolution: "content-disposition@npm:0.5.4" dependencies: - safe-buffer: 5.2.1 - checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + safe-buffer: "npm:5.2.1" + checksum: 10/b7f4ce176e324f19324be69b05bf6f6e411160ac94bc523b782248129eb1ef3be006f6cff431aaea5e337fe5d176ce8830b8c2a1b721626ead8933f0cbe78720 languageName: node linkType: hard @@ -5182,73 +5182,73 @@ __metadata: version: 2.5.2 resolution: "content-hash@npm:2.5.2" dependencies: - cids: ^0.7.1 - multicodec: ^0.5.5 - multihashes: ^0.4.15 - checksum: 31869e4d137b59d02003df0c0f0ad080744d878ed12a57f7d20b2cfd526d59d6317e9f52fa6e49cba59df7f9ab49ceb96d6a832685b85bae442e0c906f7193be + cids: "npm:^0.7.1" + multicodec: "npm:^0.5.5" + multihashes: "npm:^0.4.15" + checksum: 10/7c5d05052aecead40a1bbdd251468a6cc9bf4c48b361b4f138d60e6d876dc3028da6142031578ddc42e44e0024f91cc01b7a539bdb0bf7187e36bec15052e02d languageName: node linkType: hard "content-type@npm:~1.0.4, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" - checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 + checksum: 10/585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662 languageName: node linkType: hard "convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": version: 1.9.0 resolution: "convert-source-map@npm:1.9.0" - checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 + checksum: 10/dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 languageName: node linkType: hard "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" - checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + checksum: 10/c987be3ec061348cdb3c2bfb924bec86dea1eacad10550a85ca23edb0fe3556c3a61c7399114f3331ccb3499d7fd0285ab24566e5745929412983494c3926e15 languageName: node linkType: hard "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" - checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a + checksum: 10/f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a languageName: node linkType: hard "cookie@npm:0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" - checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 + checksum: 10/aae7911ddc5f444a9025fbd979ad1b5d60191011339bce48e555cb83343d0f98b865ff5c4d71fecdfb8555a5cafdc65632f6fce172f32aaf6936830a883a0380 languageName: node linkType: hard "cookie@npm:^0.4.1": version: 0.4.2 resolution: "cookie@npm:0.4.2" - checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b + checksum: 10/2e1de9fdedca54881eab3c0477aeb067f281f3155d9cfee9d28dfb252210d09e85e9d175c0a60689661feb9e35e588515352f2456bc1f8e8db4267e05fd70137 languageName: node linkType: hard "core-js-pure@npm:^3.0.1": version: 3.28.0 resolution: "core-js-pure@npm:3.28.0" - checksum: 8bef96a435783ea7e62b2bd4d6cc3d427a7bfeb053954aadabb33b5dba14a85c6297f7638bba9676a144f9cd7a5a0185a576d41d67baaae15227a4c9982a8cef + checksum: 10/4db4ceb377c96ae8d6ed37ca225a236a36a93aa54c6217e99fd82acccba0e082f26fbf6265fcf28557036552160af54b04254d320f6e53d5e54c25ab98254b0c languageName: node linkType: hard "core-util-is@npm:1.0.2": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" - checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab + checksum: 10/d0f7587346b44a1fe6c269267e037dd34b4787191e473c3e685f507229d88561c40eb18872fabfff02977301815d474300b7bfbd15396c13c5377393f7e87ec3 languageName: node linkType: hard "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 + checksum: 10/9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 languageName: node linkType: hard @@ -5256,9 +5256,9 @@ __metadata: version: 2.8.5 resolution: "cors@npm:2.8.5" dependencies: - object-assign: ^4 - vary: ^1 - checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 + object-assign: "npm:^4" + vary: "npm:^1" + checksum: 10/66e88e08edee7cbce9d92b4d28a2028c88772a4c73e02f143ed8ca76789f9b59444eed6b1c167139e76fa662998c151322720093ba229f9941365ada5a6fc2c6 languageName: node linkType: hard @@ -5266,9 +5266,9 @@ __metadata: version: 0.7.2 resolution: "cosmjs-types@npm:0.7.2" dependencies: - long: ^4.0.0 - protobufjs: ~6.11.2 - checksum: 4a0b730a7f1ae8efa8bd044f9ebdd7921f26319ff2abf36ac7e2f93ef6f3e73d90c1775ce2325611d47c4ccc72a708a63e31e89d9d80ad75c1107c7228e09bc8 + long: "npm:^4.0.0" + protobufjs: "npm:~6.11.2" + checksum: 10/28144cfdce38dafedd702b90a625fb5822ddc0abb63cca4eaf25e5c7b1ef80b0186248f1cf302f181b96f8394fa1e103c30817a61250a9cfec4502b84f997252 languageName: node linkType: hard @@ -5277,7 +5277,7 @@ __metadata: resolution: "crc-32@npm:1.2.2" bin: crc32: bin/crc32.njs - checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff243 + checksum: 10/824f696a5baaf617809aa9cd033313c8f94f12d15ebffa69f10202480396be44aef9831d900ab291638a8022ed91c360696dd5b1ba691eb3f34e60be8835b7c3 languageName: node linkType: hard @@ -5285,12 +5285,12 @@ __metadata: version: 1.2.0 resolution: "create-hash@npm:1.2.0" dependencies: - cipher-base: ^1.0.1 - inherits: ^2.0.1 - md5.js: ^1.3.4 - ripemd160: ^2.0.1 - sha.js: ^2.4.0 - checksum: 02a6ae3bb9cd4afee3fabd846c1d8426a0e6b495560a977ba46120c473cb283be6aa1cace76b5f927cf4e499c6146fb798253e48e83d522feba807d6b722eaa9 + cipher-base: "npm:^1.0.1" + inherits: "npm:^2.0.1" + md5.js: "npm:^1.3.4" + ripemd160: "npm:^2.0.1" + sha.js: "npm:^2.4.0" + checksum: 10/3cfef32043b47a8999602af9bcd74966db6971dd3eb828d1a479f3a44d7f58e38c1caf34aa21a01941cc8d9e1a841738a732f200f00ea155f8a8835133d2e7bc languageName: node linkType: hard @@ -5298,13 +5298,13 @@ __metadata: version: 1.1.7 resolution: "create-hmac@npm:1.1.7" dependencies: - cipher-base: ^1.0.3 - create-hash: ^1.1.0 - inherits: ^2.0.1 - ripemd160: ^2.0.0 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: ba12bb2257b585a0396108c72830e85f882ab659c3320c83584b1037f8ab72415095167ced80dc4ce8e446a8ecc4b2acf36d87befe0707d73b26cf9dc77440ed + cipher-base: "npm:^1.0.3" + create-hash: "npm:^1.1.0" + inherits: "npm:^2.0.1" + ripemd160: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10/2b26769f87e99ef72150bf99d1439d69272b2e510e23a2b8daf4e93e2412f4842504237d726044fa797cb20ee0ec8bee78d414b11f2d7ca93299185c93df0dae languageName: node linkType: hard @@ -5312,23 +5312,23 @@ __metadata: version: 29.7.0 resolution: "create-jest@npm:29.7.0" dependencies: - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-config: ^29.7.0 - jest-util: ^29.7.0 - prompts: ^2.0.1 + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" bin: create-jest: bin/create-jest.js - checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + checksum: 10/847b4764451672b4174be4d5c6d7d63442ec3aa5f3de52af924e4d996d87d7801c18e125504f25232fc75840f6625b3ac85860fac6ce799b5efae7bdcaf4a2b7 languageName: node linkType: hard "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" - checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff + checksum: 10/a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff languageName: node linkType: hard @@ -5336,8 +5336,8 @@ __metadata: version: 4.7.1 resolution: "cron-parser@npm:4.7.1" dependencies: - luxon: ^3.2.1 - checksum: 60642d4710c6ba202b781be6c905d68a47ac69fe1b9eaba06a3f7e9950ba58adbb21ae260452b2801d80b2a1f04f142bb847157c5a707fa4b01a5d2c8842828e + luxon: "npm:^3.2.1" + checksum: 10/bf3da38d71b1af53d2ee57e658fa7a4bb6ef402baad4349f4e8742b252b80a23a2fcaab329a709577bed2f53e6de36ea3b1b69c5ae314f822d9cf9f03b570380 languageName: node linkType: hard @@ -5345,8 +5345,8 @@ __metadata: version: 3.1.6 resolution: "cross-fetch@npm:3.1.6" dependencies: - node-fetch: ^2.6.11 - checksum: 704b3519ab7de488328cc49a52cf1aa14132ec748382be5b9557b22398c33ffa7f8c2530e8a97ed8cb55da52b0a9740a9791d361271c4591910501682d981d9c + node-fetch: "npm:^2.6.11" + checksum: 10/e08325b813da37f2d5312b3e630af992c35681c1737707b029e8ef1c48ea034bda8b960000fc8bee6e0485e133347198aa6ecccadb530b06c47472f6c76bc27b languageName: node linkType: hard @@ -5354,24 +5354,24 @@ __metadata: version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10/e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce languageName: node linkType: hard "crypt@npm:>= 0.0.1": version: 0.0.2 resolution: "crypt@npm:0.0.2" - checksum: baf4c7bbe05df656ec230018af8cf7dbe8c14b36b98726939cef008d473f6fe7a4fad906cfea4062c93af516f1550a3f43ceb4d6615329612c6511378ed9fe34 + checksum: 10/2c72768de3d28278c7c9ffd81a298b26f87ecdfe94415084f339e6632f089b43fe039f2c93f612bcb5ffe447238373d93b2e8c90894cba6cfb0ac7a74616f8b9 languageName: node linkType: hard "crypto-js@npm:^4.1.1": version: 4.1.1 resolution: "crypto-js@npm:4.1.1" - checksum: b3747c12ee3a7632fab3b3e171ea50f78b182545f0714f6d3e7e2858385f0f4101a15f2517e033802ce9d12ba50a391575ff4638c9de3dd9b2c4bc47768d5425 + checksum: 10/99d0033554477a8372d1e508bdbdc334e9bdf9cf6ce3d85d5b5cde2617ed0ebadde0bdd259cdf1182954754fb18fe8d760291d7b70f51bfbe237c06e809d21db languageName: node linkType: hard @@ -5379,9 +5379,9 @@ __metadata: version: 1.0.1 resolution: "d@npm:1.0.1" dependencies: - es5-ext: ^0.10.50 - type: ^1.0.1 - checksum: 49ca0639c7b822db670de93d4fbce44b4aa072cd848c76292c9978a8cd0fff1028763020ff4b0f147bd77bfe29b4c7f82e0f71ade76b2a06100543cdfd948d19 + es5-ext: "npm:^0.10.50" + type: "npm:^1.0.1" + checksum: 10/1296e3f92e646895681c1cb564abd0eb23c29db7d62c5120a279e84e98915499a477808e9580760f09e3744c0ed7ac8f7cff98d096ba9770754f6ef0f1c97983 languageName: node linkType: hard @@ -5389,15 +5389,15 @@ __metadata: version: 1.14.1 resolution: "dashdash@npm:1.14.1" dependencies: - assert-plus: ^1.0.0 - checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 + assert-plus: "npm:^1.0.0" + checksum: 10/137b287fa021201ce100cef772c8eeeaaafdd2aa7282864022acf3b873021e54cb809e9c060fa164840bf54ff72d00d6e2d8da1ee5a86d7200eeefa1123a8f7f languageName: node linkType: hard "dateformat@npm:3.0.3": version: 3.0.3 resolution: "dateformat@npm:3.0.3" - checksum: ca4911148abb09887bd9bdcd632c399b06f3ecad709a18eb594d289a1031982f441e08e281db77ffebcb2cbcbfa1ac578a7cbfbf8743f41009aa5adc1846ed34 + checksum: 10/0504baf50c3777ad333c96c37d1673d67efcb7dd071563832f70b5cbf7f3f4753f18981d44bfd8f665d5e5a511d2fc0af8e0ead8b585b9b3ddaa90067864d3f0 languageName: node linkType: hard @@ -5405,8 +5405,8 @@ __metadata: version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + ms: "npm:2.0.0" + checksum: 10/e07005f2b40e04f1bd14a3dd20520e9c4f25f60224cb006ce9d6781732c917964e9ec029fc7f1a151083cd929025ad5133814d4dc624a9aaf020effe4914ed14 languageName: node linkType: hard @@ -5414,8 +5414,8 @@ __metadata: version: 3.2.6 resolution: "debug@npm:3.2.6" dependencies: - ms: ^2.1.1 - checksum: 07bc8b3a13ef3cfa6c06baf7871dfb174c291e5f85dbf566f086620c16b9c1a0e93bb8f1935ebbd07a683249e7e30286f2966e2ef461e8fd17b1b60732062d6b + ms: "npm:^2.1.1" + checksum: 10/c495d32519ed205aeab71b4bba84701c60b2d18efe98d41f88f498f09423252155450846ee31da0e4c3ea5d7d8f5123525e463612a7d3fa0bcd5fc06e4efe5fc languageName: node linkType: hard @@ -5423,11 +5423,11 @@ __metadata: version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: - ms: 2.1.2 + ms: "npm:2.1.2" peerDependenciesMeta: supports-color: optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + checksum: 10/0073c3bcbd9cb7d71dd5f6b55be8701af42df3e56e911186dfa46fac3a5b9eb7ce7f377dd1d3be6db8977221f8eb333d945216f645cf56f6b688cd484837d255 languageName: node linkType: hard @@ -5435,29 +5435,29 @@ __metadata: version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + ms: "npm:^2.1.1" + checksum: 10/d86fd7be2b85462297ea16f1934dc219335e802f629ca9a69b63ed8ed041dda492389bb2ee039217c02e5b54792b1c51aa96ae954cf28634d363a2360c7a1639 languageName: node linkType: hard "decamelize@npm:^1.2.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" - checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa + checksum: 10/ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa languageName: node linkType: hard "decamelize@npm:^4.0.0": version: 4.0.0 resolution: "decamelize@npm:4.0.0" - checksum: b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 + checksum: 10/b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 languageName: node linkType: hard "decode-uri-component@npm:^0.2.0": version: 0.2.2 resolution: "decode-uri-component@npm:0.2.2" - checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 + checksum: 10/17a0e5fa400bf9ea84432226e252aa7b5e72793e16bf80b907c99b46a799aeacc139ec20ea57121e50c7bd875a1a4365928f884e92abf02e21a5a13790a0f33e languageName: node linkType: hard @@ -5465,8 +5465,8 @@ __metadata: version: 3.3.0 resolution: "decompress-response@npm:3.3.0" dependencies: - mimic-response: ^1.0.0 - checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 + mimic-response: "npm:^1.0.0" + checksum: 10/952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 languageName: node linkType: hard @@ -5474,8 +5474,8 @@ __metadata: version: 6.0.0 resolution: "decompress-response@npm:6.0.0" dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 + mimic-response: "npm:^3.1.0" + checksum: 10/d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 languageName: node linkType: hard @@ -5487,7 +5487,7 @@ __metadata: peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a + checksum: 10/fc00a8bc3dfb7c413a778dc40ee8151b6c6ff35159d641f36ecd839c1df5c6e0ec5f4992e658c82624a1a62aaecaffc23b9c965ceb0bbf4d698bfc16469ac27d languageName: node linkType: hard @@ -5495,29 +5495,29 @@ __metadata: version: 4.1.3 resolution: "deep-eql@npm:4.1.3" dependencies: - type-detect: ^4.0.0 - checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f + type-detect: "npm:^4.0.0" + checksum: 10/12ce93ae63de187e77b076d3d51bfc28b11f98910a22c18714cce112791195e86a94f97788180994614b14562a86c9763f67c69f785e4586f806b5df39bf9301 languageName: node linkType: hard "deep-extend@npm:~0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + checksum: 10/7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 languageName: node linkType: hard "deepmerge@npm:^4.2.2": version: 4.3.0 resolution: "deepmerge@npm:4.3.0" - checksum: c7980eb5c5be040b371f1df0d566473875cfabed9f672ccc177b81ba8eee5686ce2478de2f1d0076391621cbe729e5eacda397179a59ef0f68901849647db126 + checksum: 10/9f6ef59c33aff23dbfbbdff0607919d671e1af3057dd3627e9708915e64a5575c5797868c6f540fb2faab82d2ca4e30577b808dd085e0b3bf7a5a3184cdfa3a9 languageName: node linkType: hard "defer-to-connect@npm:^2.0.0, defer-to-connect@npm:^2.0.1": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" - checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b + checksum: 10/8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b languageName: node linkType: hard @@ -5525,9 +5525,9 @@ __metadata: version: 5.3.0 resolution: "deferred-leveldown@npm:5.3.0" dependencies: - abstract-leveldown: ~6.2.1 - inherits: ^2.0.3 - checksum: 5631e153528bb9de1aa60d59a5065d1a519374c5e4c1d486f2190dba4008dcf5c2ee8dd7f2f81396fc4d5a6bb6e7d0055e3dfe68afe00da02adaa3bf329addf7 + abstract-leveldown: "npm:~6.2.1" + inherits: "npm:^2.0.3" + checksum: 10/23739c39525e4a51b3ef33cfd462b4acc9b09d66c19f2731ae6ce21a72ad00e5fad4205c0f4f46bb3f3a07844502aa9207b3c0d468a9e4da3aca32341ccabe7a languageName: node linkType: hard @@ -5535,114 +5535,114 @@ __metadata: version: 1.2.0 resolution: "define-properties@npm:1.2.0" dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10/e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 languageName: node linkType: hard "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 languageName: node linkType: hard "delegate@npm:^3.1.2": version: 3.2.0 resolution: "delegate@npm:3.2.0" - checksum: d943058fe05897228b158cbd1bab05164df28c8f54127873231d6b03b0a5acc1b3ee1f98ac70ccc9b79cd84aa47118a7de111fee2923753491583905069da27d + checksum: 10/d943058fe05897228b158cbd1bab05164df28c8f54127873231d6b03b0a5acc1b3ee1f98ac70ccc9b79cd84aa47118a7de111fee2923753491583905069da27d languageName: node linkType: hard "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + checksum: 10/a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd languageName: node linkType: hard "denque@npm:^1.1.0": version: 1.5.1 resolution: "denque@npm:1.5.1" - checksum: 4375ad19d5cea99f90effa82a8cecdaa10f4eb261fbcd7e47cd753ff2737f037aac8f7f4e031cc77f3966314c491c86a0d3b20c128aeee57f791b4662c45108e + checksum: 10/dbde01a987d95205f7563c67411e0964073a6b38e4cf2ff190cf91f71e2ce3f51c40bacd31f2a5497e0ff82366bcfd8231d3659cb03f987279130058d512aa29 languageName: node linkType: hard "denque@npm:^2.1.0": version: 2.1.0 resolution: "denque@npm:2.1.0" - checksum: 1d4ae1d05e59ac3a3481e7b478293f4b4c813819342273f3d5b826c7ffa9753c520919ba264f377e09108d24ec6cf0ec0ac729a5686cbb8f32d797126c5dae74 + checksum: 10/8ea05321576624b90acfc1ee9208b8d1d04b425cf7573b9b4fa40a2c3ed4d4b0af5190567858f532f677ed2003d4d2b73c8130b34e3c7b8d5e88cdcfbfaa1fe7 languageName: node linkType: hard "depd@npm:2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + checksum: 10/c0c8ff36079ce5ada64f46cc9d6fd47ebcf38241105b6e0c98f412e8ad91f084bcf906ff644cc3a4bd876ca27a62accb8b0fff72ea6ed1a414b89d8506f4a5ca languageName: node linkType: hard "depd@npm:^1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 + checksum: 10/2ed6966fc14463a9e85451db330ab8ba041efed0b9a1a472dbfc6fbf2f82bab66491915f996b25d8517dddc36c8c74e24c30879b34877f3c4410733444a51d1d languageName: node linkType: hard "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" - checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 + checksum: 10/0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 languageName: node linkType: hard "detect-libc@npm:^2.0.0": version: 2.0.1 resolution: "detect-libc@npm:2.0.1" - checksum: ccb05fcabbb555beb544d48080179c18523a343face9ee4e1a86605a8715b4169f94d663c21a03c310ac824592f2ba9a5270218819bb411ad7be578a527593d7 + checksum: 10/f41b3d8c726127cc010c78bf4cdb6fda20a1a0731ae9fc34698e3b9887d82e19f249f4dc997b423f930d5be0c3ee05dc7fe6c2473dd058856c6b0700eb3e0dc6 languageName: node linkType: hard "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" - checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 + checksum: 10/ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 languageName: node linkType: hard "diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" - checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa + checksum: 10/179daf9d2f9af5c57ad66d97cb902a538bcf8ed64963fa7aa0c329b3de3665ce2eb6ffdc2f69f29d445fa4af2517e5e55e5b6e00c00a9ae4f43645f97f7078cb languageName: node linkType: hard "diff@npm:3.5.0": version: 3.5.0 resolution: "diff@npm:3.5.0" - checksum: 00842950a6551e26ce495bdbce11047e31667deea546527902661f25cc2e73358967ebc78cf86b1a9736ec3e14286433225f9970678155753a6291c3bca5227b + checksum: 10/cfbc2df98d6f8eb82c0f7735c8468695f65189d31f95a708d4c97cd96a8083fdfd83d87a067a29924ae7d8ff64f578e7da78391af537815750268555fe0df9f0 languageName: node linkType: hard "diff@npm:5.0.0": version: 5.0.0 resolution: "diff@npm:5.0.0" - checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 + checksum: 10/4a179a75b17cbb420eb9145be913f9ddb34b47cb2ba4301e80ae745122826a468f02ca8f5e56945958de26ace594899c8381acb6659c88e7803ef078b53d690c languageName: node linkType: hard "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" - checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d + checksum: 10/ec09ec2101934ca5966355a229d77afcad5911c92e2a77413efda5455636c4cf2ce84057e2d7715227a2eeeda04255b849bd3ae3a4dd22eb22e86e76456df069 languageName: node linkType: hard "discord-api-types@npm:0.37.50": version: 0.37.50 resolution: "discord-api-types@npm:0.37.50" - checksum: 08dc5145dbefda5f52b479cd42d96ac2b8110300861855e1f92cc8a0a6525a4059e32724cd5237490c286f5afd86797a86823238cd5eee016198560bb36f6d43 + checksum: 10/df8feffd025fadcdcd7b9fafa164d26f15cfeda13add6f1b94f05cebd29d9604db9a6875f774191ba80d7bfd081d3d82e2c7ad7258d7d72fba0ef7e4908fa686 languageName: node linkType: hard @@ -5650,42 +5650,42 @@ __metadata: version: 14.13.0 resolution: "discord.js@npm:14.13.0" dependencies: - "@discordjs/builders": ^1.6.5 - "@discordjs/collection": ^1.5.3 - "@discordjs/formatters": ^0.3.2 - "@discordjs/rest": ^2.0.1 - "@discordjs/util": ^1.0.1 - "@discordjs/ws": ^1.0.1 - "@sapphire/snowflake": ^3.5.1 - "@types/ws": ^8.5.5 - discord-api-types: 0.37.50 - fast-deep-equal: ^3.1.3 - lodash.snakecase: ^4.1.1 - tslib: ^2.6.1 - undici: 5.22.1 - ws: ^8.13.0 - checksum: c273645ac2f92a5052914261c40d04f7fbf81f8d2542f7f0ec9b2e5f9006ff7436d7c6254db924a12826b7f3b49cbfdd577807a0a4ed396036e106f39701a167 + "@discordjs/builders": "npm:^1.6.5" + "@discordjs/collection": "npm:^1.5.3" + "@discordjs/formatters": "npm:^0.3.2" + "@discordjs/rest": "npm:^2.0.1" + "@discordjs/util": "npm:^1.0.1" + "@discordjs/ws": "npm:^1.0.1" + "@sapphire/snowflake": "npm:^3.5.1" + "@types/ws": "npm:^8.5.5" + discord-api-types: "npm:0.37.50" + fast-deep-equal: "npm:^3.1.3" + lodash.snakecase: "npm:^4.1.1" + tslib: "npm:^2.6.1" + undici: "npm:5.22.1" + ws: "npm:^8.13.0" + checksum: 10/6df7a8b28da7c951e36750eb1a32f206965b4c1390b9280bc3ec202134e3e834a3bd9555b3c218a10691346eee3629216ddc9a49ef328b9fe003c31519baeb42 languageName: node linkType: hard "dom-walk@npm:^0.1.0": version: 0.1.2 resolution: "dom-walk@npm:0.1.2" - checksum: 19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3 + checksum: 10/19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3 languageName: node linkType: hard "dotenv@npm:^10.0.0": version: 10.0.0 resolution: "dotenv@npm:10.0.0" - checksum: f412c5fe8c24fbe313d302d2500e247ba8a1946492db405a4de4d30dd0eb186a88a43f13c958c5a7de303938949c4231c56994f97d05c4bc1f22478d631b4005 + checksum: 10/55f701ae213e3afe3f4232fae5edfb6e0c49f061a363ff9f1c5a0c2bf3fb990a6e49aeada11b2a116efb5fdc3bc3f1ef55ab330be43033410b267f7c0809a9dc languageName: node linkType: hard "dotenv@npm:^16.0.2": version: 16.0.3 resolution: "dotenv@npm:16.0.3" - checksum: afcf03f373d7a6d62c7e9afea6328e62851d627a4e73f2e12d0a8deae1cd375892004f3021883f8aec85932cd2834b091f568ced92b4774625b321db83b827f8 + checksum: 10/d6788c8e40b35ad9a9ca29249dccf37fa6b3ad26700fcbc87f2f41101bf914f5193a04e36a3d23de70b1dcb8e5d5a3b21e151debace2c4cd08d868be500a1b29 languageName: node linkType: hard @@ -5693,9 +5693,9 @@ __metadata: version: 0.1.2 resolution: "ecc-jsbn@npm:0.1.2" dependencies: - jsbn: ~0.1.0 - safer-buffer: ^2.1.0 - checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a + jsbn: "npm:~0.1.0" + safer-buffer: "npm:^2.1.0" + checksum: 10/d43591f2396196266e186e6d6928038cc11c76c3699a912cb9c13757060f7bbc7f17f47c4cb16168cdeacffc7965aef021142577e646fb3cb88810c15173eb57 languageName: node linkType: hard @@ -5703,15 +5703,15 @@ __metadata: version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" dependencies: - safe-buffer: ^5.0.1 - checksum: 207f9ab1c2669b8e65540bce29506134613dd5f122cccf1e6a560f4d63f2732d427d938f8481df175505aad94583bcb32c688737bb39a6df0625f903d6d93c03 + safe-buffer: "npm:^5.0.1" + checksum: 10/878e1aab8a42773320bc04c6de420bee21aebd71810e40b1799880a8a1c4594bcd6adc3d4213a0fb8147d4c3f529d8f9a618d7f59ad5a9a41b142058aceda23f languageName: node linkType: hard "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + checksum: 10/1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f languageName: node linkType: hard @@ -5719,10 +5719,10 @@ __metadata: version: 3.1.7 resolution: "ejs@npm:3.1.7" dependencies: - jake: ^10.8.5 + jake: "npm:^10.8.5" bin: ejs: bin/cli.js - checksum: fe40764af39955ce8f8b116716fc8b911959946698edb49ecab85df597746c07aa65d5b74ead28a1e2ffa75b0f92d9bedd752f1c29437da6137b3518271e988c + checksum: 10/a215b98bf55df030cbaa8964a0955ccbad10c056c63af6d06f11c5a463c01ec9f17ca026c9cedc5e83f203ff2382ff454d80ccc74fb059d97db26c028d461dd2 languageName: node linkType: hard @@ -5730,17 +5730,17 @@ __metadata: version: 3.1.8 resolution: "ejs@npm:3.1.8" dependencies: - jake: ^10.8.5 + jake: "npm:^10.8.5" bin: ejs: bin/cli.js - checksum: 1d40d198ad52e315ccf37e577bdec06e24eefdc4e3c27aafa47751a03a0c7f0ec4310254c9277a5f14763c3cd4bbacce27497332b2d87c74232b9b1defef8efc + checksum: 10/879f84c8ee56d06dea7b47a8b493e1b398dba578ec7a701660cf77c8a6d565b932c5896639d1dc4a3be29204eccdb70ee4e1bdf634647c2490227f727d5d6a3d languageName: node linkType: hard "electron-to-chromium@npm:^1.4.284": version: 1.4.308 resolution: "electron-to-chromium@npm:1.4.308" - checksum: 6e49a6c0e0ae2c4be3d5acd76ba6d497383a1ceb224cada6cdbba83aa95952336f96aa742cbf3697dd39d091624b53a912c0015fe5a30a8d6138e14287a0a9ad + checksum: 10/08a5b7e908bbc397b056234dbe27fb31d9cd000e6bda592957a2e6f99416c393db0b5df68a68b8e5c51b20d9a3a6f42eb0c486de1d36656b10f9a1e8a4a8da40 languageName: node linkType: hard @@ -5748,56 +5748,56 @@ __metadata: version: 6.5.4 resolution: "elliptic@npm:6.5.4" dependencies: - bn.js: ^4.11.9 - brorand: ^1.1.0 - hash.js: ^1.0.0 - hmac-drbg: ^1.0.1 - inherits: ^2.0.4 - minimalistic-assert: ^1.0.1 - minimalistic-crypto-utils: ^1.0.1 - checksum: d56d21fd04e97869f7ffcc92e18903b9f67f2d4637a23c860492fbbff5a3155fd9ca0184ce0c865dd6eb2487d234ce9551335c021c376cd2d3b7cb749c7d10f4 + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10/2cd7ff4b69720dbb2ca1ca650b2cf889d1df60c96d4a99d331931e4fe21e45a7f3b8074e86618ca7e56366c4b6258007f234f9d61d9b0c87bbbc8ea990b99e94 languageName: node linkType: hard "emittery@npm:0.10.0": version: 0.10.0 resolution: "emittery@npm:0.10.0" - checksum: 2616a802df51e3f412b9b33f1b43161f7bc96037142cada6ecdbf35ddef1368e30d4f8e47fddc10b0753ccf91d3483b20ebca535b4b1e47526440e13150e2bc7 + checksum: 10/bc94df362052f0c3ea50e764e2b754c94647867af9eff7cc617a2b3b566b90fea588f264cfc86eb3dd1460f3fe7e6cf62cb72d38bd32038786bff014d8eeb248 languageName: node linkType: hard "emittery@npm:^0.13.1": version: 0.13.1 resolution: "emittery@npm:0.13.1" - checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 + checksum: 10/fbe214171d878b924eedf1757badf58a5dce071cd1fa7f620fa841a0901a80d6da47ff05929d53163105e621ce11a71b9d8acb1148ffe1745e045145f6e69521 languageName: node linkType: hard "emoji-regex@npm:^7.0.1": version: 7.0.3 resolution: "emoji-regex@npm:7.0.3" - checksum: 9159b2228b1511f2870ac5920f394c7e041715429a68459ebe531601555f11ea782a8e1718f969df2711d38c66268174407cbca57ce36485544f695c2dfdc96e + checksum: 10/9159b2228b1511f2870ac5920f394c7e041715429a68459ebe531601555f11ea782a8e1718f969df2711d38c66268174407cbca57ce36485544f695c2dfdc96e languageName: node linkType: hard "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + checksum: 10/c72d67a6821be15ec11997877c437491c313d924306b8da5d87d2a2bcc2cec9903cb5b04ee1a088460501d8e5b44f10df82fdc93c444101a7610b80c8b6938e1 languageName: node linkType: hard "enabled@npm:2.0.x": version: 2.0.0 resolution: "enabled@npm:2.0.0" - checksum: 9d256d89f4e8a46ff988c6a79b22fa814b4ffd82826c4fdacd9b42e9b9465709d3b748866d0ab4d442dfc6002d81de7f7b384146ccd1681f6a7f868d2acca063 + checksum: 10/9d256d89f4e8a46ff988c6a79b22fa814b4ffd82826c4fdacd9b42e9b9465709d3b748866d0ab4d442dfc6002d81de7f7b384146ccd1681f6a7f868d2acca063 languageName: node linkType: hard "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + checksum: 10/e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c languageName: node linkType: hard @@ -5805,11 +5805,11 @@ __metadata: version: 6.3.0 resolution: "encoding-down@npm:6.3.0" dependencies: - abstract-leveldown: ^6.2.1 - inherits: ^2.0.3 - level-codec: ^9.0.0 - level-errors: ^2.0.0 - checksum: 74043e6d9061a470614ff61d708c849259ab32932a428fd5ddfb0878719804f56a52f59b31cccd95fddc2e636c0fd22dc3e02481fb98d5bf1bdbbbc44ca09bdc + abstract-leveldown: "npm:^6.2.1" + inherits: "npm:^2.0.3" + level-codec: "npm:^9.0.0" + level-errors: "npm:^2.0.0" + checksum: 10/903af3c76264e3fe0838e7a721954a450e848c301dd3c8ee3dd81d8ed429edca3c8a787f3e19d17ecbe5410cae480913644bfcb0ac9444b74d3a5565e341f21d languageName: node linkType: hard @@ -5817,8 +5817,8 @@ __metadata: version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + iconv-lite: "npm:^0.6.2" + checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f languageName: node linkType: hard @@ -5826,8 +5826,8 @@ __metadata: version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + once: "npm:^1.4.0" + checksum: 10/530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b languageName: node linkType: hard @@ -5835,29 +5835,29 @@ __metadata: version: 2.3.6 resolution: "enquirer@npm:2.3.6" dependencies: - ansi-colors: ^4.1.1 - checksum: 1c0911e14a6f8d26721c91e01db06092a5f7675159f0261d69c403396a385afd13dd76825e7678f66daffa930cfaa8d45f506fb35f818a2788463d022af1b884 + ansi-colors: "npm:^4.1.1" + checksum: 10/751d14f037eb7683997e696fb8d5fe2675e0b0cde91182c128cf598acf3f5bd9005f35f7c2a9109e291140af496ebec237b6dac86067d59a9b44f3688107f426 languageName: node linkType: hard "ensure-posix-path@npm:^1.1.0": version: 1.1.1 resolution: "ensure-posix-path@npm:1.1.1" - checksum: 90ac69f48a08003abe6f194b75bad78c3320762bd193a063eb76cd8f696be6a34e1524f16435eeee09ccbe3a719a7fb76409dead3ccedd10e32d906ff050457b + checksum: 10/90ac69f48a08003abe6f194b75bad78c3320762bd193a063eb76cd8f696be6a34e1524f16435eeee09ccbe3a719a7fb76409dead3ccedd10e32d906ff050457b languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + checksum: 10/65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e languageName: node linkType: hard "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd languageName: node linkType: hard @@ -5865,10 +5865,10 @@ __metadata: version: 0.1.8 resolution: "errno@npm:0.1.8" dependencies: - prr: ~1.0.1 + prr: "npm:~1.0.1" bin: errno: cli.js - checksum: 1271f7b9fbb3bcbec76ffde932485d1e3561856d21d847ec613a9722ee924cdd4e523a62dc71a44174d91e898fe21fdc8d5b50823f4b5e0ce8c35c8271e6ef4a + checksum: 10/93076ed11bedb8f0389cbefcbdd3445f66443159439dccbaac89a053428ad92147676736235d275612dc0296d3f9a7e6b7177ed78a566b6cd15dacd4fa0d5888 languageName: node linkType: hard @@ -5876,8 +5876,8 @@ __metadata: version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + is-arrayish: "npm:^0.2.1" + checksum: 10/d547740aa29c34e753fb6fed2c5de81802438529c12b3673bd37b6bb1fe49b9b7abdc3c11e6062fe625d8a296b3cf769a80f878865e25e685f787763eede3ffb languageName: node linkType: hard @@ -5885,47 +5885,47 @@ __metadata: version: 1.21.1 resolution: "es-abstract@npm:1.21.1" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-set-tostringtag: ^2.0.1 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - globalthis: ^1.0.3 - gopd: ^1.0.1 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - internal-slot: ^1.0.4 - is-array-buffer: ^3.0.1 - is-callable: ^1.2.7 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-typed-array: ^1.1.10 - is-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.6 - string.prototype.trimstart: ^1.0.6 - typed-array-length: ^1.0.4 - unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.9 - checksum: 23ff60d42d17a55d150e7bcedbdb065d4077a8b98c436e0e2e1ef4dd532a6d78a56028673de0bd8ed464a43c46ba781c50d9af429b6a17e44dbd14c7d7fb7926 + available-typed-arrays: "npm:^1.0.5" + call-bind: "npm:^1.0.2" + es-set-tostringtag: "npm:^2.0.1" + es-to-primitive: "npm:^1.2.1" + function-bind: "npm:^1.1.1" + function.prototype.name: "npm:^1.1.5" + get-intrinsic: "npm:^1.1.3" + get-symbol-description: "npm:^1.0.0" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.0" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.4" + is-array-buffer: "npm:^3.0.1" + is-callable: "npm:^1.2.7" + is-negative-zero: "npm:^2.0.2" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.10" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.12.2" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.4.3" + safe-regex-test: "npm:^1.0.0" + string.prototype.trimend: "npm:^1.0.6" + string.prototype.trimstart: "npm:^1.0.6" + typed-array-length: "npm:^1.0.4" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.9" + checksum: 10/065c46977cf2371b1f713c2e6dbcd2487caa2c3b10cfe5ec237206907379ae6cf538ad4d59ebe25763c21f9233a0764c44672b1155770f1397c5dba5d4e5c3e0 languageName: node linkType: hard "es-array-method-boxes-properly@npm:^1.0.0": version: 1.0.0 resolution: "es-array-method-boxes-properly@npm:1.0.0" - checksum: 2537fcd1cecf187083890bc6f5236d3a26bf39237433587e5bf63392e88faae929dbba78ff0120681a3f6f81c23fe3816122982c160d63b38c95c830b633b826 + checksum: 10/27a8a21acf20f3f51f69dce8e643f151e380bffe569e95dc933b9ded9fcd89a765ee21b5229c93f9206c93f87395c6b75f80be8ac8c08a7ceb8771e1822ff1fb languageName: node linkType: hard @@ -5933,10 +5933,10 @@ __metadata: version: 2.0.1 resolution: "es-set-tostringtag@npm:2.0.1" dependencies: - get-intrinsic: ^1.1.3 - has: ^1.0.3 - has-tostringtag: ^1.0.0 - checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 + get-intrinsic: "npm:^1.1.3" + has: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.0" + checksum: 10/ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 languageName: node linkType: hard @@ -5944,10 +5944,10 @@ __metadata: version: 1.2.1 resolution: "es-to-primitive@npm:1.2.1" dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10/74aeeefe2714cf99bb40cab7ce3012d74e1e2c1bd60d0a913b467b269edde6e176ca644b5ba03a5b865fb044a29bca05671cd445c85ca2cdc2de155d7fc8fe9b languageName: node linkType: hard @@ -5955,10 +5955,10 @@ __metadata: version: 0.10.62 resolution: "es5-ext@npm:0.10.62" dependencies: - es6-iterator: ^2.0.3 - es6-symbol: ^3.1.3 - next-tick: ^1.1.0 - checksum: 25f42f6068cfc6e393cf670bc5bba249132c5f5ec2dd0ed6e200e6274aca2fed8e9aec8a31c76031744c78ca283c57f0b41c7e737804c6328c7b8d3fbcba7983 + es6-iterator: "npm:^2.0.3" + es6-symbol: "npm:^3.1.3" + next-tick: "npm:^1.1.0" + checksum: 10/3f6a3bcdb7ff82aaf65265799729828023c687a2645da04005b8f1dc6676a0c41fd06571b2517f89dcf143e0268d3d9ef0fdfd536ab74580083204c688d6fb45 languageName: node linkType: hard @@ -5966,24 +5966,24 @@ __metadata: version: 2.0.3 resolution: "es6-iterator@npm:2.0.3" dependencies: - d: 1 - es5-ext: ^0.10.35 - es6-symbol: ^3.1.1 - checksum: 6e48b1c2d962c21dee604b3d9f0bc3889f11ed5a8b33689155a2065d20e3107e2a69cc63a71bd125aeee3a589182f8bbcb5c8a05b6a8f38fa4205671b6d09697 + d: "npm:1" + es5-ext: "npm:^0.10.35" + es6-symbol: "npm:^3.1.1" + checksum: 10/dbadecf3d0e467692815c2b438dfa99e5a97cbbecf4a58720adcb467a04220e0e36282399ba297911fd472c50ae4158fffba7ed0b7d4273fe322b69d03f9e3a5 languageName: node linkType: hard "es6-object-assign@npm:^1.1.0": version: 1.1.0 resolution: "es6-object-assign@npm:1.1.0" - checksum: 8d4fdf63484d78b5c64cacc2c2e1165bc7b6a64b739d2a9db6a4dc8641d99cc9efb433cdd4dc3d3d6b00bfa6ce959694e4665e3255190339945c5f33b692b5d8 + checksum: 10/396c30376c89e91b5435f177ff83ba0d5ba265e3583cbaaa3bce185df08bf87db58c6d5d84600634280cbf35f8f342569b6ab776d728a12e177e5db82f5b6e2f languageName: node linkType: hard "es6-promise@npm:^4.2.8": version: 4.2.8 resolution: "es6-promise@npm:4.2.8" - checksum: 95614a88873611cb9165a85d36afa7268af5c03a378b35ca7bda9508e1d4f1f6f19a788d4bc755b3fd37c8ebba40782018e02034564ff24c9d6fa37e959ad57d + checksum: 10/b250c55523c496c43c9216c2646e58ec182b819e036fe5eb8d83fa16f044ecc6b8dcefc88ace2097be3d3c4d02b6aa8eeae1a66deeaf13e7bee905ebabb350a3 languageName: node linkType: hard @@ -5991,44 +5991,44 @@ __metadata: version: 3.1.3 resolution: "es6-symbol@npm:3.1.3" dependencies: - d: ^1.0.1 - ext: ^1.1.2 - checksum: cd49722c2a70f011eb02143ef1c8c70658d2660dead6641e160b94619f408b9cf66425515787ffe338affdf0285ad54f4eae30ea5bd510e33f8659ec53bcaa70 + d: "npm:^1.0.1" + ext: "npm:^1.1.2" + checksum: 10/b404e5ecae1a076058aa2ba2568d87e2cb4490cb1130784b84e7b4c09c570b487d4f58ed685a08db8d350bd4916500dd3d623b26e6b3520841d30d2ebb152f8d languageName: node linkType: hard "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 + checksum: 10/afa618e73362576b63f6ca83c975456621095a1ed42ff068174e3f5cea48afc422814dda548c96e6ebb5333e7265140c7292abcc81bbd6ccb1757d50d3a4e182 languageName: node linkType: hard "escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + checksum: 10/6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 languageName: node linkType: hard "escape-string-regexp@npm:1.0.5, escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + checksum: 10/6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 languageName: node linkType: hard "escape-string-regexp@npm:4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 languageName: node linkType: hard "escape-string-regexp@npm:^2.0.0": version: 2.0.0 resolution: "escape-string-regexp@npm:2.0.0" - checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 + checksum: 10/9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 languageName: node linkType: hard @@ -6038,14 +6038,14 @@ __metadata: bin: esparse: ./bin/esparse.js esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 + checksum: 10/f1d3c622ad992421362294f7acf866aa9409fbad4eb2e8fa230bd33944ce371d32279667b242d8b8907ec2b6ad7353a717f3c0e60e748873a34a7905174bc0eb languageName: node linkType: hard "etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + checksum: 10/571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff languageName: node linkType: hard @@ -6053,9 +6053,9 @@ __metadata: version: 2.0.8 resolution: "eth-ens-namehash@npm:2.0.8" dependencies: - idna-uts46-hx: ^2.3.1 - js-sha3: ^0.5.7 - checksum: 40ce4aeedaa4e7eb4485c8d8857457ecc46a4652396981d21b7e3a5f922d5beff63c71cb4b283c935293e530eba50b329d9248be3c433949c6bc40c850c202a3 + idna-uts46-hx: "npm:^2.3.1" + js-sha3: "npm:^0.5.7" + checksum: 10/098c04378b0b998191b4bcd2f1a59be976946bbb80cea7bc2a6d1df3a035e061b2fd120b16bf41558c4beb2dd846433742058b091b20195e4b0e1fc64b67979f languageName: node linkType: hard @@ -6063,27 +6063,27 @@ __metadata: version: 0.2.25 resolution: "eth-gas-reporter@npm:0.2.25" dependencies: - "@ethersproject/abi": ^5.0.0-beta.146 - "@solidity-parser/parser": ^0.14.0 - cli-table3: ^0.5.0 - colors: 1.4.0 - ethereum-cryptography: ^1.0.3 - ethers: ^4.0.40 - fs-readdir-recursive: ^1.1.0 - lodash: ^4.17.14 - markdown-table: ^1.1.3 - mocha: ^7.1.1 - req-cwd: ^2.0.0 - request: ^2.88.0 - request-promise-native: ^1.0.5 - sha1: ^1.1.1 - sync-request: ^6.0.0 + "@ethersproject/abi": "npm:^5.0.0-beta.146" + "@solidity-parser/parser": "npm:^0.14.0" + cli-table3: "npm:^0.5.0" + colors: "npm:1.4.0" + ethereum-cryptography: "npm:^1.0.3" + ethers: "npm:^4.0.40" + fs-readdir-recursive: "npm:^1.1.0" + lodash: "npm:^4.17.14" + markdown-table: "npm:^1.1.3" + mocha: "npm:^7.1.1" + req-cwd: "npm:^2.0.0" + request: "npm:^2.88.0" + request-promise-native: "npm:^1.0.5" + sha1: "npm:^1.1.1" + sync-request: "npm:^6.0.0" peerDependencies: "@codechecks/client": ^0.1.0 peerDependenciesMeta: "@codechecks/client": optional: true - checksum: 3bfa81e554b069bb817f2a073a601a0429e6b582c56ad99db0727dc2a102ab00fc27888820b8a042a194a8fb7d40954d10cd7b011ede6b8170285d2d5a88666c + checksum: 10/96c85f6bb684f79a6099383ba927bcc2756360dcb2e5635cf5dd2d97029e7620ab4349c7b5f3171b5da212ce747ec017552cb98676e6fd8511cceae1e1a8856e languageName: node linkType: hard @@ -6091,10 +6091,10 @@ __metadata: version: 0.2.8 resolution: "eth-lib@npm:0.2.8" dependencies: - bn.js: ^4.11.6 - elliptic: ^6.4.0 - xhr-request-promise: ^0.1.2 - checksum: be7efb0b08a78e20d12d2892363ecbbc557a367573ac82fc26a549a77a1b13c7747e6eadbb88026634828fcf9278884b555035787b575b1cab5e6958faad0fad + bn.js: "npm:^4.11.6" + elliptic: "npm:^6.4.0" + xhr-request-promise: "npm:^0.1.2" + checksum: 10/85a6f1673c7106252864fdf6c86973d6bfdf454b238ee8d07d8f642599fa9f390129b6fbd060742a5be7c197be924951535a0c0ebb3e912cfd9f2130b64f74ce languageName: node linkType: hard @@ -6102,13 +6102,13 @@ __metadata: version: 0.1.29 resolution: "eth-lib@npm:0.1.29" dependencies: - bn.js: ^4.11.6 - elliptic: ^6.4.0 - nano-json-stream-parser: ^0.1.2 - servify: ^0.1.12 - ws: ^3.0.0 - xhr-request-promise: ^0.1.2 - checksum: d1494fc0af372d46d1c9e7506cfbfa81b9073d98081cf4cbe518932f88bee40cf46a764590f1f8aba03d4a534fa2b1cd794fa2a4f235f656d82b8ab185b5cb9d + bn.js: "npm:^4.11.6" + elliptic: "npm:^6.4.0" + nano-json-stream-parser: "npm:^0.1.2" + servify: "npm:^0.1.12" + ws: "npm:^3.0.0" + xhr-request-promise: "npm:^0.1.2" + checksum: 10/ee4fcd8400fad0b637c25bd0a4483a54c986b78ac6c4d7fd2a5df12b41468abfa50a66684e315e16894b870d2fcf5d2273a81f429f89c460b275bf4477365f60 languageName: node linkType: hard @@ -6116,8 +6116,8 @@ __metadata: version: 1.0.10 resolution: "ethereum-bloom-filters@npm:1.0.10" dependencies: - js-sha3: ^0.8.0 - checksum: 4019cc6f9274ae271a52959194a72f6e9b013366f168f922dc3b349319faf7426bf1010125ee0676b4f75714fe4a440edd4e7e62342c121a046409f4cd4c0af9 + js-sha3: "npm:^0.8.0" + checksum: 10/dc4191c5d810db864ace106886f340b541bf03f1ad3249459ac630cab9c191f1e45c03e935887cca903cca884326e3ac97acfef0a083c7e1a004108f5991f9ba languageName: node linkType: hard @@ -6125,22 +6125,22 @@ __metadata: version: 0.1.3 resolution: "ethereum-cryptography@npm:0.1.3" dependencies: - "@types/pbkdf2": ^3.0.0 - "@types/secp256k1": ^4.0.1 - blakejs: ^1.1.0 - browserify-aes: ^1.2.0 - bs58check: ^2.1.2 - create-hash: ^1.2.0 - create-hmac: ^1.1.7 - hash.js: ^1.1.7 - keccak: ^3.0.0 - pbkdf2: ^3.0.17 - randombytes: ^2.1.0 - safe-buffer: ^5.1.2 - scrypt-js: ^3.0.0 - secp256k1: ^4.0.1 - setimmediate: ^1.0.5 - checksum: 54bae7a4a96bd81398cdc35c91cfcc74339f71a95ed1b5b694663782e69e8e3afd21357de3b8bac9ff4877fd6f043601e200a7ad9133d94be6fd7d898ee0a449 + "@types/pbkdf2": "npm:^3.0.0" + "@types/secp256k1": "npm:^4.0.1" + blakejs: "npm:^1.1.0" + browserify-aes: "npm:^1.2.0" + bs58check: "npm:^2.1.2" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + hash.js: "npm:^1.1.7" + keccak: "npm:^3.0.0" + pbkdf2: "npm:^3.0.17" + randombytes: "npm:^2.1.0" + safe-buffer: "npm:^5.1.2" + scrypt-js: "npm:^3.0.0" + secp256k1: "npm:^4.0.1" + setimmediate: "npm:^1.0.5" + checksum: 10/975e476782746acd97d5b37366801ae622a52fb31e5d83f600804be230a61ef7b9d289dcecd9c308fb441967caf3a6e3768dd7c8add6441fcc60c398175d5a96 languageName: node linkType: hard @@ -6148,11 +6148,11 @@ __metadata: version: 1.2.0 resolution: "ethereum-cryptography@npm:1.2.0" dependencies: - "@noble/hashes": 1.2.0 - "@noble/secp256k1": 1.7.1 - "@scure/bip32": 1.1.5 - "@scure/bip39": 1.1.1 - checksum: 97e8e8253cb9f5a9271bd0201c37609c451c890eb85883b9c564f14743c3d7c673287406c93bf5604307593ee298ad9a03983388b85c11ca61461b9fc1a4f2c7 + "@noble/hashes": "npm:1.2.0" + "@noble/secp256k1": "npm:1.7.1" + "@scure/bip32": "npm:1.1.5" + "@scure/bip39": "npm:1.1.1" + checksum: 10/e8b2ab91e0237ed83a6e6ab1aa2a61ee081dea137ac994c7daa935b0b620e866f70e2ac7eb2fb8db2dec044fe22283d2bf940598417e4dccd15a2b704a817a1b languageName: node linkType: hard @@ -6160,17 +6160,17 @@ __metadata: version: 4.0.10 resolution: "ethereum-waffle@npm:4.0.10" dependencies: - "@ethereum-waffle/chai": 4.0.10 - "@ethereum-waffle/compiler": 4.0.3 - "@ethereum-waffle/mock-contract": 4.0.4 - "@ethereum-waffle/provider": 4.0.5 - solc: 0.8.15 - typechain: ^8.0.0 + "@ethereum-waffle/chai": "npm:4.0.10" + "@ethereum-waffle/compiler": "npm:4.0.3" + "@ethereum-waffle/mock-contract": "npm:4.0.4" + "@ethereum-waffle/provider": "npm:4.0.5" + solc: "npm:0.8.15" + typechain: "npm:^8.0.0" peerDependencies: ethers: "*" bin: waffle: bin/waffle - checksum: 680df4f5cf61f2f64b740d7724323e0872b1b1462e7ee2f1de6a1c9732155b28c4ac25c669ba557f72e1bb20204f81696a1fd543aece03654d71a9d9ebe1fc53 + checksum: 10/07519d520ebb0f7cd4d9e37ad3dc38ea328c611e4e8a657263033efd36212ec02649d49f6f79831fda9414feaac3212f4e8130fc9e54e6bba230af9aa42958a8 languageName: node linkType: hard @@ -6178,9 +6178,9 @@ __metadata: version: 0.6.8 resolution: "ethereumjs-abi@npm:0.6.8" dependencies: - bn.js: ^4.11.8 - ethereumjs-util: ^6.0.0 - checksum: cede2a8ae7c7e04eeaec079c2f925601a25b2ef75cf9230e7c5da63b4ea27883b35447365a47e35c1e831af520973a2252af89022c292c18a09a4607821a366b + bn.js: "npm:^4.11.8" + ethereumjs-util: "npm:^6.0.0" + checksum: 10/d4633ca30048b53c0f900ba5d7d6013ca228822055fbd93f975befc41f5c3054e0fffc27562d78050f164170e546af66c20e9ca1d35e67ea861df07d59a65a91 languageName: node linkType: hard @@ -6188,12 +6188,12 @@ __metadata: version: 7.1.3 resolution: "ethereumjs-util@npm:7.1.3" dependencies: - "@types/bn.js": ^5.1.0 - bn.js: ^5.1.2 - create-hash: ^1.1.2 - ethereum-cryptography: ^0.1.3 - rlp: ^2.2.4 - checksum: 6de7a32af05c7265c96163ecd15ad97327afab9deb36092ef26250616657a8c0b5df8e698328247c8193e7b87c643c967f64f0b3cff2b2937cafa870ff5fcb41 + "@types/bn.js": "npm:^5.1.0" + bn.js: "npm:^5.1.2" + create-hash: "npm:^1.1.2" + ethereum-cryptography: "npm:^0.1.3" + rlp: "npm:^2.2.4" + checksum: 10/bb35a9b701ebdd076cf95db76c538c8d15977017c67a14d3a5ae205498d770f0d53ff01651a05abaa5ed9e5373a09447dcf3a0c825b11ac741a0a0c44c9cad7a languageName: node linkType: hard @@ -6201,14 +6201,14 @@ __metadata: version: 6.2.1 resolution: "ethereumjs-util@npm:6.2.1" dependencies: - "@types/bn.js": ^4.11.3 - bn.js: ^4.11.0 - create-hash: ^1.1.2 - elliptic: ^6.5.2 - ethereum-cryptography: ^0.1.3 - ethjs-util: 0.1.6 - rlp: ^2.2.3 - checksum: e3cb4a2c034a2529281fdfc21a2126fe032fdc3038863f5720352daa65ddcc50fc8c67dbedf381a882dc3802e05d979287126d7ecf781504bde1fd8218693bde + "@types/bn.js": "npm:^4.11.3" + bn.js: "npm:^4.11.0" + create-hash: "npm:^1.1.2" + elliptic: "npm:^6.5.2" + ethereum-cryptography: "npm:^0.1.3" + ethjs-util: "npm:0.1.6" + rlp: "npm:^2.2.3" + checksum: 10/dedc8a623e21d1864b09c47f28851fc0fca6233cdefa4755a308507822ce75c893bbb2c3ba422109d1247986ec757941718f06574437e41b0d68604108b03fd0 languageName: node linkType: hard @@ -6216,12 +6216,12 @@ __metadata: version: 7.1.5 resolution: "ethereumjs-util@npm:7.1.5" dependencies: - "@types/bn.js": ^5.1.0 - bn.js: ^5.1.2 - create-hash: ^1.1.2 - ethereum-cryptography: ^0.1.3 - rlp: ^2.2.4 - checksum: 27a3c79d6e06b2df34b80d478ce465b371c8458b58f5afc14d91c8564c13363ad336e6e83f57eb0bd719fde94d10ee5697ceef78b5aa932087150c5287b286d1 + "@types/bn.js": "npm:^5.1.0" + bn.js: "npm:^5.1.2" + create-hash: "npm:^1.1.2" + ethereum-cryptography: "npm:^0.1.3" + rlp: "npm:^2.2.4" + checksum: 10/f28fc1ebb8f35bf9e418f76f51be737d94d603b912c3e014c4e87cd45ccd1b10bdfef764c8f152574b57e9faa260a18773cbc110f9e0a754d6b3730699e54dc9 languageName: node linkType: hard @@ -6229,16 +6229,16 @@ __metadata: version: 4.0.49 resolution: "ethers@npm:4.0.49" dependencies: - aes-js: 3.0.0 - bn.js: ^4.11.9 - elliptic: 6.5.4 - hash.js: 1.1.3 - js-sha3: 0.5.7 - scrypt-js: 2.0.4 - setimmediate: 1.0.4 - uuid: 2.0.1 - xmlhttprequest: 1.8.0 - checksum: 357115348a5f1484c7745fae1d852876788216c7d94c072c80132192f1800c4d388433ea2456750856641d6d4eed8a3b41847eb44f5e1c42139963864e3bcc38 + aes-js: "npm:3.0.0" + bn.js: "npm:^4.11.9" + elliptic: "npm:6.5.4" + hash.js: "npm:1.1.3" + js-sha3: "npm:0.5.7" + scrypt-js: "npm:2.0.4" + setimmediate: "npm:1.0.4" + uuid: "npm:2.0.1" + xmlhttprequest: "npm:1.8.0" + checksum: 10/a4cec0254f940a0fb118317d23676faa46eb5540fc0a3b9177b8aef71318f509ed19b8264f102b1a2a32d0256274ecc526fd926bd22a4a4ac25cd8e0e6560f12 languageName: node linkType: hard @@ -6246,37 +6246,37 @@ __metadata: version: 5.7.2 resolution: "ethers@npm:5.7.2" dependencies: - "@ethersproject/abi": 5.7.0 - "@ethersproject/abstract-provider": 5.7.0 - "@ethersproject/abstract-signer": 5.7.0 - "@ethersproject/address": 5.7.0 - "@ethersproject/base64": 5.7.0 - "@ethersproject/basex": 5.7.0 - "@ethersproject/bignumber": 5.7.0 - "@ethersproject/bytes": 5.7.0 - "@ethersproject/constants": 5.7.0 - "@ethersproject/contracts": 5.7.0 - "@ethersproject/hash": 5.7.0 - "@ethersproject/hdnode": 5.7.0 - "@ethersproject/json-wallets": 5.7.0 - "@ethersproject/keccak256": 5.7.0 - "@ethersproject/logger": 5.7.0 - "@ethersproject/networks": 5.7.1 - "@ethersproject/pbkdf2": 5.7.0 - "@ethersproject/properties": 5.7.0 - "@ethersproject/providers": 5.7.2 - "@ethersproject/random": 5.7.0 - "@ethersproject/rlp": 5.7.0 - "@ethersproject/sha2": 5.7.0 - "@ethersproject/signing-key": 5.7.0 - "@ethersproject/solidity": 5.7.0 - "@ethersproject/strings": 5.7.0 - "@ethersproject/transactions": 5.7.0 - "@ethersproject/units": 5.7.0 - "@ethersproject/wallet": 5.7.0 - "@ethersproject/web": 5.7.1 - "@ethersproject/wordlists": 5.7.0 - checksum: b7c08cf3e257185a7946117dbbf764433b7ba0e77c27298dec6088b3bc871aff711462b0621930c56880ff0a7ceb8b1d3a361ffa259f93377b48e34107f62553 + "@ethersproject/abi": "npm:5.7.0" + "@ethersproject/abstract-provider": "npm:5.7.0" + "@ethersproject/abstract-signer": "npm:5.7.0" + "@ethersproject/address": "npm:5.7.0" + "@ethersproject/base64": "npm:5.7.0" + "@ethersproject/basex": "npm:5.7.0" + "@ethersproject/bignumber": "npm:5.7.0" + "@ethersproject/bytes": "npm:5.7.0" + "@ethersproject/constants": "npm:5.7.0" + "@ethersproject/contracts": "npm:5.7.0" + "@ethersproject/hash": "npm:5.7.0" + "@ethersproject/hdnode": "npm:5.7.0" + "@ethersproject/json-wallets": "npm:5.7.0" + "@ethersproject/keccak256": "npm:5.7.0" + "@ethersproject/logger": "npm:5.7.0" + "@ethersproject/networks": "npm:5.7.1" + "@ethersproject/pbkdf2": "npm:5.7.0" + "@ethersproject/properties": "npm:5.7.0" + "@ethersproject/providers": "npm:5.7.2" + "@ethersproject/random": "npm:5.7.0" + "@ethersproject/rlp": "npm:5.7.0" + "@ethersproject/sha2": "npm:5.7.0" + "@ethersproject/signing-key": "npm:5.7.0" + "@ethersproject/solidity": "npm:5.7.0" + "@ethersproject/strings": "npm:5.7.0" + "@ethersproject/transactions": "npm:5.7.0" + "@ethersproject/units": "npm:5.7.0" + "@ethersproject/wallet": "npm:5.7.0" + "@ethersproject/web": "npm:5.7.1" + "@ethersproject/wordlists": "npm:5.7.0" + checksum: 10/227dfa88a2547c799c0c3c9e92e5e246dd11342f4b495198b3ae7c942d5bf81d3970fcef3fbac974a9125d62939b2d94f3c0458464e702209b839a8e6e615028 languageName: node linkType: hard @@ -6284,9 +6284,9 @@ __metadata: version: 0.1.6 resolution: "ethjs-unit@npm:0.1.6" dependencies: - bn.js: 4.11.6 - number-to-bn: 1.7.0 - checksum: df6b4752ff7461a59a20219f4b1684c631ea601241c39660e3f6c6bd63c950189723841c22b3c6c0ebeb3c9fc99e0e803e3c613101206132603705fcbcf4def5 + bn.js: "npm:4.11.6" + number-to-bn: "npm:1.7.0" + checksum: 10/35086cb671806992ec36d5dd43ab67e68ad7a9237e42c0e963f9081c88e40147cda86c1a258b0a3180bf2b7bc1960e607c5bcaefdb2196e0f3564acf73276189 languageName: node linkType: hard @@ -6294,23 +6294,23 @@ __metadata: version: 0.1.6 resolution: "ethjs-util@npm:0.1.6" dependencies: - is-hex-prefixed: 1.0.0 - strip-hex-prefix: 1.0.0 - checksum: 1f42959e78ec6f49889c49c8a98639e06f52a15966387dd39faf2930db48663d026efb7db2702dcffe7f2a99c4a0144b7ce784efdbf733f4077aae95de76d65f + is-hex-prefixed: "npm:1.0.0" + strip-hex-prefix: "npm:1.0.0" + checksum: 10/02e1d37f743a78742651a11be35461dfe8ed653f113d630435aada8036e1e199691c2cfffbbf1e800bfdeb14bb34c7ed69fab5d3c727058c1daf3effc6bf6f69 languageName: node linkType: hard "event-target-shim@npm:^5.0.0": version: 5.0.1 resolution: "event-target-shim@npm:5.0.1" - checksum: 1ffe3bb22a6d51bdeb6bf6f7cf97d2ff4a74b017ad12284cc9e6a279e727dc30a5de6bb613e5596ff4dc3e517841339ad09a7eec44266eccb1aa201a30448166 + checksum: 10/49ff46c3a7facbad3decb31f597063e761785d7fdb3920d4989d7b08c97a61c2f51183e2f3a03130c9088df88d4b489b1b79ab632219901f184f85158508f4c8 languageName: node linkType: hard "eventemitter3@npm:4.0.4": version: 4.0.4 resolution: "eventemitter3@npm:4.0.4" - checksum: 7afb1cd851d19898bc99cc55ca894fe18cb1f8a07b0758652830a09bd6f36082879a25345be6219b81d74764140688b1a8fa75bcd1073d96b9a6661e444bc2ea + checksum: 10/6a85beb36d7ff2363de71aa19a17c24ecde7a92f706347891befc5901793e41ac847ce9c04c96dc0f5095384890cc737e64f21ed334e75c523d2352056fc6a9e languageName: node linkType: hard @@ -6318,10 +6318,10 @@ __metadata: version: 1.0.3 resolution: "evp_bytestokey@npm:1.0.3" dependencies: - md5.js: ^1.3.4 - node-gyp: latest - safe-buffer: ^5.1.1 - checksum: ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa45 + md5.js: "npm:^1.3.4" + node-gyp: "npm:latest" + safe-buffer: "npm:^5.1.1" + checksum: 10/ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa45 languageName: node linkType: hard @@ -6329,23 +6329,23 @@ __metadata: version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: - cross-spawn: ^7.0.3 - get-stream: ^6.0.0 - human-signals: ^2.1.0 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.1 - onetime: ^5.1.2 - signal-exit: ^3.0.3 - strip-final-newline: ^2.0.0 - checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10/8ada91f2d70f7dff702c861c2c64f21dfdc1525628f3c0454fd6f02fce65f7b958616cbd2b99ca7fa4d474e461a3d363824e91b3eb881705231abbf387470597 languageName: node linkType: hard "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" - checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 + checksum: 10/387555050c5b3c10e7a9e8df5f43194e95d7737c74532c409910e585d5554eaff34960c166643f5e23d042196529daad059c292dcf1fb61b8ca878d3677f4b87 languageName: node linkType: hard @@ -6353,19 +6353,19 @@ __metadata: version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: - "@jest/expect-utils": ^29.7.0 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10/63f97bc51f56a491950fb525f9ad94f1916e8a014947f8d8445d3847a665b5471b768522d659f5e865db20b6c2033d2ac10f35fcbd881a4d26407a4f6f18451a languageName: node linkType: hard "express-partials@npm:0.3.0": version: 0.3.0 resolution: "express-partials@npm:0.3.0" - checksum: 606e01f114eab06fe1572eac0aa544b108514e6cea7b4e5210e0f39c33e21d8f9a630716859060e830acedcf6cc5cac5083ce2df7745039cdf7ed25c146db2fd + checksum: 10/1b3486c869464e918a3152ee8ff7aaffb8272b2c7b6aeafae28be63f42fc525a0e3c18ccc8801495e472ce5a19c4569414794bf0cfe351f6276ec018648bf259 languageName: node linkType: hard @@ -6373,38 +6373,38 @@ __metadata: version: 4.18.1 resolution: "express@npm:4.18.1" dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.0 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: 2.4.1 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.7 - qs: 6.10.3 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: c3d44c92e48226ef32ec978becfedb0ecf0ca21316bfd33674b3c5d20459840584f2325726a4f17f33d9c99f769636f728982d1c5433a5b6fe6eb95b8cf0c854 + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:1.20.0" + content-disposition: "npm:0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:0.5.0" + cookie-signature: "npm:1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:1.2.0" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + merge-descriptors: "npm:1.0.1" + methods: "npm:~1.1.2" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:0.1.7" + proxy-addr: "npm:~2.0.7" + qs: "npm:6.10.3" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:0.18.0" + serve-static: "npm:1.15.0" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10/7cfc95b09419c05aa565f841511853801d20c8b9a44863fbad797c325b329e4341e58fd0464489df014b8881579ae95625785c172d27e67f474a7fdb3aaf3923 languageName: node linkType: hard @@ -6412,38 +6412,38 @@ __metadata: version: 4.18.2 resolution: "express@npm:4.18.2" dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: 2.4.1 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.7 - qs: 6.11.0 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037 + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:1.20.1" + content-disposition: "npm:0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:0.5.0" + cookie-signature: "npm:1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:1.2.0" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + merge-descriptors: "npm:1.0.1" + methods: "npm:~1.1.2" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:0.1.7" + proxy-addr: "npm:~2.0.7" + qs: "npm:6.11.0" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:0.18.0" + serve-static: "npm:1.15.0" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10/869ae89ed6ff4bed7b373079dc58e5dddcf2915a2669b36037ff78c99d675ae930e5fe052b35c24f56557d28a023bb1cbe3e2f2fb87eaab96a1cedd7e597809d languageName: node linkType: hard @@ -6451,29 +6451,29 @@ __metadata: version: 1.7.0 resolution: "ext@npm:1.7.0" dependencies: - type: ^2.7.2 - checksum: ef481f9ef45434d8c867cfd09d0393b60945b7c8a1798bedc4514cb35aac342ccb8d8ecb66a513e6a2b4ec1e294a338e3124c49b29736f8e7c735721af352c31 + type: "npm:^2.7.2" + checksum: 10/666a135980b002df0e75c8ac6c389140cdc59ac953db62770479ee2856d58ce69d2f845e5f2586716350b725400f6945e51e9159573158c39f369984c72dcd84 languageName: node linkType: hard "extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 + checksum: 10/59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e languageName: node linkType: hard "extsprintf@npm:1.3.0": version: 1.3.0 resolution: "extsprintf@npm:1.3.0" - checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 + checksum: 10/26967d6c7ecbfb5bc5b7a6c43503dc5fafd9454802037e9fa1665e41f615da4ff5918bd6cb871a3beabed01a31eca1ccd0bdfb41231f50ad50d405a430f78377 languageName: node linkType: hard "extsprintf@npm:^1.2.0": version: 1.4.1 resolution: "extsprintf@npm:1.4.1" - checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 + checksum: 10/bfd6d55f3c0c04d826fe0213264b383c03f32825af6b1ff777f3f2dc49467e599361993568d75b7b19a8ea1bb08c8e7cd8c3d87d179ced91bb0dcf81ca6938e0 languageName: node linkType: hard @@ -6481,43 +6481,43 @@ __metadata: version: 3.13.0 resolution: "fast-check@npm:3.13.0" dependencies: - pure-rand: ^6.0.0 - checksum: 5bbc41214c8dea95b5e31d67605586c60ba863f3b1c37b447c4f6637c20df4ce0b8fa286a51558fff439625f865be90a2cc07e909545b47f5638efb9e57f8f85 + pure-rand: "npm:^6.0.0" + checksum: 10/85dee5e5540043fcf05928f9e194a3d4cf9a055bf5e21af8385fb86c2c256b0acdf21e4e0dff86e347fad5e3874514a6a4fe1d18baac713069071d45e3330782 languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d languageName: node linkType: hard "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb + checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e languageName: node linkType: hard "fastfile@npm:0.0.18": version: 0.0.18 resolution: "fastfile@npm:0.0.18" - checksum: 3275de4892c45bafc6ab6e32bbdf85d7a9bca4750d5664720a873c96085dc56cfc030c2c320c5afcf3ee23eee73f3e77ca3093653ea4484a7849d4437b3ac968 + checksum: 10/5fa92f56b7a414720e8ec909ff9aa6372f27d1d645010fd662f69c2c472674504cda0092eeb5b741a7fc50d9f6954d508a0bfb155e1728a37086943e79b522d6 languageName: node linkType: hard "fastfile@npm:0.0.19": version: 0.0.19 resolution: "fastfile@npm:0.0.19" - checksum: 6179bdd7c21be9882294dae66103795c099594098b51958bcf08a4545c91387321b43511730d0542a5a9ed8c5ec9069c065e065fd67255453ac900a23895dac1 + checksum: 10/503dee89674474a295347bca317a858741c2635e69a5232bf1976aff857845bc2ec298d2abdc9418ee85b6bfb195247f9bb1931084beadfc5405282fb1655895 languageName: node linkType: hard "fastfile@npm:0.0.20": version: 0.0.20 resolution: "fastfile@npm:0.0.20" - checksum: e5d6e5f57a9b58c9534202e477cbffbca2182c407171950695ddb5c3e6b89554bc8561fbb6e370c99e371a8f23486a23fbaca527827886cec4897d481cbd03b6 + checksum: 10/0c051c22d6d831118dfbf9fbc1277a2e9b14164db68985f7403aa6b3e7a89c4b614d71d6f6d53e141313fa5554c32dacbc9c2a17c43dc3d21fc0dd500a2f132a languageName: node linkType: hard @@ -6525,15 +6525,15 @@ __metadata: version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" dependencies: - bser: 2.1.1 - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 + bser: "npm:2.1.1" + checksum: 10/4f95d336fb805786759e383fd7fff342ceb7680f53efcc0ef82f502eb479ce35b98e8b207b6dfdfeea0eba845862107dc73813775fc6b56b3098c6e90a2dad77 languageName: node linkType: hard "fecha@npm:^4.2.0": version: 4.2.3 resolution: "fecha@npm:4.2.3" - checksum: f94e2fb3acf5a7754165d04549460d3ae6c34830394d20c552197e3e000035d69732d74af04b9bed3283bf29fe2a9ebdcc0085e640b0be3cc3658b9726265e31 + checksum: 10/534ce630c8f63c116292145607fc18c0f06bfa2fd74094357bf65daacc5d3f4f2b285bf8eb112c3bbf98c5caa6d386cced797f44b9b1b33da0c0a81020444826 languageName: node linkType: hard @@ -6541,12 +6541,12 @@ __metadata: version: 0.1.4 resolution: "ffiasm@npm:0.1.4" dependencies: - big-integer: ^1.6.48 - ejs: ^3.0.1 - yargs: ^15.3.1 + big-integer: "npm:^1.6.48" + ejs: "npm:^3.0.1" + yargs: "npm:^15.3.1" bin: buildzqfield: src/buildzqfield.js - checksum: 59949612d993c80e63074afd9ae751911d607046d29473f4d8a83bc74fa028d00721d927cdb27cbe78da3e59a3fda075e77b644b3ed4342b65bc26ec6d2a6777 + checksum: 10/d5fea8ad30c5ac1496bf7767f93139865512bcddbf574525507319470ebcb34bd4dfc3602d089d516a8bcba7e98b9c7ea1e8c553dff3e577d22a78ca197877c0 languageName: node linkType: hard @@ -6554,10 +6554,10 @@ __metadata: version: 0.2.57 resolution: "ffjavascript@npm:0.2.57" dependencies: - wasmbuilder: 0.0.16 - wasmcurves: 0.2.0 - web-worker: ^1.2.0 - checksum: 8f3e87b3e2739c607dfc2ef8cb36d92202da57b1323987cca09ade378c584a946b9d784607ee5e2193a2de6200afdc254c19f72f79145aa55d9a8688f83f6708 + wasmbuilder: "npm:0.0.16" + wasmcurves: "npm:0.2.0" + web-worker: "npm:^1.2.0" + checksum: 10/a31ea77fd72893fa8571dcfca55b9a79b134de901b24a46f4b2af35e8950446187193dfa4baa0f7bc7b69a626cd9a62b47b5d8b507dd534c087a8e9aa695a174 languageName: node linkType: hard @@ -6565,8 +6565,8 @@ __metadata: version: 1.0.4 resolution: "filelist@npm:1.0.4" dependencies: - minimatch: ^5.0.1 - checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 + minimatch: "npm:^5.0.1" + checksum: 10/4b436fa944b1508b95cffdfc8176ae6947b92825483639ef1b9a89b27d82f3f8aa22b21eed471993f92709b431670d4e015b39c087d435a61e1bb04564cf51de languageName: node linkType: hard @@ -6574,8 +6574,8 @@ __metadata: version: 7.0.1 resolution: "fill-range@npm:7.0.1" dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + to-regex-range: "npm:^5.0.1" + checksum: 10/e260f7592fd196b4421504d3597cc76f4a1ca7a9488260d533b611fc3cefd61e9a9be1417cb82d3b01ad9f9c0ff2dbf258e1026d2445e26b0cf5148ff4250429 languageName: node linkType: hard @@ -6583,14 +6583,14 @@ __metadata: version: 1.2.0 resolution: "finalhandler@npm:1.2.0" dependencies: - debug: 2.6.9 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - on-finished: 2.4.1 - parseurl: ~1.3.3 - statuses: 2.0.1 - unpipe: ~1.0.0 - checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 + debug: "npm:2.6.9" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + statuses: "npm:2.0.1" + unpipe: "npm:~1.0.0" + checksum: 10/635718cb203c6d18e6b48dfbb6c54ccb08ea470e4f474ddcef38c47edcf3227feec316f886dd701235997d8af35240cae49856721ce18f539ad038665ebbf163 languageName: node linkType: hard @@ -6598,8 +6598,8 @@ __metadata: version: 3.0.0 resolution: "find-replace@npm:3.0.0" dependencies: - array-back: ^3.0.1 - checksum: 6b04bcfd79027f5b84aa1dfe100e3295da989bdac4b4de6b277f4d063e78f5c9e92ebc8a1fec6dd3b448c924ba404ee051cc759e14a3ee3e825fa1361025df08 + array-back: "npm:^3.0.1" + checksum: 10/6b04bcfd79027f5b84aa1dfe100e3295da989bdac4b4de6b277f4d063e78f5c9e92ebc8a1fec6dd3b448c924ba404ee051cc759e14a3ee3e825fa1361025df08 languageName: node linkType: hard @@ -6607,8 +6607,8 @@ __metadata: version: 3.0.0 resolution: "find-up@npm:3.0.0" dependencies: - locate-path: ^3.0.0 - checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 + locate-path: "npm:^3.0.0" + checksum: 10/38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 languageName: node linkType: hard @@ -6616,9 +6616,9 @@ __metadata: version: 5.0.0 resolution: "find-up@npm:5.0.0" dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10/07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 languageName: node linkType: hard @@ -6626,8 +6626,8 @@ __metadata: version: 2.1.0 resolution: "find-up@npm:2.1.0" dependencies: - locate-path: ^2.0.0 - checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd + locate-path: "npm:^2.0.0" + checksum: 10/43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd languageName: node linkType: hard @@ -6635,9 +6635,9 @@ __metadata: version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10/4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 languageName: node linkType: hard @@ -6645,10 +6645,10 @@ __metadata: version: 4.1.1 resolution: "flat@npm:4.1.1" dependencies: - is-buffer: ~2.0.3 + is-buffer: "npm:~2.0.3" bin: flat: cli.js - checksum: 398be12185eb0f3c59797c3670a8c35d07020b673363175676afbaf53d6b213660e060488554cf82c25504986e1a6059bdbcc5d562e87ca3e972e8a33148e3ae + checksum: 10/95abffb1fe56c33bc7fd4098e7a9eceb5aaba0db0c1f7f240d0e220037a630ead91de83101ac9714b95756cf178c0164379fa89961c66091abb4febaf9dbd2ff languageName: node linkType: hard @@ -6657,21 +6657,21 @@ __metadata: resolution: "flat@npm:5.0.2" bin: flat: cli.js - checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d + checksum: 10/72479e651c15eab53e25ce04c31bab18cfaac0556505cac19221dbbe85bbb9686bc76e4d397e89e5bf516ce667dcf818f8b07e585568edba55abc2bf1f698fb5 languageName: node linkType: hard "fn.name@npm:1.x.x": version: 1.1.0 resolution: "fn.name@npm:1.1.0" - checksum: e357144f48cfc9a7f52a82bbc6c23df7c8de639fce049cac41d41d62cabb740cdb9f14eddc6485e29c933104455bdd7a69bb14a9012cef9cd4fa252a4d0cf293 + checksum: 10/000198af190ae02f0138ac5fa4310da733224c628e0230c81e3fff7c4e094af7e0e8bb9f4357cabd21db601759d89f3445da744afbae20623cfa41edf3888397 languageName: node linkType: hard "fnv-plus@npm:^1.3.1": version: 1.3.1 resolution: "fnv-plus@npm:1.3.1" - checksum: 4d3de8026d538ffab13dfa38ac0662b045b2ad0f920efa54f1ca65f59ad1a49b4d62482c5fcdc9cce0a18d9852df1db97c618937089d85678ce03f2e76b07e8b + checksum: 10/40d9e772de591eb32c73f86d5980b3fe40deef7ed60864793c1eb0a98099da53ede7cf00d3d2ab133f64fb383519e9009f6eb7413eaed6f4af1ad2fb0791df60 languageName: node linkType: hard @@ -6681,7 +6681,7 @@ __metadata: peerDependenciesMeta: debug: optional: true - checksum: faa66059b66358ba65c234c2f2a37fcec029dc22775f35d9ad6abac56003268baf41e55f9ee645957b32c7d9f62baf1f0b906e68267276f54ec4b4c597c2b190 + checksum: 10/8be0d39919770054812537d376850ccde0b4762b0501c440bd08724971a078123b55f57704f2984e0664fecc0c86adea85add63295804d9dce401cd9604c91d3 languageName: node linkType: hard @@ -6689,22 +6689,22 @@ __metadata: version: 0.3.3 resolution: "for-each@npm:0.3.3" dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + is-callable: "npm:^1.1.3" + checksum: 10/fdac0cde1be35610bd635ae958422e8ce0cc1313e8d32ea6d34cfda7b60850940c1fd07c36456ad76bd9c24aef6ff5e03b02beb58c83af5ef6c968a64eada676 languageName: node linkType: hard "forever-agent@npm:~0.6.1": version: 0.6.1 resolution: "forever-agent@npm:0.6.1" - checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 + checksum: 10/c1e1644d5e074ac063ecbc3fb8582013ef91fff0e3fa41e76db23d2f62bc6d9677aac86db950917deed4fe1fdd772df780cfaa352075f23deec9c015313afb97 languageName: node linkType: hard "form-data-encoder@npm:1.7.1": version: 1.7.1 resolution: "form-data-encoder@npm:1.7.1" - checksum: a2a360d5588a70d323c12a140c3db23a503a38f0a5d141af1efad579dde9f9fff2e49e5f31f378cb4631518c1ab4a826452c92f0d2869e954b6b2d77b05613e1 + checksum: 10/1abc9059d991b105ba4122a36f9b5c17fd0af77ce8fa59a826a5b9ce56d616807e7780963616dd7e7906ec7aa1ba28cfb7c9defd9747ad10484e039a2b946cca languageName: node linkType: hard @@ -6712,10 +6712,10 @@ __metadata: version: 2.5.1 resolution: "form-data@npm:2.5.1" dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 5134ada56cc246b293a1ac7678dba6830000603a3979cf83ff7b2f21f2e3725202237cfb89e32bcb38a1d35727efbd3c3a22e65b42321e8ade8eec01ce755d08 + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.6" + mime-types: "npm:^2.1.12" + checksum: 10/2e2e5e927979ba3623f9b4c4bcc939275fae3f2dea9dafc8db3ca656a3d75476605de2c80f0e6f1487987398e056f0b4c738972d6e1edd83392d5686d0952eed languageName: node linkType: hard @@ -6723,10 +6723,10 @@ __metadata: version: 3.0.1 resolution: "form-data@npm:3.0.1" dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10/944b40ff63b9cb1ca7a97e70f72104c548e0b0263e3e817e49919015a0d687453086259b93005389896dbffd3777cccea2e67c51f4e827590e5979b14ff91bf7 languageName: node linkType: hard @@ -6734,38 +6734,38 @@ __metadata: version: 2.3.3 resolution: "form-data@npm:2.3.3" dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.6" + mime-types: "npm:^2.1.12" + checksum: 10/1b6f3ccbf4540e535887b42218a2431a3f6cfdea320119c2affa2a7a374ad8fdd1e60166fc865181f45d49b1684c3e90e7b2190d3fe016692957afb9cf0d0d02 languageName: node linkType: hard "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" - checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 + checksum: 10/29ba9fd347117144e97cbb8852baae5e8b2acb7d1b591ef85695ed96f5b933b1804a7fac4a15dd09ca7ac7d0cdc104410e8102aae2dd3faa570a797ba07adb81 languageName: node linkType: hard "fp-ts@npm:1.19.3": version: 1.19.3 resolution: "fp-ts@npm:1.19.3" - checksum: eb0d4766ad561e9c5c01bfdd3d0ae589af135556921c733d26cf5289aad9f400110defdd93e6ac1d71f626697bb44d9d95ed2879c53dfd868f7cac3cf5c5553c + checksum: 10/3b3426f9a033b3e1b43f68da1baeb9d25b1a7cfeda0f55d4eadf0a1ab951898edc8b3453e4fec3113c140c98fdbf5fe8ab5232d349376ea7920e280af4e52050 languageName: node linkType: hard "fp-ts@npm:^1.0.0": version: 1.19.5 resolution: "fp-ts@npm:1.19.5" - checksum: 67d2d9c3855d211ca2592b1ef805f98b618157e7681791a776d9d0f7f3e52fcca2122ebf5bc215908c9099fad69756d40e37210cf46cb4075dae1b61efe69e40 + checksum: 10/17aa04bbbba9096ac32efd4f192de6211687cab195c423d4072a904f1346c2d508243880685d6f4bb4be29e5f337a67cfa211645e491491683b6aaff23b5dd4a languageName: node linkType: hard "fresh@npm:0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + checksum: 10/64c88e489b5d08e2f29664eb3c79c705ff9a8eb15d3e597198ef76546d4ade295897a44abb0abd2700e7ef784b2e3cbf1161e4fbf16f59129193fd1030d16da1 languageName: node linkType: hard @@ -6773,12 +6773,12 @@ __metadata: version: 0.30.0 resolution: "fs-extra@npm:0.30.0" dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^2.1.0 - klaw: ^1.0.0 - path-is-absolute: ^1.0.0 - rimraf: ^2.2.8 - checksum: 6edfd65fc813baa27f1603778c0f5ec11f8c5006a20b920437813ee2023eba18aeec8bef1c89b2e6c84f9fc90fdc7c916f4a700466c8c69d22a35d018f2570f0 + graceful-fs: "npm:^4.1.2" + jsonfile: "npm:^2.1.0" + klaw: "npm:^1.0.0" + path-is-absolute: "npm:^1.0.0" + rimraf: "npm:^2.2.8" + checksum: 10/bfdd95f598a36a3f24b02db840c1dc54facba2793dea06355c75a6ed823f92e4033589e287f2b91a02a9980c3fb44099e3f00fce5230f045c87431f69be26084 languageName: node linkType: hard @@ -6786,10 +6786,10 @@ __metadata: version: 4.0.3 resolution: "fs-extra@npm:4.0.3" dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: c5ae3c7043ad7187128e619c0371da01b58694c1ffa02c36fb3f5b459925d9c27c3cb1e095d9df0a34a85ca993d8b8ff6f6ecef868fd5ebb243548afa7fc0936 + graceful-fs: "npm:^4.1.2" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10/c1ab28ac6b19a1e37f9c0fb3a233b7333bd4d12ea2a514b5469ba956f022fa0e2aefa3b351d1117b80ed45495bb779427c8f64727c150bb1599c2ce9ab3b42ac languageName: node linkType: hard @@ -6797,10 +6797,10 @@ __metadata: version: 7.0.1 resolution: "fs-extra@npm:7.0.1" dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf + graceful-fs: "npm:^4.1.2" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10/3fc6e56ba2f07c00d452163f27f21a7076b72ef7da8a50fef004336d59ef4c34deda11d10ecd73fd8fbcf20e4f575f52857293090b3c9f8741d4e0598be30fea languageName: node linkType: hard @@ -6808,8 +6808,8 @@ __metadata: version: 1.2.7 resolution: "fs-minipass@npm:1.2.7" dependencies: - minipass: ^2.6.0 - checksum: 40fd46a2b5dcb74b3a580269f9a0c36f9098c2ebd22cef2e1a004f375b7b665c11f1507ec3f66ee6efab5664109f72d0a74ea19c3370842214c3da5168d6fdd7 + minipass: "npm:^2.6.0" + checksum: 10/6a2d39963eaad748164530ffab49606d0f3462c7867748521af3b7039d13689be533636d50a04e8ba6bd327d4d2e899d0907f8830d1161fe2db467d59cc46dc3 languageName: node linkType: hard @@ -6817,22 +6817,22 @@ __metadata: version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + minipass: "npm:^3.0.0" + checksum: 10/03191781e94bc9a54bd376d3146f90fe8e082627c502185dbf7b9b3032f66b0b142c1115f3b2cc5936575fc1b44845ce903dd4c21bec2a8d69f3bd56f9cee9ec languageName: node linkType: hard "fs-readdir-recursive@npm:^1.1.0": version: 1.1.0 resolution: "fs-readdir-recursive@npm:1.1.0" - checksum: 29d50f3d2128391c7fc9fd051c8b7ea45bcc8aa84daf31ef52b17218e20bfd2bd34d02382742801954cc8d1905832b68227f6b680a666ce525d8b6b75068ad1e + checksum: 10/d5e3fd8456b8e5d57a43f169a9eaf65c70fa82c4a22f1d4361cdba4ea5e61c60c5c2b4ac481ea137a4d43b2b99b3ea2fae95ac2730255c4206d61af645866c3a languageName: node linkType: hard "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + checksum: 10/e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96 languageName: node linkType: hard @@ -6840,8 +6840,8 @@ __metadata: version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + node-gyp: "npm:latest" + checksum: 10/6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256 conditions: os=darwin languageName: node linkType: hard @@ -6850,26 +6850,26 @@ __metadata: version: 2.1.3 resolution: "fsevents@npm:2.1.3" dependencies: - node-gyp: latest - checksum: b5ec0516b44d75b60af5c01ff80a80cd995d175e4640d2a92fbabd02991dd664d76b241b65feef0775c23d531c3c74742c0fbacd6205af812a9c3cef59f04292 + node-gyp: "npm:latest" + checksum: 10/b604991f31d9ec772e278831bbe069eed8b6824b09b707eeb5c792ceb79fafa9db377981acf7555deab8f5818a75e5487d37b366f55e31d6ea62ea0e06fc777b conditions: os=darwin languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" dependencies: - node-gyp: latest + node-gyp: "npm:latest" conditions: os=darwin languageName: node linkType: hard -"fsevents@patch:fsevents@~2.1.1#~builtin": +"fsevents@patch:fsevents@npm%3A~2.1.1#optional!builtin": version: 2.1.3 - resolution: "fsevents@patch:fsevents@npm%3A2.1.3#~builtin::version=2.1.3&hash=18f3a7" + resolution: "fsevents@patch:fsevents@npm%3A2.1.3#optional!builtin::version=2.1.3&hash=31d12a" dependencies: - node-gyp: latest + node-gyp: "npm:latest" conditions: os=darwin languageName: node linkType: hard @@ -6877,7 +6877,7 @@ __metadata: "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a + checksum: 10/d83f2968030678f0b8c3f2183d63dcd969344eb8b55b4eb826a94ccac6de8b87c95bebffda37a6386c74f152284eb02956ff2c496897f35d32bdc2628ac68ac5 languageName: node linkType: hard @@ -6885,25 +6885,25 @@ __metadata: version: 1.1.5 resolution: "function.prototype.name@npm:1.1.5" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.19.0" + functions-have-names: "npm:^1.2.2" + checksum: 10/5d426e5a38ac41747bcfce6191e0ec818ed18678c16cfc36b5d1ca87f56ff98c4ce958ee2c1ea2a18dc3da989844a37b1065311e2d2ae4cf12da8f82418b686b languageName: node linkType: hard "functional-red-black-tree@npm:^1.0.1, functional-red-black-tree@npm:~1.0.1": version: 1.0.1 resolution: "functional-red-black-tree@npm:1.0.1" - checksum: ca6c170f37640e2d94297da8bb4bf27a1d12bea3e00e6a3e007fd7aa32e37e000f5772acf941b4e4f3cf1c95c3752033d0c509af157ad8f526e7f00723b9eb9f + checksum: 10/debe73e92204341d1fa5f89614e44284d3add26dee660722978d8c50829170f87d1c74768f68c251d215ae461c11db7bac13101c77f4146ff051da75466f7a12 languageName: node linkType: hard "functions-have-names@npm:^1.2.2": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 + checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 languageName: node linkType: hard @@ -6911,16 +6911,16 @@ __metadata: version: 7.4.3 resolution: "ganache@npm:7.4.3" dependencies: - "@trufflesuite/bigint-buffer": 1.1.10 - "@types/bn.js": ^5.1.0 - "@types/lru-cache": 5.1.1 - "@types/seedrandom": 3.0.1 - bufferutil: 4.0.5 - emittery: 0.10.0 - keccak: 3.0.2 - leveldown: 6.1.0 - secp256k1: 4.0.3 - utf-8-validate: 5.0.7 + "@trufflesuite/bigint-buffer": "npm:1.1.10" + "@types/bn.js": "npm:^5.1.0" + "@types/lru-cache": "npm:5.1.1" + "@types/seedrandom": "npm:3.0.1" + bufferutil: "npm:4.0.5" + emittery: "npm:0.10.0" + keccak: "npm:3.0.2" + leveldown: "npm:6.1.0" + secp256k1: "npm:4.0.3" + utf-8-validate: "npm:5.0.7" dependenciesMeta: bufferutil: optional: true @@ -6929,7 +6929,7 @@ __metadata: bin: ganache: dist/node/cli.js ganache-cli: dist/node/cli.js - checksum: 170dde8c2ecd88e7f02a92bf582149e6497a2fdfb05abe9ab63a5b7cf33c061d71390f9719ef3d716dad4149299f8a87c71612ab4b40d1c57c55d7a185314630 + checksum: 10/8e6ef0dc0775396cd897b4e1bf9c98065a487b9d8fd5b0ddfda3f26cabf52b709bdc568d2c7d2098096d4a20e52f8848527ef41852c6e8aad0983d8af70a642e languageName: node linkType: hard @@ -6937,16 +6937,16 @@ __metadata: version: 3.0.2 resolution: "gauge@npm:3.0.2" dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.1 - object-assign: ^4.1.1 - signal-exit: ^3.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.2" + console-control-strings: "npm:^1.0.0" + has-unicode: "npm:^2.0.1" + object-assign: "npm:^4.1.1" + signal-exit: "npm:^3.0.0" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.2" + checksum: 10/46df086451672a5fecd58f7ec86da74542c795f8e00153fbef2884286ce0e86653c3eb23be2d0abb0c4a82b9b2a9dec3b09b6a1cf31c28085fa0376599a26589 languageName: node linkType: hard @@ -6954,43 +6954,43 @@ __metadata: version: 4.0.4 resolution: "gauge@npm:4.0.4" dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.3 - console-control-strings: ^1.1.0 - has-unicode: ^2.0.1 - signal-exit: ^3.0.7 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.5 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.3" + console-control-strings: "npm:^1.1.0" + has-unicode: "npm:^2.0.1" + signal-exit: "npm:^3.0.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.5" + checksum: 10/09535dd53b5ced6a34482b1fa9f3929efdeac02f9858569cde73cef3ed95050e0f3d095706c1689614059898924b7a74aa14042f51381a1ccc4ee5c29d2389c4 languageName: node linkType: hard "generic-pool@npm:3.9.0": version: 3.9.0 resolution: "generic-pool@npm:3.9.0" - checksum: 3d89e9b2018d2e3bbf44fec78c76b2b7d56d6a484237aa9daf6ff6eedb14b0899dadd703b5d810219baab2eb28e5128fb18b29e91e602deb2eccac14492d8ca8 + checksum: 10/3c632d30a6a7d47412dc67ddc517992691e0fde819c0cb6b5871bc87d10f61a7c09f12a60dbd77c78ae3e6ca10db41e2eaee28985ce724d9620354a006205ce1 languageName: node linkType: hard "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec + checksum: 10/17d8333460204fbf1f9160d067e1e77f908a5447febb49424b8ab043026049835c9ef3974445c57dbd39161f4d2b04356d7de12b2eecaa27a7a7ea7d871cbedd languageName: node linkType: hard "get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 + checksum: 10/b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 languageName: node linkType: hard "get-func-name@npm:^2.0.0": version: 2.0.0 resolution: "get-func-name@npm:2.0.0" - checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3 + checksum: 10/8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3 languageName: node linkType: hard @@ -6998,24 +6998,24 @@ __metadata: version: 1.2.0 resolution: "get-intrinsic@npm:1.2.0" dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 78fc0487b783f5c58cf2dccafc3ae656ee8d2d8062a8831ce4a95e7057af4587a1d4882246c033aca0a7b4965276f4802b45cc300338d1b77a73d3e3e3f4877d + function-bind: "npm:^1.1.1" + has: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + checksum: 10/f57c5fe67a96adace4f8e80c288728bcd0ccfdc82c9cc53e4a5ef1ec857b5f7ef4b1c289e39649b1df226bace81103630bf7e128c821f82cd603450036e54f97 languageName: node linkType: hard "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" - checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 + checksum: 10/bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 languageName: node linkType: hard "get-port@npm:^3.1.0": version: 3.2.0 resolution: "get-port@npm:3.2.0" - checksum: 31f530326569683ac4b7452eb7573c40e9dbe52aec14d80745c35475261e6389160da153d5b8ae911150b4ce99003472b30c69ba5be0cedeaa7865b95542d168 + checksum: 10/577b6ae47dcac1cb64f9bad28c9aa9e4cd8e8f2166c4224485dcdd1dede64154517a57a0eb55bfb557ad3d48f9a1b400415ed047f04002e936f96ddb247f645d languageName: node linkType: hard @@ -7023,15 +7023,15 @@ __metadata: version: 5.2.0 resolution: "get-stream@npm:5.2.0" dependencies: - pump: ^3.0.0 - checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 + pump: "npm:^3.0.0" + checksum: 10/13a73148dca795e41421013da6e3ebff8ccb7fba4d2f023fd0c6da2c166ec4e789bec9774a73a7b49c08daf2cae552f8a3e914042ac23b5f59dd278cc8f9cbfb languageName: node linkType: hard "get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad + checksum: 10/781266d29725f35c59f1d214aedc92b0ae855800a980800e2923b3fbc4e56b3cb6e462c42e09a1cf1a00c64e056a78fa407cbe06c7c92b7e5cd49b4b85c2a497 languageName: node linkType: hard @@ -7039,9 +7039,9 @@ __metadata: version: 1.0.0 resolution: "get-symbol-description@npm:1.0.0" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.1" + checksum: 10/7e5f298afe0f0872747dce4a949ce490ebc5d6dd6aefbbe5044543711c9b19a4dfaebdbc627aee99e1299d58a435b2fbfa083458c1d58be6dc03a3bada24d359 languageName: node linkType: hard @@ -7049,8 +7049,8 @@ __metadata: version: 0.1.7 resolution: "getpass@npm:0.1.7" dependencies: - assert-plus: ^1.0.0 - checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 + assert-plus: "npm:^1.0.0" + checksum: 10/ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 languageName: node linkType: hard @@ -7058,8 +7058,8 @@ __metadata: version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + is-glob: "npm:^4.0.1" + checksum: 10/32cd106ce8c0d83731966d31517adb766d02c3812de49c30cfe0675c7c0ae6630c11214c54a5ae67aca882cf738d27fd7768f21aa19118b9245950554be07247 languageName: node linkType: hard @@ -7067,13 +7067,13 @@ __metadata: version: 7.1.3 resolution: "glob@npm:7.1.3" dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: d72a834a393948d6c4a5cacc6a29fe5fe190e1cd134e55dfba09aee0be6fe15be343e96d8ec43558ab67ff8af28e4420c7f63a4d4db1c779e515015e9c318616 + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10/2364d488ec74c4603eef6aed7d0b139341342aafe94e0b0de788248a19320633b1ccbc2639472aac90004560b0227353f27b5abedc9a0b2c5536950b227239c8 languageName: node linkType: hard @@ -7081,13 +7081,13 @@ __metadata: version: 7.1.7 resolution: "glob@npm:7.1.7" dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: b61f48973bbdcf5159997b0874a2165db572b368b931135832599875919c237fc05c12984e38fe828e69aa8a921eb0e8a4997266211c517c9cfaae8a93988bb8 + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10/ff5aab0386e9cace92b0550d42085b71013c5ea382982dd7fdded998a559635f61413b8ba6fb7294eef289c83b52f4e64136f888300ac8afc4f3e5623182d6c8 languageName: node linkType: hard @@ -7095,13 +7095,13 @@ __metadata: version: 7.2.0 resolution: "glob@npm:7.2.0" dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10/bc78b6ea0735b6e23d20678aba4ae6a4760e8c9527e3c4683ac25b14e70f55f9531245dcf25959b70cbc4aa3dcce1fc37ab65fd026a4cbd70aa3a44880bd396b languageName: node linkType: hard @@ -7109,13 +7109,13 @@ __metadata: version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b languageName: node linkType: hard @@ -7123,12 +7123,12 @@ __metadata: version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10/9aab1c75eb087c35dbc41d1f742e51d0507aa2b14c910d96fb8287107a10a22f4bbdce26fc0a3da4c69a20f7b26d62f1640b346a4f6e6becfff47f335bb1dc5e languageName: node linkType: hard @@ -7136,16 +7136,16 @@ __metadata: version: 4.4.0 resolution: "global@npm:4.4.0" dependencies: - min-document: ^2.19.0 - process: ^0.11.10 - checksum: 9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f + min-document: "npm:^2.19.0" + process: "npm:^0.11.10" + checksum: 10/9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f languageName: node linkType: hard "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e + checksum: 10/9f054fa38ff8de8fa356502eb9d2dae0c928217b8b5c8de1f09f5c9b6c8a96d8b9bd3afc49acbcd384a98a81fea713c859e1b09e214c60509517bb8fc2bc13c2 languageName: node linkType: hard @@ -7153,8 +7153,8 @@ __metadata: version: 1.0.3 resolution: "globalthis@npm:1.0.3" dependencies: - define-properties: ^1.1.3 - checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 + define-properties: "npm:^1.1.3" + checksum: 10/45ae2f3b40a186600d0368f2a880ae257e8278b4c7704f0417d6024105ad7f7a393661c5c2fa1334669cd485ea44bc883a08fdd4516df2428aec40c99f52aa89 languageName: node linkType: hard @@ -7162,8 +7162,8 @@ __metadata: version: 1.2.2 resolution: "good-listener@npm:1.2.2" dependencies: - delegate: ^3.1.2 - checksum: f39fb82c4e41524f56104cfd2d7aef1a88e72f3f75139115fbdf98cc7d844e0c1b39218b2e83438c6188727bf904ed78c7f0f2feff67b32833bc3af7f0202b33 + delegate: "npm:^3.1.2" + checksum: 10/14a755ad2eeb5ca65b98359438a0bd0ed0ae27304913b1f0866e1424fdff957133644d455d03178fbcb0f83d2cdaae414cc9cbdfebf4bd04a690854cd4a657ee languageName: node linkType: hard @@ -7171,8 +7171,8 @@ __metadata: version: 1.0.1 resolution: "gopd@npm:1.0.1" dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + get-intrinsic: "npm:^1.1.3" + checksum: 10/5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca languageName: node linkType: hard @@ -7180,20 +7180,20 @@ __metadata: version: 12.1.0 resolution: "got@npm:12.1.0" dependencies: - "@sindresorhus/is": ^4.6.0 - "@szmarczak/http-timer": ^5.0.1 - "@types/cacheable-request": ^6.0.2 - "@types/responselike": ^1.0.0 - cacheable-lookup: ^6.0.4 - cacheable-request: ^7.0.2 - decompress-response: ^6.0.0 - form-data-encoder: 1.7.1 - get-stream: ^6.0.1 - http2-wrapper: ^2.1.10 - lowercase-keys: ^3.0.0 - p-cancelable: ^3.0.0 - responselike: ^2.0.0 - checksum: 1cc9af6ca511338a7f1bbb0943999e6ac324ea3c7d826066c02e530b4ac41147b1a4cadad21b28c3938de82185ac99c33d64a3a4560c6e0b0b125191ba6ee619 + "@sindresorhus/is": "npm:^4.6.0" + "@szmarczak/http-timer": "npm:^5.0.1" + "@types/cacheable-request": "npm:^6.0.2" + "@types/responselike": "npm:^1.0.0" + cacheable-lookup: "npm:^6.0.4" + cacheable-request: "npm:^7.0.2" + decompress-response: "npm:^6.0.0" + form-data-encoder: "npm:1.7.1" + get-stream: "npm:^6.0.1" + http2-wrapper: "npm:^2.1.10" + lowercase-keys: "npm:^3.0.0" + p-cancelable: "npm:^3.0.0" + responselike: "npm:^2.0.0" + checksum: 10/d1dab1884b14d1f59d10005ee3834faf6d9b43530c7faf603c176d35dceb2b8e0e2e01b9e0d4fc320409ac1b4d958196ff928dc6df0ddd0a3e7a254aa9edfd45 languageName: node linkType: hard @@ -7201,39 +7201,39 @@ __metadata: version: 11.8.6 resolution: "got@npm:11.8.6" dependencies: - "@sindresorhus/is": ^4.0.0 - "@szmarczak/http-timer": ^4.0.5 - "@types/cacheable-request": ^6.0.1 - "@types/responselike": ^1.0.0 - cacheable-lookup: ^5.0.3 - cacheable-request: ^7.0.2 - decompress-response: ^6.0.0 - http2-wrapper: ^1.0.0-beta.5.2 - lowercase-keys: ^2.0.0 - p-cancelable: ^2.0.0 - responselike: ^2.0.0 - checksum: bbc783578a8d5030c8164ef7f57ce41b5ad7db2ed13371e1944bef157eeca5a7475530e07c0aaa71610d7085474d0d96222c9f4268d41db333a17e39b463f45d + "@sindresorhus/is": "npm:^4.0.0" + "@szmarczak/http-timer": "npm:^4.0.5" + "@types/cacheable-request": "npm:^6.0.1" + "@types/responselike": "npm:^1.0.0" + cacheable-lookup: "npm:^5.0.3" + cacheable-request: "npm:^7.0.2" + decompress-response: "npm:^6.0.0" + http2-wrapper: "npm:^1.0.0-beta.5.2" + lowercase-keys: "npm:^2.0.0" + p-cancelable: "npm:^2.0.0" + responselike: "npm:^2.0.0" + checksum: 10/a30c74029d81bd5fe50dea1a0c970595d792c568e188ff8be254b5bc11e6158d1b014570772d4a30d0a97723e7dd34e7c8cc1a2f23018f60aece3070a7a5c2a5 languageName: node linkType: hard "graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + checksum: 10/0c83c52b62c68a944dcfb9d66b0f9f10f7d6e3d081e8067b9bfdc9e5f3a8896584d576036f82915773189eec1eba599397fc620e75c03c0610fb3d67c6713c1a languageName: node linkType: hard "growl@npm:1.10.5": version: 1.10.5 resolution: "growl@npm:1.10.5" - checksum: 4b86685de6831cebcbb19f93870bea624afee61124b0a20c49017013987cd129e73a8c4baeca295728f41d21265e1f859d25ef36731b142ca59c655fea94bb1a + checksum: 10/1391a9add951964de566adc0aee8b0e2b2321e768c1fdccb7a8e156d6a6cd7ea72782883ba8c2c307baf524e3059519423b72e585eba5e7a5f6e83a1e2359b0d languageName: node linkType: hard "har-schema@npm:^2.0.0": version: 2.0.0 resolution: "har-schema@npm:2.0.0" - checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b + checksum: 10/d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b languageName: node linkType: hard @@ -7241,9 +7241,9 @@ __metadata: version: 5.1.5 resolution: "har-validator@npm:5.1.5" dependencies: - ajv: ^6.12.3 - har-schema: ^2.0.0 - checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 + ajv: "npm:^6.12.3" + har-schema: "npm:^2.0.0" + checksum: 10/b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 languageName: node linkType: hard @@ -7251,12 +7251,12 @@ __metadata: version: 1.0.9 resolution: "hardhat-gas-reporter@npm:1.0.9" dependencies: - array-uniq: 1.0.3 - eth-gas-reporter: ^0.2.25 - sha1: ^1.1.1 + array-uniq: "npm:1.0.3" + eth-gas-reporter: "npm:^0.2.25" + sha1: "npm:^1.1.1" peerDependencies: hardhat: ^2.0.2 - checksum: 77f8f8d085ff3d9d7787f0227e5355e1800f7d6707bc70171e0567bf69706703ae7f6f53dce1be1d409e7e71e3629a434c94b546bdbbc1e4c1af47cd5d0c6776 + checksum: 10/c18af3b6ca9e26480679703453c769c10cc7fe290b6dfdd673010112b22be1bd5872ce74c02b71275cc5e0f99fc3c47fadec912bababe7564393191aab6a3f64 languageName: node linkType: hard @@ -7264,54 +7264,54 @@ __metadata: version: 2.10.2 resolution: "hardhat@npm:2.10.2" dependencies: - "@ethereumjs/block": ^3.6.2 - "@ethereumjs/blockchain": ^5.5.2 - "@ethereumjs/common": ^2.6.4 - "@ethereumjs/tx": ^3.5.1 - "@ethereumjs/vm": ^5.9.0 - "@ethersproject/abi": ^5.1.2 - "@metamask/eth-sig-util": ^4.0.0 - "@sentry/node": ^5.18.1 - "@solidity-parser/parser": ^0.14.2 - "@types/bn.js": ^5.1.0 - "@types/lru-cache": ^5.1.0 - abort-controller: ^3.0.0 - adm-zip: ^0.4.16 - aggregate-error: ^3.0.0 - ansi-escapes: ^4.3.0 - chalk: ^2.4.2 - chokidar: ^3.4.0 - ci-info: ^2.0.0 - debug: ^4.1.1 - enquirer: ^2.3.0 - env-paths: ^2.2.0 - ethereum-cryptography: ^1.0.3 - ethereumjs-abi: ^0.6.8 - ethereumjs-util: ^7.1.4 - find-up: ^2.1.0 - fp-ts: 1.19.3 - fs-extra: ^7.0.1 - glob: 7.2.0 - immutable: ^4.0.0-rc.12 - io-ts: 1.10.4 - lodash: ^4.17.11 - merkle-patricia-tree: ^4.2.4 - mnemonist: ^0.38.0 - mocha: ^10.0.0 - p-map: ^4.0.0 - qs: ^6.7.0 - raw-body: ^2.4.1 - resolve: 1.17.0 - semver: ^6.3.0 - slash: ^3.0.0 - solc: 0.7.3 - source-map-support: ^0.5.13 - stacktrace-parser: ^0.1.10 - true-case-path: ^2.2.1 - tsort: 0.0.1 - undici: ^5.4.0 - uuid: ^8.3.2 - ws: ^7.4.6 + "@ethereumjs/block": "npm:^3.6.2" + "@ethereumjs/blockchain": "npm:^5.5.2" + "@ethereumjs/common": "npm:^2.6.4" + "@ethereumjs/tx": "npm:^3.5.1" + "@ethereumjs/vm": "npm:^5.9.0" + "@ethersproject/abi": "npm:^5.1.2" + "@metamask/eth-sig-util": "npm:^4.0.0" + "@sentry/node": "npm:^5.18.1" + "@solidity-parser/parser": "npm:^0.14.2" + "@types/bn.js": "npm:^5.1.0" + "@types/lru-cache": "npm:^5.1.0" + abort-controller: "npm:^3.0.0" + adm-zip: "npm:^0.4.16" + aggregate-error: "npm:^3.0.0" + ansi-escapes: "npm:^4.3.0" + chalk: "npm:^2.4.2" + chokidar: "npm:^3.4.0" + ci-info: "npm:^2.0.0" + debug: "npm:^4.1.1" + enquirer: "npm:^2.3.0" + env-paths: "npm:^2.2.0" + ethereum-cryptography: "npm:^1.0.3" + ethereumjs-abi: "npm:^0.6.8" + ethereumjs-util: "npm:^7.1.4" + find-up: "npm:^2.1.0" + fp-ts: "npm:1.19.3" + fs-extra: "npm:^7.0.1" + glob: "npm:7.2.0" + immutable: "npm:^4.0.0-rc.12" + io-ts: "npm:1.10.4" + lodash: "npm:^4.17.11" + merkle-patricia-tree: "npm:^4.2.4" + mnemonist: "npm:^0.38.0" + mocha: "npm:^10.0.0" + p-map: "npm:^4.0.0" + qs: "npm:^6.7.0" + raw-body: "npm:^2.4.1" + resolve: "npm:1.17.0" + semver: "npm:^6.3.0" + slash: "npm:^3.0.0" + solc: "npm:0.7.3" + source-map-support: "npm:^0.5.13" + stacktrace-parser: "npm:^0.1.10" + true-case-path: "npm:^2.2.1" + tsort: "npm:0.0.1" + undici: "npm:^5.4.0" + uuid: "npm:^8.3.2" + ws: "npm:^7.4.6" peerDependencies: ts-node: "*" typescript: "*" @@ -7322,7 +7322,7 @@ __metadata: optional: true bin: hardhat: internal/cli/cli.js - checksum: 3034a213d25d2727fc80e4b45a6e82dc0ae01ec7b9fb669ee3650fa8a1ba8d38f29f689440826b8747fb2647882da15efb524d077e18c7e9eb55ebd574b9052a + checksum: 10/e44eab8c129eb9ccb752bc9265b23aac587cc6d602c66528ef3b91b16314a9ecaad73ac7f6c6a82ad91962cb87f3cd7ecd34e2562954e146abfd3e506ad36843 languageName: node linkType: hard @@ -7330,56 +7330,56 @@ __metadata: version: 2.12.7 resolution: "hardhat@npm:2.12.7" dependencies: - "@ethersproject/abi": ^5.1.2 - "@metamask/eth-sig-util": ^4.0.0 - "@nomicfoundation/ethereumjs-block": ^4.0.0 - "@nomicfoundation/ethereumjs-blockchain": ^6.0.0 - "@nomicfoundation/ethereumjs-common": ^3.0.0 - "@nomicfoundation/ethereumjs-evm": ^1.0.0 - "@nomicfoundation/ethereumjs-rlp": ^4.0.0 - "@nomicfoundation/ethereumjs-statemanager": ^1.0.0 - "@nomicfoundation/ethereumjs-trie": ^5.0.0 - "@nomicfoundation/ethereumjs-tx": ^4.0.0 - "@nomicfoundation/ethereumjs-util": ^8.0.0 - "@nomicfoundation/ethereumjs-vm": ^6.0.0 - "@nomicfoundation/solidity-analyzer": ^0.1.0 - "@sentry/node": ^5.18.1 - "@types/bn.js": ^5.1.0 - "@types/lru-cache": ^5.1.0 - abort-controller: ^3.0.0 - adm-zip: ^0.4.16 - aggregate-error: ^3.0.0 - ansi-escapes: ^4.3.0 - chalk: ^2.4.2 - chokidar: ^3.4.0 - ci-info: ^2.0.0 - debug: ^4.1.1 - enquirer: ^2.3.0 - env-paths: ^2.2.0 - ethereum-cryptography: ^1.0.3 - ethereumjs-abi: ^0.6.8 - find-up: ^2.1.0 - fp-ts: 1.19.3 - fs-extra: ^7.0.1 - glob: 7.2.0 - immutable: ^4.0.0-rc.12 - io-ts: 1.10.4 - keccak: ^3.0.2 - lodash: ^4.17.11 - mnemonist: ^0.38.0 - mocha: ^10.0.0 - p-map: ^4.0.0 - qs: ^6.7.0 - raw-body: ^2.4.1 - resolve: 1.17.0 - semver: ^6.3.0 - solc: 0.7.3 - source-map-support: ^0.5.13 - stacktrace-parser: ^0.1.10 - tsort: 0.0.1 - undici: ^5.14.0 - uuid: ^8.3.2 - ws: ^7.4.6 + "@ethersproject/abi": "npm:^5.1.2" + "@metamask/eth-sig-util": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-block": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-blockchain": "npm:^6.0.0" + "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" + "@nomicfoundation/ethereumjs-evm": "npm:^1.0.0" + "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-statemanager": "npm:^1.0.0" + "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" + "@nomicfoundation/ethereumjs-tx": "npm:^4.0.0" + "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + "@nomicfoundation/ethereumjs-vm": "npm:^6.0.0" + "@nomicfoundation/solidity-analyzer": "npm:^0.1.0" + "@sentry/node": "npm:^5.18.1" + "@types/bn.js": "npm:^5.1.0" + "@types/lru-cache": "npm:^5.1.0" + abort-controller: "npm:^3.0.0" + adm-zip: "npm:^0.4.16" + aggregate-error: "npm:^3.0.0" + ansi-escapes: "npm:^4.3.0" + chalk: "npm:^2.4.2" + chokidar: "npm:^3.4.0" + ci-info: "npm:^2.0.0" + debug: "npm:^4.1.1" + enquirer: "npm:^2.3.0" + env-paths: "npm:^2.2.0" + ethereum-cryptography: "npm:^1.0.3" + ethereumjs-abi: "npm:^0.6.8" + find-up: "npm:^2.1.0" + fp-ts: "npm:1.19.3" + fs-extra: "npm:^7.0.1" + glob: "npm:7.2.0" + immutable: "npm:^4.0.0-rc.12" + io-ts: "npm:1.10.4" + keccak: "npm:^3.0.2" + lodash: "npm:^4.17.11" + mnemonist: "npm:^0.38.0" + mocha: "npm:^10.0.0" + p-map: "npm:^4.0.0" + qs: "npm:^6.7.0" + raw-body: "npm:^2.4.1" + resolve: "npm:1.17.0" + semver: "npm:^6.3.0" + solc: "npm:0.7.3" + source-map-support: "npm:^0.5.13" + stacktrace-parser: "npm:^0.1.10" + tsort: "npm:0.0.1" + undici: "npm:^5.14.0" + uuid: "npm:^8.3.2" + ws: "npm:^7.4.6" peerDependencies: ts-node: "*" typescript: "*" @@ -7390,28 +7390,28 @@ __metadata: optional: true bin: hardhat: internal/cli/cli.js - checksum: d1f86c09f3db1cc67a448214ebf67a15fc980304ad892ca90792bba679c887a23d8bc2006daf301f4106d638230229dc1ddbc5ba363b1c6aa6b361064f0d7aec + checksum: 10/0158bacd0cb9de11f7187b27b027382d661325645673a06a5b4eac642a40e4a7e116a34e3ed403c20a93d943f72703ebec6a6dc965b5a1216435595580e4313c languageName: node linkType: hard "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b + checksum: 10/4e0426c900af034d12db14abfece02ce7dbf53f2022d28af1a97913ff4c07adb8799476d57dc44fbca0e07d1dbda2a042c2928b1f33d3f09c15de0640a7fb81b languageName: node linkType: hard "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + checksum: 10/4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + checksum: 10/261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad languageName: node linkType: hard @@ -7419,22 +7419,22 @@ __metadata: version: 1.0.0 resolution: "has-property-descriptors@npm:1.0.0" dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb + get-intrinsic: "npm:^1.1.1" + checksum: 10/a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb languageName: node linkType: hard "has-proto@npm:^1.0.1": version: 1.0.1 resolution: "has-proto@npm:1.0.1" - checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e + checksum: 10/eab2ab0ed1eae6d058b9bbc4c1d99d2751b29717be80d02fd03ead8b62675488de0c7359bc1fdd4b87ef6fd11e796a9631ad4d7452d9324fdada70158c2e5be7 languageName: node linkType: hard "has-symbols@npm:^1.0.0, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b languageName: node linkType: hard @@ -7442,15 +7442,15 @@ __metadata: version: 1.0.0 resolution: "has-tostringtag@npm:1.0.0" dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c + has-symbols: "npm:^1.0.2" + checksum: 10/95546e7132efc895a9ae64a8a7cf52588601fc3d52e0304ed228f336992cdf0baaba6f3519d2655e560467db35a1ed79f6420c286cc91a13aa0647a31ed92570 languageName: node linkType: hard "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + checksum: 10/041b4293ad6bf391e21c5d85ed03f412506d6623786b801c4ab39e4e6ca54993f13201bceb544d92963f9e0024e6e7fbf0cb1d84c9d6b31cb9c79c8c990d13d8 languageName: node linkType: hard @@ -7458,8 +7458,8 @@ __metadata: version: 1.0.3 resolution: "has@npm:1.0.3" dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 + function-bind: "npm:^1.1.1" + checksum: 10/a449f3185b1d165026e8d25f6a8c3390bd25c201ff4b8c1aaf948fc6a5fcfd6507310b8c00c13a3325795ea9791fcc3d79d61eafa313b5750438fc19183df57b languageName: node linkType: hard @@ -7467,10 +7467,10 @@ __metadata: version: 3.1.0 resolution: "hash-base@npm:3.1.0" dependencies: - inherits: ^2.0.4 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.6.0" + safe-buffer: "npm:^5.2.0" + checksum: 10/26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc languageName: node linkType: hard @@ -7478,9 +7478,9 @@ __metadata: version: 1.1.3 resolution: "hash.js@npm:1.1.3" dependencies: - inherits: ^2.0.3 - minimalistic-assert: ^1.0.0 - checksum: 93de6f178bf71feee38f66868a57ecb5602d937c1ccd69951b0bfec1488813b6afdbb4a81ddb2c62488c419b4a35af352298b006f14c9cfbf5b872c4191b657f + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.0" + checksum: 10/0dc4cb8164a906b06cc2ca2f333581a3fb91c36b64acd1e2f57da1b51ac5ed6b2135141f0513b734bf80e2c955b8d88fe0eade2a54c92d73d2eb26f49252d209 languageName: node linkType: hard @@ -7488,9 +7488,9 @@ __metadata: version: 1.1.7 resolution: "hash.js@npm:1.1.7" dependencies: - inherits: ^2.0.3 - minimalistic-assert: ^1.0.1 - checksum: e350096e659c62422b85fa508e4b3669017311aa4c49b74f19f8e1bc7f3a54a584fdfd45326d4964d6011f2b2d882e38bea775a96046f2a61b7779a979629d8f + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.1" + checksum: 10/0c89ee4006606a40f92df5cc3c263342e7fea68110f3e9ef032bd2083650430505db01b6b7926953489517d4027535e4fdc7f970412893d3031c361d3ec8f4b3 languageName: node linkType: hard @@ -7499,7 +7499,7 @@ __metadata: resolution: "he@npm:1.2.0" bin: he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 + checksum: 10/d09b2243da4e23f53336e8de3093e5c43d2c39f8d0d18817abfa32ce3e9355391b2edb4bb5edc376aea5d4b0b59d6a0482aab4c52bc02ef95751e4b818e847f1 languageName: node linkType: hard @@ -7507,31 +7507,31 @@ __metadata: version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" dependencies: - hash.js: ^1.0.3 - minimalistic-assert: ^1.0.0 - minimalistic-crypto-utils: ^1.0.1 - checksum: bd30b6a68d7f22d63f10e1888aee497d7c2c5c0bb469e66bbdac99f143904d1dfe95f8131f95b3e86c86dd239963c9d972fcbe147e7cffa00e55d18585c43fe0 + hash.js: "npm:^1.0.3" + minimalistic-assert: "npm:^1.0.0" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10/0298a1445b8029a69b713d918ecaa84a1d9f614f5857e0c6e1ca517abfa1357216987b2ee08cc6cc73ba82a6c6ddf2ff11b9717a653530ef03be599d4699b836 languageName: node linkType: hard "hoopy@npm:^0.1.4": version: 0.1.4 resolution: "hoopy@npm:0.1.4" - checksum: cfa60c7684c5e1ee4efe26e167bc54b73f839ffb59d1d44a5c4bf891e26b4f5bcc666555219a98fec95508fea4eda3a79540c53c05cc79afc1f66f9a238f4d9e + checksum: 10/7a73f1839a7fd6b953356770dff2c3cff813d97d899cddd75b348926c4df36059d987c06bedb57b1b7711504dba83d3b7b986f979a08b1e415da73a51fefa767 languageName: node linkType: hard "hosted-git-info@npm:^2.6.0": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" - checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd + checksum: 10/96da7d412303704af41c3819207a09ea2cab2de97951db4cf336bb8bce8d8e36b9a6821036ad2e55e67d3be0af8f967a7b57981203fbfb88bc05cd803407b8c3 languageName: node linkType: hard "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" - checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + checksum: 10/034d74029dcca544a34fb6135e98d427acd73019796ffc17383eaa3ec2fe1c0471dcbbc8f8ed39e46e86d43ccd753a160631615e4048285e313569609b66d5b7 languageName: node linkType: hard @@ -7539,18 +7539,18 @@ __metadata: version: 8.1.3 resolution: "http-basic@npm:8.1.3" dependencies: - caseless: ^0.12.0 - concat-stream: ^1.6.2 - http-response-object: ^3.0.1 - parse-cache-control: ^1.0.1 - checksum: 7df5dc4d4b6eb8cc3beaa77f8e5c3074288ec3835abd83c85e5bb66d8a95a0ef97664d862caf5e225698cb795f78f9a5abd0d39404e5356ccd3e5e10c87936a5 + caseless: "npm:^0.12.0" + concat-stream: "npm:^1.6.2" + http-response-object: "npm:^3.0.1" + parse-cache-control: "npm:^1.0.1" + checksum: 10/f515c46159da289bc1573251a90f29b36ec7d781587481acc93656bc21d07f664c862662bd0e79144870c0254758e8b328e16ddc0a5c004827fb1503760e561e languageName: node linkType: hard "http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" - checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + checksum: 10/362d5ed66b12ceb9c0a328fb31200b590ab1b02f4a254a697dc796850cc4385603e75f53ec59f768b2dad3bfa1464bd229f7de278d2899a0e3beffc634b6683f languageName: node linkType: hard @@ -7558,19 +7558,19 @@ __metadata: version: 2.0.0 resolution: "http-errors@npm:2.0.0" dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + depd: "npm:2.0.0" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + toidentifier: "npm:1.0.1" + checksum: 10/0e7f76ee8ff8a33e58a3281a469815b893c41357378f408be8f6d4aa7d1efafb0da064625518e7078381b6a92325949b119dc38fcb30bdbc4e3a35f78c44c439 languageName: node linkType: hard "http-https@npm:^1.0.0": version: 1.0.0 resolution: "http-https@npm:1.0.0" - checksum: 82fc4d2e512c64b35680944d1ae13e68220acfa05b06329832e271fd199c5c7fcff1f53fc1f91a1cd65a737ee4de14004dd3ba9a73cce33da970940c6e6ca774 + checksum: 10/fd3c0802982b1e951a03206690271dacb641b39b80d1820e95095db923d8f63cc7f0df1259969400c8487787a2a46f7b33383c0427ec780a78131b153741b144 languageName: node linkType: hard @@ -7578,10 +7578,10 @@ __metadata: version: 4.0.1 resolution: "http-proxy-agent@npm:4.0.1" dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 + "@tootallnate/once": "npm:1" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10/2e17f5519f2f2740b236d1d14911ea4be170c67419dc15b05ea9a860a22c5d9c6ff4da270972117067cc2cefeba9df5f7cd5e7818fdc6ae52b6acf2a533e5fdd languageName: node linkType: hard @@ -7589,10 +7589,10 @@ __metadata: version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" dependencies: - "@tootallnate/once": 2 - agent-base: 6 - debug: 4 - checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10/5ee19423bc3e0fd5f23ce991b0755699ad2a46a440ce9cec99e8126bb98448ad3479d2c0ea54be5519db5b19a4ffaa69616bac01540db18506dd4dac3dc418f0 languageName: node linkType: hard @@ -7600,8 +7600,8 @@ __metadata: version: 3.0.2 resolution: "http-response-object@npm:3.0.2" dependencies: - "@types/node": ^10.0.3 - checksum: 6cbdcb4ce7b27c9158a131b772c903ed54add2ba831e29cc165e91c3969fa6f8105ddf924aac5b954b534ad15a1ae697b693331b2be5281ee24d79aae20c3264 + "@types/node": "npm:^10.0.3" + checksum: 10/f530c1b28d35200ec125e3a1d3c2d6da1f9d78cc52537e9379219e8172bda24f831856eb050a635d9746f9545586532ade60ffe75253d5a1db14dfaf4759d691 languageName: node linkType: hard @@ -7609,10 +7609,10 @@ __metadata: version: 1.2.0 resolution: "http-signature@npm:1.2.0" dependencies: - assert-plus: ^1.0.0 - jsprim: ^1.2.2 - sshpk: ^1.7.0 - checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c + assert-plus: "npm:^1.0.0" + jsprim: "npm:^1.2.2" + sshpk: "npm:^1.7.0" + checksum: 10/2ff7112e6b0d8f08b382dfe705078c655501f2ddd76cf589d108445a9dd388a0a9be928c37108261519a7f53e6bbd1651048d74057b804807cce1ec49e87a95b languageName: node linkType: hard @@ -7620,9 +7620,9 @@ __metadata: version: 1.0.3 resolution: "http2-wrapper@npm:1.0.3" dependencies: - quick-lru: ^5.1.1 - resolve-alpn: ^1.0.0 - checksum: 74160b862ec699e3f859739101ff592d52ce1cb207b7950295bf7962e4aa1597ef709b4292c673bece9c9b300efad0559fc86c71b1409c7a1e02b7229456003e + quick-lru: "npm:^5.1.1" + resolve-alpn: "npm:^1.0.0" + checksum: 10/8097ee2699440c2e64bda52124990cc5b0fb347401c7797b1a0c1efd5a0f79a4ebaa68e8a6ac3e2dde5f09460c1602764da6da2412bad628ed0a3b0ae35e72d4 languageName: node linkType: hard @@ -7630,9 +7630,9 @@ __metadata: version: 2.2.0 resolution: "http2-wrapper@npm:2.2.0" dependencies: - quick-lru: ^5.1.1 - resolve-alpn: ^1.2.0 - checksum: 6fd20e5cb6a58151715b3581e06a62a47df943187d2d1f69e538a50cccb7175dd334ecfde7900a37d18f3e13a1a199518a2c211f39860e81e9a16210c199cfaa + quick-lru: "npm:^5.1.1" + resolve-alpn: "npm:^1.2.0" + checksum: 10/f02842f0db16a265426baa1b0eed708c3e0bcf9abc64b943712d2a06df9221564490c4f62cea1df9ff767dba9a4afc13e8e47fa41b526bea7d62f0ceb49c5fa7 languageName: node linkType: hard @@ -7640,16 +7640,16 @@ __metadata: version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: - agent-base: 6 - debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + agent-base: "npm:6" + debug: "npm:4" + checksum: 10/f0dce7bdcac5e8eaa0be3c7368bb8836ed010fb5b6349ffb412b172a203efe8f807d9a6681319105ea1b6901e1972c7b5ea899672a7b9aad58309f766dcbe0df languageName: node linkType: hard "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" - checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 + checksum: 10/df59be9e0af479036798a881d1f136c4a29e0b518d4abb863afbd11bf30efa3eeb1d0425fc65942dcc05ab3bf40205ea436b0ff389f2cd20b75b8643d539bf86 languageName: node linkType: hard @@ -7657,8 +7657,8 @@ __metadata: version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + ms: "npm:^2.0.0" + checksum: 10/9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 languageName: node linkType: hard @@ -7666,8 +7666,8 @@ __metadata: version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10/6d3a2dac6e5d1fb126d25645c25c3a1209f70cceecc68b8ef51ae0da3cdc078c151fade7524a30b12a3094926336831fca09c666ef55b37e2c69638b5d6bd2e3 languageName: node linkType: hard @@ -7675,8 +7675,8 @@ __metadata: version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f languageName: node linkType: hard @@ -7684,36 +7684,36 @@ __metadata: version: 2.3.1 resolution: "idna-uts46-hx@npm:2.3.1" dependencies: - punycode: 2.1.0 - checksum: d434c3558d2bc1090eb90f978f995101f469cb26593414ac57aa082c9352e49972b332c6e4188b9b15538172ccfeae3121e5a19b96972a97e6aeb0676d86639c + punycode: "npm:2.1.0" + checksum: 10/5cb65dbc375d42ce9b38dab6e2a7f41b8c059f9a88d236bc9ca32084485f5f22fec11ea5b4e6b61239448148443c3f825fddaa5f298d22e12ecfe845de71a807 languageName: node linkType: hard "ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e + checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 languageName: node linkType: hard "immediate@npm:^3.2.3": version: 3.3.0 resolution: "immediate@npm:3.3.0" - checksum: 634b4305101e2452eba6c07d485bf3e415995e533c94b9c3ffbc37026fa1be34def6e4f2276b0dc2162a3f91628564a4bfb26280278b89d3ee54624e854d2f5f + checksum: 10/39aefd16e7d423a0435f12ed47e45cc18fbb5825fea56d573805f68a056ab5727a16ea79893d35db565f9de14a224bfabffa5e5e2c422117c5fa24428ac0aa69 languageName: node linkType: hard "immediate@npm:~3.2.3": version: 3.2.3 resolution: "immediate@npm:3.2.3" - checksum: 9867dc70794f3aa246a90afe8a0166607590b687e8c572839ff2342292ac2da4b1cdfd396d38f7b9e72625d817d601e73c33c2874e9c0b8e0f1d6658b3c03496 + checksum: 10/fcc2223bdaeac9ba378543658c4c6420a61b6eef2e8447f4b274a2964721d1c707b37725768af20226c8ea66b5b9e7ca982e28c36fc4c2d1af318c1fd4a9e687 languageName: node linkType: hard "immutable@npm:^4.0.0-rc.12": version: 4.2.4 resolution: "immutable@npm:4.2.4" - checksum: 3be84eded37b05e65cad57bfba630bc1bf170c498b7472144bc02d2650cc9baef79daf03574a9c2e41d195ebb55a1c12c9b312f41ee324b653927b24ad8bcaa7 + checksum: 10/13ed8babd3c6e589ae03c1ab2826aeb1d1a9b60c06baaf2cc6292dee252bdc7f66e7ac5647eaaaf11e9b28ebe956e40a993982cc85251e709fd137d001a8b1e8 languageName: node linkType: hard @@ -7721,39 +7721,39 @@ __metadata: version: 3.1.0 resolution: "import-local@npm:3.1.0" dependencies: - pkg-dir: ^4.2.0 - resolve-cwd: ^3.0.0 + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" bin: import-local-fixture: fixtures/cli.js - checksum: bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd + checksum: 10/bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd languageName: node linkType: hard "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + checksum: 10/2d30b157a91fe1c1d7c6f653cbf263f039be6c5bfa959245a16d4ee191fc0f2af86c08545b6e6beeb041c56b574d2d5b9f95343d378ab49c0f37394d541e7fc8 languageName: node linkType: hard "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + checksum: 10/cd3f5cbc9ca2d624c6a1f53f12e6b341659aba0e2d3254ae2b4464aaea8b4294cdb09616abbc59458f980531f2429784ed6a420d48d245bcad0811980c9efae9 languageName: node linkType: hard "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 + checksum: 10/181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 languageName: node linkType: hard "inflection@npm:1.13.2": version: 1.13.2 resolution: "inflection@npm:1.13.2" - checksum: e7ad0559384ed7c526813404bde843f8f17941d47625ad60fc3b09e46efde873dd9840818007c6bd4dbe388e6248fa033d5a8c405c5fc62738c51b118a0e940f + checksum: 10/d58071d45e58b9c51a3b87e67d19ef462f24a043a5fe28db36719bf070333e0caf4d5c79691ecb9a21e61c79f5562908dac19f3d5c5c2600a6ed20435adba867 languageName: node linkType: hard @@ -7761,16 +7761,16 @@ __metadata: version: 1.0.6 resolution: "inflight@npm:1.0.6" dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10/d2ebd65441a38c8336c223d1b80b921b9fa737e37ea466fd7e253cb000c64ae1f17fa59e68130ef5bda92cfd8d36b83d37dab0eb0a4558bcfec8e8cdfd2dcb67 languageName: node linkType: hard "inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 languageName: node linkType: hard @@ -7778,17 +7778,17 @@ __metadata: version: 1.0.5 resolution: "internal-slot@npm:1.0.5" dependencies: - get-intrinsic: ^1.2.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a + get-intrinsic: "npm:^1.2.0" + has: "npm:^1.0.3" + side-channel: "npm:^1.0.4" + checksum: 10/e2eb5b348e427957dd4092cb57b9374a2cbcabbf61e5e5b4d99cb68eeaae29394e8efd79f23dc2b1831253346f3c16b82010737b84841225e934d80d04d68643 languageName: node linkType: hard "interpret@npm:^1.0.0": version: 1.4.0 resolution: "interpret@npm:1.4.0" - checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 + checksum: 10/5beec568d3f60543d0f61f2c5969d44dffcb1a372fe5abcdb8013968114d4e4aaac06bc971a4c9f5bd52d150881d8ebad72a8c60686b1361f5f0522f39c0e1a3 languageName: node linkType: hard @@ -7796,8 +7796,8 @@ __metadata: version: 1.10.4 resolution: "io-ts@npm:1.10.4" dependencies: - fp-ts: ^1.0.0 - checksum: 619134006778f7ca42693716ade7fc1a383079e7848bbeabc67a0e4ac9139cda6b2a88a052d539ab7d554033ee2ffe4dab5cb96b958c83fee2dff73d23f03e88 + fp-ts: "npm:^1.0.0" + checksum: 10/d68cb0928b37485cf631c923628dd189784d3dbbcb2d681d86f5c64b9b0321aa33bd2ff271381ac54a279aec5935ff7a743264c858b5172e83b6a9f0cbafc7d1 languageName: node linkType: hard @@ -7805,18 +7805,18 @@ __metadata: version: 4.28.5 resolution: "ioredis@npm:4.28.5" dependencies: - cluster-key-slot: ^1.1.0 - debug: ^4.3.1 - denque: ^1.1.0 - lodash.defaults: ^4.2.0 - lodash.flatten: ^4.4.0 - lodash.isarguments: ^3.1.0 - p-map: ^2.1.0 - redis-commands: 1.7.0 - redis-errors: ^1.2.0 - redis-parser: ^3.0.0 - standard-as-callback: ^2.1.0 - checksum: a8793c3324cd69fa55b4baacbda118ce6724e574260157761276b31411dd3e168c75490f7155c6ce34d79e01488efa98e0cdb162991970fd56da7cbcdafb8fb8 + cluster-key-slot: "npm:^1.1.0" + debug: "npm:^4.3.1" + denque: "npm:^1.1.0" + lodash.defaults: "npm:^4.2.0" + lodash.flatten: "npm:^4.4.0" + lodash.isarguments: "npm:^3.1.0" + p-map: "npm:^2.1.0" + redis-commands: "npm:1.7.0" + redis-errors: "npm:^1.2.0" + redis-parser: "npm:^3.0.0" + standard-as-callback: "npm:^2.1.0" + checksum: 10/781ff4961954ccc2bc66a763b1e1095af31186b5f4ba5320cd41e04bf887374b67aaf5badf1d2af7ac00790d92d5aa5bde5ffc4a6993e875aff0e2a3db21a230 languageName: node linkType: hard @@ -7824,16 +7824,16 @@ __metadata: version: 5.3.1 resolution: "ioredis@npm:5.3.1" dependencies: - "@ioredis/commands": ^1.1.1 - cluster-key-slot: ^1.1.0 - debug: ^4.3.4 - denque: ^2.1.0 - lodash.defaults: ^4.2.0 - lodash.isarguments: ^3.1.0 - redis-errors: ^1.2.0 - redis-parser: ^3.0.0 - standard-as-callback: ^2.1.0 - checksum: 6c98cb8f8772ad4bb2b6b7a0a224e4a63f4759f9a28e84205f18788552f08221d51f391c10892dca01a1b10b2804d0a7e6082b0b7decd65538a5fb6b0f4f1f82 + "@ioredis/commands": "npm:^1.1.1" + cluster-key-slot: "npm:^1.1.0" + debug: "npm:^4.3.4" + denque: "npm:^2.1.0" + lodash.defaults: "npm:^4.2.0" + lodash.isarguments: "npm:^3.1.0" + redis-errors: "npm:^1.2.0" + redis-parser: "npm:^3.0.0" + standard-as-callback: "npm:^2.1.0" + checksum: 10/7d412a6e8e9ece0cf2c7c607b2329c5dc74ec2d0069e624db6af6aa0c7e8dd8e3708259f82a3831ebc76cf38a2983b43f14659a4e51faa46a6f58870e0a430fe languageName: node linkType: hard @@ -7841,30 +7841,30 @@ __metadata: version: 5.3.2 resolution: "ioredis@npm:5.3.2" dependencies: - "@ioredis/commands": ^1.1.1 - cluster-key-slot: ^1.1.0 - debug: ^4.3.4 - denque: ^2.1.0 - lodash.defaults: ^4.2.0 - lodash.isarguments: ^3.1.0 - redis-errors: ^1.2.0 - redis-parser: ^3.0.0 - standard-as-callback: ^2.1.0 - checksum: 9a23559133e862a768778301efb68ae8c2af3c33562174b54a4c2d6574b976e85c75a4c34857991af733e35c48faf4c356e7daa8fb0a3543d85ff1768c8754bc + "@ioredis/commands": "npm:^1.1.1" + cluster-key-slot: "npm:^1.1.0" + debug: "npm:^4.3.4" + denque: "npm:^2.1.0" + lodash.defaults: "npm:^4.2.0" + lodash.isarguments: "npm:^3.1.0" + redis-errors: "npm:^1.2.0" + redis-parser: "npm:^3.0.0" + standard-as-callback: "npm:^2.1.0" + checksum: 10/0140f055ef81d28e16ca8400b99dabb9ce82009f54afd83cba952c7d0c5d736841e43247765b8ee1af1f02843531c5b8df240af18bd3d7e2ca3d60b36e76213f languageName: node linkType: hard "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 + checksum: 10/1270b11e534a466fb4cf4426cbcc3a907c429389f7f4e4e3b288b42823562e88d6a509ceda8141a507de147ca506141f745005c0aa144569d94cf24a54eb52bc languageName: node linkType: hard "ipaddr.js@npm:1.9.1": version: 1.9.1 resolution: "ipaddr.js@npm:1.9.1" - checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 + checksum: 10/864d0cced0c0832700e9621913a6429ccdc67f37c1bd78fb8c6789fff35c9d167cb329134acad2290497a53336813ab4798d2794fd675d5eb33b5fdf0982b9ca languageName: node linkType: hard @@ -7872,9 +7872,9 @@ __metadata: version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10/a170c7e26082e10de9be6e96d32ae3db4d5906194051b792e85fae3393b53cf2cb5b3557863e5c8ccbab55e2fd8f2f75aa643d437613f72052cf0356615c34be languageName: node linkType: hard @@ -7882,24 +7882,24 @@ __metadata: version: 3.0.1 resolution: "is-array-buffer@npm:3.0.1" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-typed-array: ^1.1.10 - checksum: f26ab87448e698285daf707e52a533920449f7abf63714140ffab9d5571aa5a71ac2fa2677e8b793ad0d5d3e40078d4d2c8a0ab39c957e3cfc6513bb6c9dfdc9 + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + is-typed-array: "npm:^1.1.10" + checksum: 10/f26ab87448e698285daf707e52a533920449f7abf63714140ffab9d5571aa5a71ac2fa2677e8b793ad0d5d3e40078d4d2c8a0ab39c957e3cfc6513bb6c9dfdc9 languageName: node linkType: hard "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f + checksum: 10/73ced84fa35e59e2c57da2d01e12cd01479f381d7f122ce41dcbb713f09dbfc651315832cd2bf8accba7681a69e4d6f1e03941d94dd10040d415086360e7005e languageName: node linkType: hard "is-arrayish@npm:^0.3.1": version: 0.3.2 resolution: "is-arrayish@npm:0.3.2" - checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f + checksum: 10/81a78d518ebd8b834523e25d102684ee0f7e98637136d3bdc93fd09636350fa06f1d8ca997ea28143d4d13cb1b69c0824f082db0ac13e1ab3311c10ffea60ade languageName: node linkType: hard @@ -7907,8 +7907,8 @@ __metadata: version: 1.0.4 resolution: "is-bigint@npm:1.0.4" dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + has-bigints: "npm:^1.0.1" + checksum: 10/cc981cf0564c503aaccc1e5f39e994ae16ae2d1a8fcd14721f14ad431809071f39ec568cfceef901cff408045f1a6d6bac90d1b43eeb0b8e3bc34c8eb1bdb4c4 languageName: node linkType: hard @@ -7916,8 +7916,8 @@ __metadata: version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + binary-extensions: "npm:^2.0.0" + checksum: 10/078e51b4f956c2c5fd2b26bb2672c3ccf7e1faff38e0ebdba45612265f4e3d9fc3127a1fa8370bbf09eab61339203c3d3b7af5662cbf8be4030f8fac37745b0e languageName: node linkType: hard @@ -7925,23 +7925,23 @@ __metadata: version: 1.1.2 resolution: "is-boolean-object@npm:1.1.2" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10/ba794223b56a49a9f185e945eeeb6b7833b8ea52a335cec087d08196cf27b538940001615d3bb976511287cefe94e5907d55f00bb49580533f9ca9b4515fcc2e languageName: node linkType: hard "is-buffer@npm:^2.0.5, is-buffer@npm:~2.0.3": version: 2.0.5 resolution: "is-buffer@npm:2.0.5" - checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 + checksum: 10/3261a8b858edcc6c9566ba1694bf829e126faa88911d1c0a747ea658c5d81b14b6955e3a702d59dabadd58fdd440c01f321aa71d6547105fd21d03f94d0597e7 languageName: node linkType: hard "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac + checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 languageName: node linkType: hard @@ -7949,8 +7949,8 @@ __metadata: version: 2.11.0 resolution: "is-core-module@npm:2.11.0" dependencies: - has: ^1.0.3 - checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab + has: "npm:^1.0.3" + checksum: 10/9b09ce78f1f281e20c596023e8464d51dfc93b5933bf23f00c002eafbebdaa766726be42bacfb4459c4cfe14569f0987db11fe6bc30d6e57985c9071a289966e languageName: node linkType: hard @@ -7958,43 +7958,43 @@ __metadata: version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc + has-tostringtag: "npm:^1.0.0" + checksum: 10/cc80b3a4b42238fa0d358b9a6230dae40548b349e64a477cb7c5eff9b176ba194c11f8321daaf6dd157e44073e9b7fd01f87db1f14952a88d5657acdcd3a56e2 languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + checksum: 10/df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 languageName: node linkType: hard "is-fullwidth-code-point@npm:^2.0.0": version: 2.0.0 resolution: "is-fullwidth-code-point@npm:2.0.0" - checksum: eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8 + checksum: 10/eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8 languageName: node linkType: hard "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + checksum: 10/44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 languageName: node linkType: hard "is-function@npm:^1.0.1": version: 1.0.2 resolution: "is-function@npm:1.0.2" - checksum: 7d564562e07b4b51359547d3ccc10fb93bb392fd1b8177ae2601ee4982a0ece86d952323fc172a9000743a3971f09689495ab78a1d49a9b14fc97a7e28521dc0 + checksum: 10/7d564562e07b4b51359547d3ccc10fb93bb392fd1b8177ae2601ee4982a0ece86d952323fc172a9000743a3971f09689495ab78a1d49a9b14fc97a7e28521dc0 languageName: node linkType: hard "is-generator-fn@npm:^2.0.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" - checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 + checksum: 10/a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 languageName: node linkType: hard @@ -8002,8 +8002,8 @@ __metadata: version: 1.0.10 resolution: "is-generator-function@npm:1.0.10" dependencies: - has-tostringtag: ^1.0.0 - checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b + has-tostringtag: "npm:^1.0.0" + checksum: 10/499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f languageName: node linkType: hard @@ -8011,22 +8011,22 @@ __metadata: version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + is-extglob: "npm:^2.1.1" + checksum: 10/3ed74f2b0cdf4f401f38edb0442ddfde3092d79d7d35c9919c86641efdbcbb32e45aa3c0f70ce5eecc946896cd5a0f26e4188b9f2b881876f7cb6c505b82da11 languageName: node linkType: hard "is-hex-prefixed@npm:1.0.0": version: 1.0.0 resolution: "is-hex-prefixed@npm:1.0.0" - checksum: 5ac58e6e528fb029cc43140f6eeb380fad23d0041cc23154b87f7c9a1b728bcf05909974e47248fd0b7fcc11ba33cf7e58d64804883056fabd23e2b898be41de + checksum: 10/5ac58e6e528fb029cc43140f6eeb380fad23d0041cc23154b87f7c9a1b728bcf05909974e47248fd0b7fcc11ba33cf7e58d64804883056fabd23e2b898be41de languageName: node linkType: hard "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + checksum: 10/93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 languageName: node linkType: hard @@ -8034,16 +8034,16 @@ __metadata: version: 1.3.2 resolution: "is-nan@npm:1.3.2" dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - checksum: 5dfadcef6ad12d3029d43643d9800adbba21cf3ce2ec849f734b0e14ee8da4070d82b15fdb35138716d02587c6578225b9a22779cab34888a139cc43e4e3610a + call-bind: "npm:^1.0.0" + define-properties: "npm:^1.1.3" + checksum: 10/1f784d3472c09bc2e47acba7ffd4f6c93b0394479aa613311dc1d70f1bfa72eb0846c81350967722c959ba65811bae222204d6c65856fdce68f31986140c7b0e languageName: node linkType: hard "is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a + checksum: 10/edbec1a9e6454d68bf595a114c3a72343d2d0be7761d8173dae46c0b73d05bb8fe9398c85d121e7794a66467d2f40b4a610b0be84cd804262d234fc634c86131 languageName: node linkType: hard @@ -8051,22 +8051,22 @@ __metadata: version: 1.0.7 resolution: "is-number-object@npm:1.0.7" dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + has-tostringtag: "npm:^1.0.0" + checksum: 10/8700dcf7f602e0a9625830541345b8615d04953655acbf5c6d379c58eb1af1465e71227e95d501343346e1d49b6f2d53cbc166b1fc686a7ec19151272df582f9 languageName: node linkType: hard "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + checksum: 10/6a6c3383f68afa1e05b286af866017c78f1226d43ac8cb064e115ff9ed85eb33f5c4f7216c96a71e4dfea289ef52c5da3aef5bbfade8ffe47a0465d70c0c8e86 languageName: node linkType: hard "is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" - checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa + checksum: 10/cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa languageName: node linkType: hard @@ -8074,9 +8074,9 @@ __metadata: version: 1.1.4 resolution: "is-regex@npm:1.1.4" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10/36d9174d16d520b489a5e9001d7d8d8624103b387be300c50f860d9414556d0485d74a612fdafc6ebbd5c89213d947dcc6b6bff6b2312093f71ea03cbb19e564 languageName: node linkType: hard @@ -8084,15 +8084,15 @@ __metadata: version: 1.0.2 resolution: "is-shared-array-buffer@npm:1.0.2" dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a + call-bind: "npm:^1.0.2" + checksum: 10/23d82259d6cd6dbb7c4ff3e4efeff0c30dbc6b7f88698498c17f9821cb3278d17d2b6303a5341cbd638ab925a28f3f086a6c79b3df70ac986cc526c725d43b4f languageName: node linkType: hard "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + checksum: 10/b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 languageName: node linkType: hard @@ -8100,8 +8100,8 @@ __metadata: version: 1.0.7 resolution: "is-string@npm:1.0.7" dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 + has-tostringtag: "npm:^1.0.0" + checksum: 10/2bc292fe927493fb6dfc3338c099c3efdc41f635727c6ebccf704aeb2a27bca7acb9ce6fd34d103db78692b10b22111a8891de26e12bfa1c5e11e263c99d1fef languageName: node linkType: hard @@ -8109,8 +8109,8 @@ __metadata: version: 1.0.4 resolution: "is-symbol@npm:1.0.4" dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + has-symbols: "npm:^1.0.2" + checksum: 10/a47dd899a84322528b71318a89db25c7ecdec73197182dad291df15ffea501e17e3c92c8de0bfb50e63402747399981a687b31c519971b1fa1a27413612be929 languageName: node linkType: hard @@ -8118,33 +8118,33 @@ __metadata: version: 1.1.10 resolution: "is-typed-array@npm:1.1.10" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 + available-typed-arrays: "npm:^1.0.5" + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.0" + checksum: 10/2392b2473bbc994f5c30d6848e32bab3cab6c80b795aaec3020baf5419ff7df38fc11b3a043eb56d50f842394c578dbb204a7a29398099f895cf111c5b27f327 languageName: node linkType: hard "is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 + checksum: 10/4b433bfb0f9026f079f4eb3fbaa4ed2de17c9995c3a0b5c800bec40799b4b2a8b4e051b1ada77749deb9ded4ae52fe2096973f3a93ff83df1a5a7184a669478c languageName: node linkType: hard "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" - checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 + checksum: 10/a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 languageName: node linkType: hard "is-url@npm:^1.2.4": version: 1.2.4 resolution: "is-url@npm:1.2.4" - checksum: 100e74b3b1feab87a43ef7653736e88d997eb7bd32e71fd3ebc413e58c1cbe56269699c776aaea84244b0567f2a7d68dfaa512a062293ed2f9fdecb394148432 + checksum: 10/100e74b3b1feab87a43ef7653736e88d997eb7bd32e71fd3ebc413e58c1cbe56269699c776aaea84244b0567f2a7d68dfaa512a062293ed2f9fdecb394148432 languageName: node linkType: hard @@ -8152,22 +8152,22 @@ __metadata: version: 1.0.2 resolution: "is-weakref@npm:1.0.2" dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de + call-bind: "npm:^1.0.2" + checksum: 10/0023fd0e4bdf9c338438ffbe1eed7ebbbff7e7e18fb7cdc227caaf9d4bd024a2dcdf6a8c9f40c92192022eac8391243bb9e66cccebecbf6fe1d8a366108f8513 languageName: node linkType: hard "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab + checksum: 10/f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + checksum: 10/7c9f715c03aff08f35e98b1fadae1b9267b38f0615d501824f9743f3aab99ef10e303ce7db3f186763a0b70a19de5791ebfc854ff884d5a8c4d92211f642ec92 languageName: node linkType: hard @@ -8176,21 +8176,21 @@ __metadata: resolution: "isomorphic-ws@npm:4.0.1" peerDependencies: ws: "*" - checksum: d7190eadefdc28bdb93d67b5f0c603385aaf87724fa2974abb382ac1ec9756ed2cfb27065cbe76122879c2d452e2982bc4314317f3d6c737ddda6c047328771a + checksum: 10/d7190eadefdc28bdb93d67b5f0c603385aaf87724fa2974abb382ac1ec9756ed2cfb27065cbe76122879c2d452e2982bc4314317f3d6c737ddda6c047328771a languageName: node linkType: hard "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" - checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 + checksum: 10/22d9c181015226d4534a227539256897bbbcb7edd1066ca4fc4d3a06dbd976325dfdd16b3983c7d236a89f256805c1a685a772e0364e98873d3819b064ad35a1 languageName: node linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 + checksum: 10/31621b84ad29339242b63d454243f558a7958ee0b5177749bacf1f74be7d95d3fd93853738ef7eebcddfaf3eab014716e51392a8dbd5aa1bdc1b15c2ebc53c24 languageName: node linkType: hard @@ -8198,12 +8198,12 @@ __metadata: version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^6.3.0 - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10/bbc4496c2f304d799f8ec22202ab38c010ac265c441947f075c0f7d46bd440b45c00e46017cf9053453d42182d768b1d6ed0e70a142c95ab00df9843aa5ab80e languageName: node linkType: hard @@ -8211,12 +8211,12 @@ __metadata: version: 6.0.1 resolution: "istanbul-lib-instrument@npm:6.0.1" dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^7.5.4 - checksum: fb23472e739cfc9b027cefcd7d551d5e7ca7ff2817ae5150fab99fe42786a7f7b56a29a2aa8309c37092e18297b8003f9c274f50ca4360949094d17fbac81472 + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10/95fd8c66e586840989cb3c7819c6da66c4742a6fedbf16b51a5c7f1898941ad07b79ddff020f479d3a1d76743ecdbf255d93c35221875687477d4b118026e7e7 languageName: node linkType: hard @@ -8224,10 +8224,10 @@ __metadata: version: 3.0.0 resolution: "istanbul-lib-report@npm:3.0.0" dependencies: - istanbul-lib-coverage: ^3.0.0 - make-dir: ^3.0.0 - supports-color: ^7.1.0 - checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^3.0.0" + supports-color: "npm:^7.1.0" + checksum: 10/06b37952e9cb0fe419a37c7f3d74612a098167a9eb0e5264228036e78b42ca5226501e8130738b5306d94bae2ea068ca674080d4af959992523d84aacff67728 languageName: node linkType: hard @@ -8235,10 +8235,10 @@ __metadata: version: 4.0.1 resolution: "istanbul-lib-source-maps@npm:4.0.1" dependencies: - debug: ^4.1.1 - istanbul-lib-coverage: ^3.0.0 - source-map: ^0.6.1 - checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10/5526983462799aced011d776af166e350191b816821ea7bcf71cab3e5272657b062c47dc30697a22a43656e3ced78893a42de677f9ccf276a28c913190953b82 languageName: node linkType: hard @@ -8246,9 +8246,9 @@ __metadata: version: 3.1.5 resolution: "istanbul-reports@npm:3.1.5" dependencies: - html-escaper: ^2.0.0 - istanbul-lib-report: ^3.0.0 - checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10/1fc20a133f6dbd846e7bf3dc6d85edf2b3c047c47142cd796c38717aef976195d2c0fb0399dd609c3ffac2ca43244dc15ce4ac34064d21e2d34d387df747dafb languageName: node linkType: hard @@ -8256,13 +8256,13 @@ __metadata: version: 10.8.5 resolution: "jake@npm:10.8.5" dependencies: - async: ^3.2.3 - chalk: ^4.0.2 - filelist: ^1.0.1 - minimatch: ^3.0.4 + async: "npm:^3.2.3" + chalk: "npm:^4.0.2" + filelist: "npm:^1.0.1" + minimatch: "npm:^3.0.4" bin: jake: ./bin/cli.js - checksum: 56c913ecf5a8d74325d0af9bc17a233bad50977438d44864d925bb6c45c946e0fee8c4c1f5fe2225471ef40df5222e943047982717ebff0d624770564d3c46ba + checksum: 10/6eaf1cd7fe78b92fa52d7258fb0f16f9bef856a18dc6e2f4da8e610264d293210d6e6e09a89d4e4ce1fc83d07c82963bd00bdcbb88e7a09aa62cc4cdf6e3bdf2 languageName: node linkType: hard @@ -8270,10 +8270,10 @@ __metadata: version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" dependencies: - execa: ^5.0.0 - jest-util: ^29.7.0 - p-limit: ^3.1.0 - checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10/3d93742e56b1a73a145d55b66e96711fbf87ef89b96c2fab7cfdfba8ec06612591a982111ca2b712bb853dbc16831ec8b43585a2a96b83862d6767de59cbf83d languageName: node linkType: hard @@ -8281,27 +8281,27 @@ __metadata: version: 29.7.0 resolution: "jest-circus@npm:29.7.0" dependencies: - "@jest/environment": ^29.7.0 - "@jest/expect": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - dedent: ^1.0.0 - is-generator-fn: ^2.0.0 - jest-each: ^29.7.0 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-runtime: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - p-limit: ^3.1.0 - pretty-format: ^29.7.0 - pure-rand: ^6.0.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10/716a8e3f40572fd0213bcfc1da90274bf30d856e5133af58089a6ce45089b63f4d679bd44e6be9d320e8390483ebc3ae9921981993986d21639d9019b523123d languageName: node linkType: hard @@ -8309,17 +8309,17 @@ __metadata: version: 29.7.0 resolution: "jest-cli@npm:29.7.0" dependencies: - "@jest/core": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - create-jest: ^29.7.0 - exit: ^0.1.2 - import-local: ^3.0.2 - jest-config: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - yargs: ^17.3.1 + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -8327,7 +8327,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 + checksum: 10/6cc62b34d002c034203065a31e5e9a19e7c76d9e8ef447a6f70f759c0714cb212c6245f75e270ba458620f9c7b26063cd8cf6cd1f7e3afd659a7cc08add17307 languageName: node linkType: hard @@ -8335,28 +8335,28 @@ __metadata: version: 29.7.0 resolution: "jest-config@npm:29.7.0" dependencies: - "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.7.0 - "@jest/types": ^29.6.3 - babel-jest: ^29.7.0 - chalk: ^4.0.0 - ci-info: ^3.2.0 - deepmerge: ^4.2.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-circus: ^29.7.0 - jest-environment-node: ^29.7.0 - jest-get-type: ^29.6.3 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-runner: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - micromatch: ^4.0.4 - parse-json: ^5.2.0 - pretty-format: ^29.7.0 - slash: ^3.0.0 - strip-json-comments: ^3.1.1 + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" peerDependencies: "@types/node": "*" ts-node: ">=9.0.0" @@ -8365,7 +8365,7 @@ __metadata: optional: true ts-node: optional: true - checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff + checksum: 10/6bdf570e9592e7d7dd5124fc0e21f5fe92bd15033513632431b211797e3ab57eaa312f83cc6481b3094b72324e369e876f163579d60016677c117ec4853cf02b languageName: node linkType: hard @@ -8373,11 +8373,11 @@ __metadata: version: 29.7.0 resolution: "jest-diff@npm:29.7.0" dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.6.3 - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10/6f3a7eb9cd9de5ea9e5aa94aed535631fa6f80221832952839b3cb59dd419b91c20b73887deb0b62230d06d02d6b6cf34ebb810b88d904bb4fe1e2e4f0905c98 languageName: node linkType: hard @@ -8385,8 +8385,8 @@ __metadata: version: 29.7.0 resolution: "jest-docblock@npm:29.7.0" dependencies: - detect-newline: ^3.0.0 - checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 + detect-newline: "npm:^3.0.0" + checksum: 10/8d48818055bc96c9e4ec2e217a5a375623c0d0bfae8d22c26e011074940c202aa2534a3362294c81d981046885c05d304376afba9f2874143025981148f3e96d languageName: node linkType: hard @@ -8394,12 +8394,12 @@ __metadata: version: 29.7.0 resolution: "jest-each@npm:29.7.0" dependencies: - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - jest-get-type: ^29.6.3 - jest-util: ^29.7.0 - pretty-format: ^29.7.0 - checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10/bd1a077654bdaa013b590deb5f7e7ade68f2e3289180a8c8f53bc8a49f3b40740c0ec2d3a3c1aee906f682775be2bebbac37491d80b634d15276b0aa0f2e3fda languageName: node linkType: hard @@ -8407,20 +8407,20 @@ __metadata: version: 29.7.0 resolution: "jest-environment-node@npm:29.7.0" dependencies: - "@jest/environment": ^29.7.0 - "@jest/fake-timers": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-mock: ^29.7.0 - jest-util: ^29.7.0 - checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10/9cf7045adf2307cc93aed2f8488942e39388bff47ec1df149a997c6f714bfc66b2056768973770d3f8b1bf47396c19aa564877eb10ec978b952c6018ed1bd637 languageName: node linkType: hard "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" - checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 + checksum: 10/88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard @@ -8428,22 +8428,22 @@ __metadata: version: 29.7.0 resolution: "jest-haste-map@npm:29.7.0" dependencies: - "@jest/types": ^29.6.3 - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^29.6.3 - jest-util: ^29.7.0 - jest-worker: ^29.7.0 - micromatch: ^4.0.4 - walker: ^1.0.8 + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" dependenciesMeta: fsevents: optional: true - checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 + checksum: 10/8531b42003581cb18a69a2774e68c456fb5a5c3280b1b9b77475af9e346b6a457250f9d756bfeeae2fe6cbc9ef28434c205edab9390ee970a919baddfa08bb85 languageName: node linkType: hard @@ -8451,9 +8451,9 @@ __metadata: version: 29.7.0 resolution: "jest-leak-detector@npm:29.7.0" dependencies: - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10/e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 languageName: node linkType: hard @@ -8461,11 +8461,11 @@ __metadata: version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" dependencies: - chalk: ^4.0.0 - jest-diff: ^29.7.0 - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10/981904a494299cf1e3baed352f8a3bd8b50a8c13a662c509b6a53c31461f94ea3bfeffa9d5efcfeb248e384e318c87de7e3baa6af0f79674e987482aa189af40 languageName: node linkType: hard @@ -8473,16 +8473,16 @@ __metadata: version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.3 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.7.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10/31d53c6ed22095d86bab9d14c0fa70c4a92c749ea6ceece82cf30c22c9c0e26407acdfbdb0231435dc85a98d6d65ca0d9cbcd25cd1abb377fe945e843fb770b9 languageName: node linkType: hard @@ -8490,10 +8490,10 @@ __metadata: version: 29.7.0 resolution: "jest-mock@npm:29.7.0" dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-util: ^29.7.0 - checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10/ae51d1b4f898724be5e0e52b2268a68fcd876d9b20633c864a6dd6b1994cbc48d62402b0f40f3a1b669b30ebd648821f086c26c08ffde192ced951ff4670d51c languageName: node linkType: hard @@ -8505,14 +8505,14 @@ __metadata: peerDependenciesMeta: jest-resolve: optional: true - checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 + checksum: 10/db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 languageName: node linkType: hard "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" - checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a + checksum: 10/0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a languageName: node linkType: hard @@ -8520,9 +8520,9 @@ __metadata: version: 29.7.0 resolution: "jest-resolve-dependencies@npm:29.7.0" dependencies: - jest-regex-util: ^29.6.3 - jest-snapshot: ^29.7.0 - checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10/1e206f94a660d81e977bcfb1baae6450cb4a81c92e06fad376cc5ea16b8e8c6ea78c383f39e95591a9eb7f925b6a1021086c38941aa7c1b8a6a813c2f6e93675 languageName: node linkType: hard @@ -8530,16 +8530,16 @@ __metadata: version: 29.7.0 resolution: "jest-resolve@npm:29.7.0" dependencies: - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-pnp-resolver: ^1.2.2 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - resolve: ^1.20.0 - resolve.exports: ^2.0.0 - slash: ^3.0.0 - checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10/faa466fd9bc69ea6c37a545a7c6e808e073c66f46ab7d3d8a6ef084f8708f201b85d5fe1799789578b8b47fa1de47b9ee47b414d1863bc117a49e032ba77b7c7 languageName: node linkType: hard @@ -8547,28 +8547,28 @@ __metadata: version: 29.7.0 resolution: "jest-runner@npm:29.7.0" dependencies: - "@jest/console": ^29.7.0 - "@jest/environment": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.13.1 - graceful-fs: ^4.2.9 - jest-docblock: ^29.7.0 - jest-environment-node: ^29.7.0 - jest-haste-map: ^29.7.0 - jest-leak-detector: ^29.7.0 - jest-message-util: ^29.7.0 - jest-resolve: ^29.7.0 - jest-runtime: ^29.7.0 - jest-util: ^29.7.0 - jest-watcher: ^29.7.0 - jest-worker: ^29.7.0 - p-limit: ^3.1.0 - source-map-support: 0.5.13 - checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10/9d8748a494bd90f5c82acea99be9e99f21358263ce6feae44d3f1b0cd90991b5df5d18d607e73c07be95861ee86d1cbab2a3fc6ca4b21805f07ac29d47c1da1e languageName: node linkType: hard @@ -8576,29 +8576,29 @@ __metadata: version: 29.7.0 resolution: "jest-runtime@npm:29.7.0" dependencies: - "@jest/environment": ^29.7.0 - "@jest/fake-timers": ^29.7.0 - "@jest/globals": ^29.7.0 - "@jest/source-map": ^29.6.3 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - cjs-module-lexer: ^1.0.0 - collect-v8-coverage: ^1.0.0 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-message-util: ^29.7.0 - jest-mock: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - slash: ^3.0.0 - strip-bom: ^4.0.0 - checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10/59eb58eb7e150e0834a2d0c0d94f2a0b963ae7182cfa6c63f2b49b9c6ef794e5193ef1634e01db41420c36a94cefc512cdd67a055cd3e6fa2f41eaf0f82f5a20 languageName: node linkType: hard @@ -8606,27 +8606,27 @@ __metadata: version: 29.7.0 resolution: "jest-snapshot@npm:29.7.0" dependencies: - "@babel/core": ^7.11.6 - "@babel/generator": ^7.7.2 - "@babel/plugin-syntax-jsx": ^7.7.2 - "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - babel-preset-current-node-syntax: ^1.0.0 - chalk: ^4.0.0 - expect: ^29.7.0 - graceful-fs: ^4.2.9 - jest-diff: ^29.7.0 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - natural-compare: ^1.4.0 - pretty-format: ^29.7.0 - semver: ^7.5.3 - checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10/cb19a3948256de5f922d52f251821f99657339969bf86843bd26cf3332eae94883e8260e3d2fba46129a27c3971c1aa522490e460e16c7fad516e82d10bbf9f8 languageName: node linkType: hard @@ -8634,13 +8634,13 @@ __metadata: version: 29.7.0 resolution: "jest-util@npm:29.7.0" dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10/30d58af6967e7d42bd903ccc098f3b4d3859ed46238fbc88d4add6a3f10bea00c226b93660285f058bc7a65f6f9529cf4eb80f8d4707f79f9e3a23686b4ab8f3 languageName: node linkType: hard @@ -8648,13 +8648,13 @@ __metadata: version: 29.7.0 resolution: "jest-validate@npm:29.7.0" dependencies: - "@jest/types": ^29.6.3 - camelcase: ^6.2.0 - chalk: ^4.0.0 - jest-get-type: ^29.6.3 - leven: ^3.1.0 - pretty-format: ^29.7.0 - checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10/8ee1163666d8eaa16d90a989edba2b4a3c8ab0ffaa95ad91b08ca42b015bfb70e164b247a5b17f9de32d096987cada63ed8491ab82761bfb9a28bc34b27ae161 languageName: node linkType: hard @@ -8662,15 +8662,15 @@ __metadata: version: 29.7.0 resolution: "jest-watcher@npm:29.7.0" dependencies: - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - emittery: ^0.13.1 - jest-util: ^29.7.0 - string-length: ^4.0.1 - checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10/4f616e0345676631a7034b1d94971aaa719f0cd4a6041be2aa299be437ea047afd4fe05c48873b7963f5687a2f6c7cbf51244be8b14e313b97bfe32b1e127e55 languageName: node linkType: hard @@ -8678,11 +8678,11 @@ __metadata: version: 29.7.0 resolution: "jest-worker@npm:29.7.0" dependencies: - "@types/node": "*" - jest-util: ^29.7.0 - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10/364cbaef00d8a2729fc760227ad34b5e60829e0869bd84976bdfbd8c0d0f9c2f22677b3e6dd8afa76ed174765351cd12bae3d4530c62eefb3791055127ca9745 languageName: node linkType: hard @@ -8690,10 +8690,10 @@ __metadata: version: 29.7.0 resolution: "jest@npm:29.7.0" dependencies: - "@jest/core": ^29.7.0 - "@jest/types": ^29.6.3 - import-local: ^3.0.2 - jest-cli: ^29.7.0 + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -8701,42 +8701,42 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b + checksum: 10/97023d78446098c586faaa467fbf2c6b07ff06e2c85a19e3926adb5b0effe9ac60c4913ae03e2719f9c01ae8ffd8d92f6b262cedb9555ceeb5d19263d8c6362a languageName: node linkType: hard "jquery.json-viewer@npm:1.5.0": version: 1.5.0 resolution: "jquery.json-viewer@npm:1.5.0" - checksum: cebf5368eddbbafe893022504a9d2b527f1234e5ca79a6c96cc3f7b4b7342bd3efb0c1c8c00fde9657e5dfb089b7390bc0719a55adbaf4d24da5ef2858e68fe4 + checksum: 10/a238de0f314251af7cac93190e22f59881194442bf67f69a189637ffea0d2f7e0cb44480566cd7d85313753527f193aa05ceb5e19e19245d64e7cc950cbe0868 languageName: node linkType: hard "jquery@npm:>=1.9.1": version: 3.6.4 resolution: "jquery@npm:3.6.4" - checksum: 8354f7bd0a0424aa714ee1b6b1ef74b410f834eb5c8501682289b358bc151f11677f11188b544f3bb49309d6ec4d15d1a5de175661250c206b06185a252f706f + checksum: 10/6526ec120bb64cb710804d4f1046c099e8e0c329369888e76d17cdbaae57caa9bde445e7088067638c923fff57bf22170693052cdc93db1db390317fbcf45602 languageName: node linkType: hard "js-sha3@npm:0.5.7, js-sha3@npm:^0.5.7": version: 0.5.7 resolution: "js-sha3@npm:0.5.7" - checksum: 973a28ea4b26cc7f12d2ab24f796e24ee4a71eef45a6634a052f6eb38cf8b2333db798e896e6e094ea6fa4dfe8e42a2a7942b425cf40da3f866623fd05bb91ea + checksum: 10/32885c7edb50fca04017bacada8e5315c072d21d3d35e071e9640fc5577e200076a4718e0b2f33d86ab704accb68d2ade44f1e2ca424cc73a5929b9129dab948 languageName: node linkType: hard "js-sha3@npm:0.8.0, js-sha3@npm:^0.8.0": version: 0.8.0 resolution: "js-sha3@npm:0.8.0" - checksum: 75df77c1fc266973f06cce8309ce010e9e9f07ec35ab12022ed29b7f0d9c8757f5a73e1b35aa24840dced0dea7059085aa143d817aea9e188e2a80d569d9adce + checksum: 10/a49ac6d3a6bfd7091472a28ab82a94c7fb8544cc584ee1906486536ba1cb4073a166f8c7bb2b0565eade23c5b3a7b8f7816231e0309ab5c549b737632377a20c languageName: node linkType: hard "js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + checksum: 10/af37d0d913fb56aec6dc0074c163cc71cd23c0b8aad5c2350747b6721d37ba118af35abdd8b33c47ec2800de07dedb16a527ca9c530ee004093e04958bd0cbf2 languageName: node linkType: hard @@ -8744,11 +8744,11 @@ __metadata: version: 3.13.1 resolution: "js-yaml@npm:3.13.1" dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" bin: js-yaml: bin/js-yaml.js - checksum: 7511b764abb66d8aa963379f7d2a404f078457d106552d05a7b556d204f7932384e8477513c124749fa2de52eb328961834562bd09924902c6432e40daa408bc + checksum: 10/cec89175b065743875fce53e63adc8b89aded77e18d00e54ff80c57ab730f22ccfddaf2fe3e6adab1d6dff59a3d55dd9ae6fc711d46335b7e94c32d3583a5627 languageName: node linkType: hard @@ -8756,10 +8756,10 @@ __metadata: version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: - argparse: ^2.0.1 + argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + checksum: 10/c138a34a3fd0d08ebaf71273ad4465569a483b8a639e0b118ff65698d257c2791d3199e3f303631f2cb98213fa7b5f5d6a4621fd0fff819421b990d30d967140 languageName: node linkType: hard @@ -8767,18 +8767,18 @@ __metadata: version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" bin: js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + checksum: 10/9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379 languageName: node linkType: hard "jsbn@npm:~0.1.0": version: 0.1.1 resolution: "jsbn@npm:0.1.1" - checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 + checksum: 10/5450133242845100e694f0ef9175f44c012691a9b770b2571e677314e6f70600abb10777cdfc9a0c6a9f2ac6d134577403633de73e2fcd0f97875a67744e2d14 languageName: node linkType: hard @@ -8787,7 +8787,7 @@ __metadata: resolution: "jsesc@npm:2.5.2" bin: jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + checksum: 10/d2096abdcdec56969764b40ffc91d4a23408aa2f351b4d1c13f736f25476643238c43fdbaf38a191c26b1b78fd856d965f5d4d0dde7b89459cd94025190cdf13 languageName: node linkType: hard @@ -8795,50 +8795,50 @@ __metadata: version: 1.0.0 resolution: "json-bigint@npm:1.0.0" dependencies: - bignumber.js: ^9.0.0 - checksum: c67bb93ccb3c291e60eb4b62931403e378906aab113ec1c2a8dd0f9a7f065ad6fd9713d627b732abefae2e244ac9ce1721c7a3142b2979532f12b258634ce6f6 + bignumber.js: "npm:^9.0.0" + checksum: 10/cd3973b88e5706f8f89d2a9c9431f206ef385bd5c584db1b258891a5e6642507c32316b82745239088c697f5ddfe967351e1731f5789ba7855aed56ad5f70e1f languageName: node linkType: hard "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" - checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c languageName: node linkType: hard "json-parse-even-better-errors@npm:^2.3.0": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + checksum: 10/5f3a99009ed5f2a5a67d06e2f298cc97bc86d462034173308156f15b43a6e850be8511dc204b9b94566305da2947f7d90289657237d210351a39059ff9d666cf languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b + checksum: 10/7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b languageName: node linkType: hard "json-schema-traverse@npm:^1.0.0": version: 1.0.0 resolution: "json-schema-traverse@npm:1.0.0" - checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad + checksum: 10/02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad languageName: node linkType: hard "json-schema@npm:0.4.0": version: 0.4.0 resolution: "json-schema@npm:0.4.0" - checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 + checksum: 10/8b3b64eff4a807dc2a3045b104ed1b9335cd8d57aa74c58718f07f0f48b8baa3293b00af4dcfbdc9144c3aafea1e97982cc27cc8e150fc5d93c540649507a458 languageName: node linkType: hard "json-stringify-safe@npm:~5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" - checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee + checksum: 10/59169a081e4eeb6f9559ae1f938f656191c000e0512aa6df9f3c8b2437a4ab1823819c6b9fd1818a4e39593ccfd72e9a051fdd3e2d1e340ed913679e888ded8c languageName: node linkType: hard @@ -8847,7 +8847,7 @@ __metadata: resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js - checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 + checksum: 10/1db67b853ff0de3534085d630691d3247de53a2ed1390ba0ddff681ea43e9b3e30ecbdb65c5e9aab49435e44059c23dbd6fee8ee619419ba37465bb0dd7135da languageName: node linkType: hard @@ -8855,11 +8855,11 @@ __metadata: version: 2.4.0 resolution: "jsonfile@npm:2.4.0" dependencies: - graceful-fs: ^4.1.6 + graceful-fs: "npm:^4.1.6" dependenciesMeta: graceful-fs: optional: true - checksum: f5064aabbc9e35530dc471d8b203ae1f40dbe949ddde4391c6f6a6d310619a15f0efdae5587df594d1d70c555193aaeee9d2ed4aec9ffd5767bd5e4e62d49c3d + checksum: 10/517656e0a7c4eda5a90341dd0ec9e9b7590d0c77d66d8aad0162615dfc7c5f219c82565b927cc4cc774ca93e484d118a274ef0def74279a3d8afb4ff2f4e4800 languageName: node linkType: hard @@ -8867,11 +8867,11 @@ __metadata: version: 4.0.0 resolution: "jsonfile@npm:4.0.0" dependencies: - graceful-fs: ^4.1.6 + graceful-fs: "npm:^4.1.6" dependenciesMeta: graceful-fs: optional: true - checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + checksum: 10/17796f0ab1be8479827d3683433f97ebe0a1c6932c3360fa40348eac36904d69269aab26f8b16da311882d94b42e9208e8b28e490bf926364f3ac9bff134c226 languageName: node linkType: hard @@ -8879,17 +8879,17 @@ __metadata: version: 8.5.1 resolution: "jsonwebtoken@npm:8.5.1" dependencies: - jws: ^3.2.2 - lodash.includes: ^4.3.0 - lodash.isboolean: ^3.0.3 - lodash.isinteger: ^4.0.4 - lodash.isnumber: ^3.0.3 - lodash.isplainobject: ^4.0.6 - lodash.isstring: ^4.0.1 - lodash.once: ^4.0.0 - ms: ^2.1.1 - semver: ^5.6.0 - checksum: 93c9e3f23c59b758ac88ba15f4e4753b3749dfce7a6f7c40fb86663128a1e282db085eec852d4e0cbca4cefdcd3a8275ee255dbd08fcad0df26ad9f6e4cc853a + jws: "npm:^3.2.2" + lodash.includes: "npm:^4.3.0" + lodash.isboolean: "npm:^3.0.3" + lodash.isinteger: "npm:^4.0.4" + lodash.isnumber: "npm:^3.0.3" + lodash.isplainobject: "npm:^4.0.6" + lodash.isstring: "npm:^4.0.1" + lodash.once: "npm:^4.0.0" + ms: "npm:^2.1.1" + semver: "npm:^5.6.0" + checksum: 10/a7b52ea570f70bea183ceca970c003f223d9d3425d72498002e9775485c7584bfa3751d1c7291dbb59738074cba288effe73591b87bec5d467622ab3a156fdb6 languageName: node linkType: hard @@ -8897,11 +8897,11 @@ __metadata: version: 1.4.2 resolution: "jsprim@npm:1.4.2" dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a + assert-plus: "npm:1.0.0" + extsprintf: "npm:1.3.0" + json-schema: "npm:0.4.0" + verror: "npm:1.10.0" + checksum: 10/df2bf234eab1b5078d01bcbff3553d50a243f7b5c10a169745efeda6344d62798bd1d85bcca6a8446f3b5d0495e989db45f9de8dae219f0f9796e70e0c776089 languageName: node linkType: hard @@ -8909,8 +8909,8 @@ __metadata: version: 3.3.12 resolution: "jstree@npm:3.3.12" dependencies: - jquery: ">=1.9.1" - checksum: 23f3172dce684e6a80ec821fdefb6c48cdfc9b1e19613f9487660d7a19fee4ca6286fc499d222b5df3aefb7fe184b31b838569b43b4dd5daf8146efb9c5bce9e + jquery: "npm:>=1.9.1" + checksum: 10/7b12e15700732656984b7823c7cfab3860dc37626ea51d6e218282cdd28c971062b93d2fc4f780115d0078b42ef9b8ed65d446cad65e42dab6e534ccdc340538 languageName: node linkType: hard @@ -8918,10 +8918,10 @@ __metadata: version: 1.4.1 resolution: "jwa@npm:1.4.1" dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: ^5.0.1 - checksum: ff30ea7c2dcc61f3ed2098d868bf89d43701605090c5b21b5544b512843ec6fd9e028381a4dda466cbcdb885c2d1150f7c62e7168394ee07941b4098e1035e2f + buffer-equal-constant-time: "npm:1.0.1" + ecdsa-sig-formatter: "npm:1.0.11" + safe-buffer: "npm:^5.0.1" + checksum: 10/0bc002b71dd70480fedc7d442a4d2b9185a9947352a027dcb4935864ad2323c57b5d391adf968a3622b61e940cef4f3484d5813b95864539272d41cac145d6f3 languageName: node linkType: hard @@ -8929,9 +8929,9 @@ __metadata: version: 3.2.2 resolution: "jws@npm:3.2.2" dependencies: - jwa: ^1.4.1 - safe-buffer: ^5.0.1 - checksum: f0213fe5b79344c56cd443428d8f65c16bf842dc8cb8f5aed693e1e91d79c20741663ad6eff07a6d2c433d1831acc9814e8d7bada6a0471fbb91d09ceb2bf5c2 + jwa: "npm:^1.4.1" + safe-buffer: "npm:^5.0.1" + checksum: 10/70b016974af8a76d25030c80a0097b24ed5b17a9cf10f43b163c11cb4eb248d5d04a3fe48c0d724d2884c32879d878ccad7be0663720f46b464f662f7ed778fe languageName: node linkType: hard @@ -8939,10 +8939,10 @@ __metadata: version: 3.0.1 resolution: "keccak@npm:3.0.1" dependencies: - node-addon-api: ^2.0.0 - node-gyp: latest - node-gyp-build: ^4.2.0 - checksum: 1de1b62fbb3e035ee186232b11f154bd5c2c12a2d910bc8ec313dab412b6f39ddc51d3a105618dd8de752875da0ead21abb0eb1d4e7d7b17771a4acbb7159390 + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + checksum: 10/722f2eb31de9fe4bc9b65f2a375294a403e4360befa3c940d4ddf9572abea0a4a8e42418cfc58a4829a6397a7334a3b0f80dd908918fbe5d5e14b3e7dcce40dd languageName: node linkType: hard @@ -8950,11 +8950,11 @@ __metadata: version: 3.0.2 resolution: "keccak@npm:3.0.2" dependencies: - node-addon-api: ^2.0.0 - node-gyp: latest - node-gyp-build: ^4.2.0 - readable-stream: ^3.6.0 - checksum: 39a7d6128b8ee4cb7dcd186fc7e20c6087cc39f573a0f81b147c323f688f1f7c2b34f62c4ae189fe9b81c6730b2d1228d8a399cdc1f3d8a4c8f030cdc4f20272 + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + readable-stream: "npm:^3.6.0" + checksum: 10/03f8d513040562f90ae892765431de29de0abf329dec40f1ef8b17eae634d56e283a7aeec5ae62e6ef96b9e8d1601329f2ef5c30a9d6c7baa6062d0f78d11b58 languageName: node linkType: hard @@ -8962,11 +8962,11 @@ __metadata: version: 3.0.3 resolution: "keccak@npm:3.0.3" dependencies: - node-addon-api: ^2.0.0 - node-gyp: latest - node-gyp-build: ^4.2.0 - readable-stream: ^3.6.0 - checksum: f08f04f5cc87013a3fc9e87262f761daff38945c86dd09c01a7f7930a15ae3e14f93b310ef821dcc83675a7b814eb1c983222399a2f263ad980251201d1b9a99 + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + readable-stream: "npm:^3.6.0" + checksum: 10/30c652c39e935132eb92300eca974fad1f4ec4aed4c6e2f21d774b06001d07e24117dd46ef1494272f5674f7f11d5e7a8ee50c7bf8d87bb3895aa60607c4aabc languageName: node linkType: hard @@ -8974,8 +8974,8 @@ __metadata: version: 4.5.2 resolution: "keyv@npm:4.5.2" dependencies: - json-buffer: 3.0.1 - checksum: 13ad58303acd2261c0d4831b4658451603fd159e61daea2121fcb15feb623e75ee328cded0572da9ca76b7b3ceaf8e614f1806c6b3af5db73c9c35a345259651 + json-buffer: "npm:3.0.1" + checksum: 10/fbe6068cb46cfbf37b46f4a80e484a5e9c48c9a1eb09d9cb89382db6e12b801b60f07268ec8d7fa8d49f1f1e77badc5820c3135d478022df42691890a4c37038 languageName: node linkType: hard @@ -8983,25 +8983,25 @@ __metadata: version: 1.3.1 resolution: "klaw@npm:1.3.1" dependencies: - graceful-fs: ^4.1.9 + graceful-fs: "npm:^4.1.9" dependenciesMeta: graceful-fs: optional: true - checksum: 8f69e4797c26e7c3f2426bfa85f38a3da3c2cb1b4c6bd850d2377aed440d41ce9d806f2885c2e2e224372c56af4b1d43b8a499adecf9a05e7373dc6b8b7c52e4 + checksum: 10/68b8ccb89f222dca60805df2b0e0fa0b3e4203ca1928b8facc0afac660e3e362809fe00f868ac877f495ebf89e376bb9ac9275508a132b5573e7382bed3ab006 languageName: node linkType: hard "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 + checksum: 10/0c0ecaf00a5c6173d25059c7db2113850b5457016dfa1d0e3ef26da4704fbb186b4938d7611246d86f0ddf1bccf26828daa5877b1f232a65e7373d0122a83e7f languageName: node linkType: hard "kuler@npm:^2.0.0": version: 2.0.0 resolution: "kuler@npm:2.0.0" - checksum: 9e10b5a1659f9ed8761d38df3c35effabffbd19fc6107324095238e4ef0ff044392cae9ac64a1c2dda26e532426485342226b93806bd97504b174b0dcf04ed81 + checksum: 10/9e10b5a1659f9ed8761d38df3c35effabffbd19fc6107324095238e4ef0ff044392cae9ac64a1c2dda26e532426485342226b93806bd97504b174b0dcf04ed81 languageName: node linkType: hard @@ -9009,8 +9009,8 @@ __metadata: version: 9.0.2 resolution: "level-codec@npm:9.0.2" dependencies: - buffer: ^5.6.0 - checksum: 289003d51b8afcdd24c4d318606abf2bae81975e4b527d7349abfdbacc8fef26711f2f24e2d20da0e1dce0bb216a856c9433ccb9ca25fa78a96aed9f51e506ed + buffer: "npm:^5.6.0" + checksum: 10/de74b43f68f74211a12d4772f20e3bf7207eb2d400613c7f5835bf8f1f29b4e1f0a1375ebaa5516016734622f17a65e6aaa72432895c18012b101bc9c8361f72 languageName: node linkType: hard @@ -9018,15 +9018,15 @@ __metadata: version: 3.1.0 resolution: "level-concat-iterator@npm:3.1.0" dependencies: - catering: ^2.1.0 - checksum: a15bc4c5fbbb30c1efa7fad06b72feaac84d90990b356b461593c198a833336f31f6daff8f40c3908fabd14cfd8856d1c5ecae9e1cb0575037b65fa607e760e9 + catering: "npm:^2.1.0" + checksum: 10/a15bc4c5fbbb30c1efa7fad06b72feaac84d90990b356b461593c198a833336f31f6daff8f40c3908fabd14cfd8856d1c5ecae9e1cb0575037b65fa607e760e9 languageName: node linkType: hard "level-concat-iterator@npm:~2.0.0": version: 2.0.1 resolution: "level-concat-iterator@npm:2.0.1" - checksum: 562583ef1292215f8e749c402510cb61c4d6fccf4541082b3d21dfa5ecde9fcccfe52bdcb5cfff9d2384e7ce5891f44df9439a6ddb39b0ffe31015600b4a828a + checksum: 10/96b7d77d2130389ca2366931cc3cdf7efa2bbc18cbaabd3128c03f22dc4a6a87f0511b9bb2eb3dffd2b4bcfeefeabd6c471640dff905fed49f19b7ac7e7eae10 languageName: node linkType: hard @@ -9034,8 +9034,8 @@ __metadata: version: 2.0.1 resolution: "level-errors@npm:2.0.1" dependencies: - errno: ~0.1.1 - checksum: aca5d7670e2a40609db8d7743fce289bb5202c0bc13e4a78f81f36a6642e9abc0110f48087d3d3c2c04f023d70d4ee6f2db0e20c63d29b3fda323a67bfff6526 + errno: "npm:~0.1.1" + checksum: 10/3f800be6a30637ff4ae907b100512fc36d077b237dc407f976f283122984059002a67cc89c8f9c0f74a49cc84c7e519d09fcc0ece53af64360bcd5ecc762e3a3 languageName: node linkType: hard @@ -9043,10 +9043,10 @@ __metadata: version: 4.0.2 resolution: "level-iterator-stream@npm:4.0.2" dependencies: - inherits: ^2.0.4 - readable-stream: ^3.4.0 - xtend: ^4.0.2 - checksum: 239e2c7e62bffb485ed696bcd3b98de7a2bc455d13be4fce175ae3544fe9cda81c2ed93d3e88b61380ae6d28cce02511862d77b86fb2ba5b5cf00471f3c1eccc + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + xtend: "npm:^4.0.2" + checksum: 10/94990b83dda12f2b8d77398b5bc82f1d4fba99c617ae56cb01db1649827c449f746044b05a62d0a060908dc75b4f41aa6d29ae6c0188d61412e98a1fb88d32ee languageName: node linkType: hard @@ -9054,9 +9054,9 @@ __metadata: version: 5.0.1 resolution: "level-mem@npm:5.0.1" dependencies: - level-packager: ^5.0.3 - memdown: ^5.0.0 - checksum: 37a38163b0c7cc55f64385fdff78438669f953bc08dc751739e2f1edd401472a89001a73a95cc8b81f38f989e46279797c11eb82e702690ea9a171e02bf31e84 + level-packager: "npm:^5.0.3" + memdown: "npm:^5.0.0" + checksum: 10/11ecdb7099ee6b836a3d9719cf0fb02f5c35622ecf34f37711d6a26b4bcbb6dcf4188935800c10feddb81572393f6de45bd6a2d2dcb7d3c7f8ff268fd15ff3dd languageName: node linkType: hard @@ -9064,23 +9064,23 @@ __metadata: version: 5.1.1 resolution: "level-packager@npm:5.1.1" dependencies: - encoding-down: ^6.3.0 - levelup: ^4.3.2 - checksum: befe2aa54f2010a6ecf7ddce392c8dee225e1839205080a2704d75e560e28b01191b345494696196777b70d376e3eaae4c9e7c330cc70d3000839f5b18dd78f2 + encoding-down: "npm:^6.3.0" + levelup: "npm:^4.3.2" + checksum: 10/b5e40fbfc611f0b63ef544bd37f1f7a28965a866a56341314ceba4d2b95fb81ac33342383eaad8332abe307b6d7c0bbe0124ef377e7200b3a02a12fd39163350 languageName: node linkType: hard "level-supports@npm:^2.0.1": version: 2.1.0 resolution: "level-supports@npm:2.1.0" - checksum: f7b16aea7ddd13326ee4fbc2c1099bcaf8a74dc95346af9ebedea4e02518c6f7a438e829b79b7890d67489b59f615a9428369a0a065021797aa7cb6b6bd84d75 + checksum: 10/0cb4281580d45fbeb333507b8d1ad8c4216f88bb29f7409ea5a09b2444bcae4648defe7dc1d2cdf9528b92add170f954d12e1d23005a5a894b8f6894d0910bca languageName: node linkType: hard "level-supports@npm:^4.0.0": version: 4.0.1 resolution: "level-supports@npm:4.0.1" - checksum: d4552b42bb8cdeada07b0f6356c7a90fefe76279147331f291aceae26e3e56d5f927b09ce921647c0230bfe03ddfbdcef332be921e5c2194421ae2bfa3cf6368 + checksum: 10/e2f177af813a25af29d15406a14240e2e10e5efb1c35b03643c885ac5931af760b9337826506b6395f98cf6b1e68ba294bfc345a248a1ae3f9c69e08e81824b2 languageName: node linkType: hard @@ -9088,8 +9088,8 @@ __metadata: version: 1.0.1 resolution: "level-supports@npm:1.0.1" dependencies: - xtend: ^4.0.2 - checksum: 5d6bdb88cf00c3d9adcde970db06a548c72c5a94bf42c72f998b58341a105bfe2ea30d313ce1e84396b98cc9ddbc0a9bd94574955a86e929f73c986e10fc0df0 + xtend: "npm:^4.0.2" + checksum: 10/27c2054c483c61b098454ff20917429ba73dc9b2af5aeafd959acf7ff36c3230ec200fcc63d920710935b8f3d59d18030a93fec472e9233d28f0dc0bca8b362d languageName: node linkType: hard @@ -9097,9 +9097,9 @@ __metadata: version: 1.0.1 resolution: "level-transcoder@npm:1.0.1" dependencies: - buffer: ^6.0.3 - module-error: ^1.0.1 - checksum: 304f08d802faf3491a533b6d87ad8be3cabfd27f2713bbe9d4c633bf50fcb9460eab5a6776bf015e101ead7ba1c1853e05e7f341112f17a9d0cb37ee5a421a25 + buffer: "npm:^6.0.3" + module-error: "npm:^1.0.1" + checksum: 10/2fb41a1d8037fc279f851ead8cdc3852b738f1f935ac2895183cd606aae3e57008e085c7c2bd2b2d43cfd057333108cfaed604092e173ac2abdf5ab1b8333f9e languageName: node linkType: hard @@ -9107,10 +9107,10 @@ __metadata: version: 2.0.0 resolution: "level-ws@npm:2.0.0" dependencies: - inherits: ^2.0.3 - readable-stream: ^3.1.0 - xtend: ^4.0.1 - checksum: 4e5cbf090a07367373f693c98ad5b4797e7e694ea801ce5cd4103e06837ec883bdce9588ac11e0b9963ca144b96c95c6401c9e43583028ba1e4f847e81ec9ad6 + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.0" + xtend: "npm:^4.0.1" + checksum: 10/3e9ab6ae437aa854d4a21df3377e3b3873068c39ef1c548b37d4d8c62fa22dc8c8337c09d86f13db528474ff107c84967b89efc226a1b594afc40ac839df9f5f languageName: node linkType: hard @@ -9118,9 +9118,9 @@ __metadata: version: 8.0.0 resolution: "level@npm:8.0.0" dependencies: - browser-level: ^1.0.1 - classic-level: ^1.2.0 - checksum: 13eb25bd71bfdca6cd714d1233adf9da97de9a8a4bf9f28d62a390b5c96d0250abaf983eb90eb8c4e89c7a985bb330750683d106f12670e5ea8fba1d7e608a1f + browser-level: "npm:^1.0.1" + classic-level: "npm:^1.2.0" + checksum: 10/1e7df97fe80fb158c8c1d6feeb651ee1381fd8e45af773b2bb02d3dd020fefd4f48a69d260b2d0ce9c4245ee9d8d40b8a9c49275b0b1ef6e1d4158feb5c39081 languageName: node linkType: hard @@ -9128,11 +9128,11 @@ __metadata: version: 6.1.0 resolution: "leveldown@npm:6.1.0" dependencies: - abstract-leveldown: ^7.2.0 - napi-macros: ~2.0.0 - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: e984b61e9fbe057cfd5c81ac0afe5d7e35d695ff130a95991e0ecb66390e4c4ff6aa3980a65b6c53edaba80527a47790bb26e3cfbd52a054957b3546d9941fe4 + abstract-leveldown: "npm:^7.2.0" + napi-macros: "npm:~2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10/f9d20c872fb82a5635499dd6a1c892020c0c836828195ac4eb1d7c4ee51686a5403a8986d018f2282a6745e9ca00e76c6552ce2d5dae6c14efbe83a99ff3ff78 languageName: node linkType: hard @@ -9140,19 +9140,19 @@ __metadata: version: 4.4.0 resolution: "levelup@npm:4.4.0" dependencies: - deferred-leveldown: ~5.3.0 - level-errors: ~2.0.0 - level-iterator-stream: ~4.0.0 - level-supports: ~1.0.0 - xtend: ~4.0.0 - checksum: 5a09e34c78cd7c23f9f6cb73563f1ebe8121ffc5f9f5f232242529d4fbdd40e8d1ffb337d2defa0b842334e0dbd4028fbfe7a072eebfe2c4d07174f0aa4aabca + deferred-leveldown: "npm:~5.3.0" + level-errors: "npm:~2.0.0" + level-iterator-stream: "npm:~4.0.0" + level-supports: "npm:~1.0.0" + xtend: "npm:~4.0.0" + checksum: 10/6af62b625d216e71cef94c375c26515c58a1ea7c3c043474df6c443494c953f7191ae8f7d27791d5b86b3bcfc2b9e804e22f654ea6a90a465fb91eb6cbd17ad6 languageName: node linkType: hard "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 + checksum: 10/638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 languageName: node linkType: hard @@ -9160,29 +9160,29 @@ __metadata: version: 0.7.11 resolution: "libsodium-wrappers@npm:0.7.11" dependencies: - libsodium: ^0.7.11 - checksum: 6a6ef47b2213e3fb4687196c28fee4c9885f70d89547d845e62d96014d3d5ad9f59cb05fadc601debc0031a3cfd0b9b416d7efbeb5bf66db6aa0ed69f55a6293 + libsodium: "npm:^0.7.11" + checksum: 10/1732eb0d972d53b0e21ce02b163582cafff7db6cfcb7a2ed94fc0746942e786d1b65f1c01a790990798ea561294e5e40641d8745da879da7cba5fa1cf40a087a languageName: node linkType: hard "libsodium@npm:^0.7.11": version: 0.7.11 resolution: "libsodium@npm:0.7.11" - checksum: 0a3493ac1829d1e346178b6984c4eb449dc77157c906876441386c0c653142e3fa56f623ce980bb50e580196578689298c9cd406ce6d514904090e370c6bc0f7 + checksum: 10/966c21d709215553e5b8eb8e910a1cfcabec3a68afffc78d4cbd4efbfca380e8acdd5c45253d31a7fe2ce6ccf9dc1379d8122c481f04d7efb85d262a9e7d2e87 languageName: node linkType: hard "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + checksum: 10/0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 languageName: node linkType: hard "loady@npm:~0.0.5": version: 0.0.5 resolution: "loady@npm:0.0.5" - checksum: 3cba2ffa8cef8a082b3d23f22c1269a339e9f268105c30229bb3fed9123bb79830c0c7f3fa79f52286e1de9303b87e4eb3236952a6ee3fcffa83e7c576f7a8f5 + checksum: 10/3cba2ffa8cef8a082b3d23f22c1269a339e9f268105c30229bb3fed9123bb79830c0c7f3fa79f52286e1de9303b87e4eb3236952a6ee3fcffa83e7c576f7a8f5 languageName: node linkType: hard @@ -9190,9 +9190,9 @@ __metadata: version: 2.0.0 resolution: "locate-path@npm:2.0.0" dependencies: - p-locate: ^2.0.0 - path-exists: ^3.0.0 - checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 + p-locate: "npm:^2.0.0" + path-exists: "npm:^3.0.0" + checksum: 10/02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 languageName: node linkType: hard @@ -9200,9 +9200,9 @@ __metadata: version: 3.0.0 resolution: "locate-path@npm:3.0.0" dependencies: - p-locate: ^3.0.0 - path-exists: ^3.0.0 - checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 + p-locate: "npm:^3.0.0" + path-exists: "npm:^3.0.0" + checksum: 10/53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 languageName: node linkType: hard @@ -9210,8 +9210,8 @@ __metadata: version: 5.0.0 resolution: "locate-path@npm:5.0.0" dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 + p-locate: "npm:^4.1.0" + checksum: 10/83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 languageName: node linkType: hard @@ -9219,120 +9219,120 @@ __metadata: version: 6.0.0 resolution: "locate-path@npm:6.0.0" dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a + p-locate: "npm:^5.0.0" + checksum: 10/72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a languageName: node linkType: hard "lodash.camelcase@npm:^4.3.0": version: 4.3.0 resolution: "lodash.camelcase@npm:4.3.0" - checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 + checksum: 10/c301cc379310441dc73cd6cebeb91fb254bea74e6ad3027f9346fc43b4174385153df420ffa521654e502fd34c40ef69ca4e7d40ee7129a99e06f306032bfc65 languageName: node linkType: hard "lodash.defaults@npm:^4.2.0": version: 4.2.0 resolution: "lodash.defaults@npm:4.2.0" - checksum: 84923258235592c8886e29de5491946ff8c2ae5c82a7ac5cddd2e3cb697e6fbdfbbb6efcca015795c86eec2bb953a5a2ee4016e3735a3f02720428a40efbb8f1 + checksum: 10/6a2a9ea5ad7585aff8d76836c9e1db4528e5f5fa50fc4ad81183152ba8717d83aef8aec4fa88bf3417ed946fd4b4358f145ee08fbc77fb82736788714d3e12db languageName: node linkType: hard "lodash.flatten@npm:^4.4.0": version: 4.4.0 resolution: "lodash.flatten@npm:4.4.0" - checksum: 0ac34a393d4b795d4b7421153d27c13ae67e08786c9cbb60ff5b732210d46f833598eee3fb3844bb10070e8488efe390ea53bb567377e0cb47e9e630bf0811cb + checksum: 10/a2b192f220b0b6c78a6c0175e96bad888b9e0f2a887a8e8c1d0c29d03231fbf110bbb9be0d9de5f936537d143eeb9d5b4f44c4a44f5592c195bf2fae6a6b1e3a languageName: node linkType: hard "lodash.includes@npm:^4.3.0": version: 4.3.0 resolution: "lodash.includes@npm:4.3.0" - checksum: 71092c130515a67ab3bd928f57f6018434797c94def7f46aafa417771e455ce3a4834889f4267b17887d7f75297dfabd96231bf704fd2b8c5096dc4a913568b6 + checksum: 10/45e0a7c7838c931732cbfede6327da321b2b10482d5063ed21c020fa72b09ca3a4aa3bda4073906ab3f436cf36eb85a52ea3f08b7bab1e0baca8235b0e08fe51 languageName: node linkType: hard "lodash.isarguments@npm:^3.1.0": version: 3.1.0 resolution: "lodash.isarguments@npm:3.1.0" - checksum: ae1526f3eb5c61c77944b101b1f655f846ecbedcb9e6b073526eba6890dc0f13f09f72e11ffbf6540b602caee319af9ac363d6cdd6be41f4ee453436f04f13b5 + checksum: 10/e5186d5fe0384dcb0652501d9d04ebb984863ebc9c9faa2d4b9d5dfd81baef9ffe8e2887b9dc471d62ed092bc0788e5f1d42e45c72457a2884bbb54ac132ed92 languageName: node linkType: hard "lodash.isboolean@npm:^3.0.3": version: 3.0.3 resolution: "lodash.isboolean@npm:3.0.3" - checksum: b70068b4a8b8837912b54052557b21fc4774174e3512ed3c5b94621e5aff5eb6c68089d0a386b7e801d679cd105d2e35417978a5e99071750aa2ed90bffd0250 + checksum: 10/b70068b4a8b8837912b54052557b21fc4774174e3512ed3c5b94621e5aff5eb6c68089d0a386b7e801d679cd105d2e35417978a5e99071750aa2ed90bffd0250 languageName: node linkType: hard "lodash.isequal@npm:4.5.0": version: 4.5.0 resolution: "lodash.isequal@npm:4.5.0" - checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 + checksum: 10/82fc58a83a1555f8df34ca9a2cd300995ff94018ac12cc47c349655f0ae1d4d92ba346db4c19bbfc90510764e0c00ddcc985a358bdcd4b3b965abf8f2a48a214 languageName: node linkType: hard "lodash.isinteger@npm:^4.0.4": version: 4.0.4 resolution: "lodash.isinteger@npm:4.0.4" - checksum: 6034821b3fc61a2ffc34e7d5644bb50c5fd8f1c0121c554c21ac271911ee0c0502274852845005f8651d51e199ee2e0cfebfe40aaa49c7fe617f603a8a0b1691 + checksum: 10/c971f5a2d67384f429892715550c67bac9f285604a0dd79275fd19fef7717aec7f2a6a33d60769686e436ceb9771fd95fe7fcb68ad030fc907d568d5a3b65f70 languageName: node linkType: hard "lodash.isnumber@npm:^3.0.3": version: 3.0.3 resolution: "lodash.isnumber@npm:3.0.3" - checksum: 913784275b565346255e6ae6a6e30b760a0da70abc29f3e1f409081585875105138cda4a429ff02577e1bc0a7ae2a90e0a3079a37f3a04c3d6c5aaa532f4cab2 + checksum: 10/913784275b565346255e6ae6a6e30b760a0da70abc29f3e1f409081585875105138cda4a429ff02577e1bc0a7ae2a90e0a3079a37f3a04c3d6c5aaa532f4cab2 languageName: node linkType: hard "lodash.isplainobject@npm:^4.0.6": version: 4.0.6 resolution: "lodash.isplainobject@npm:4.0.6" - checksum: 29c6351f281e0d9a1d58f1a4c8f4400924b4c79f18dfc4613624d7d54784df07efaff97c1ff2659f3e085ecf4fff493300adc4837553104cef2634110b0d5337 + checksum: 10/29c6351f281e0d9a1d58f1a4c8f4400924b4c79f18dfc4613624d7d54784df07efaff97c1ff2659f3e085ecf4fff493300adc4837553104cef2634110b0d5337 languageName: node linkType: hard "lodash.isstring@npm:^4.0.1": version: 4.0.1 resolution: "lodash.isstring@npm:4.0.1" - checksum: eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 + checksum: 10/eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 languageName: node linkType: hard "lodash.memoize@npm:4.x": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" - checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 + checksum: 10/192b2168f310c86f303580b53acf81ab029761b9bd9caa9506a019ffea5f3363ea98d7e39e7e11e6b9917066c9d36a09a11f6fe16f812326390d8f3a54a1a6da languageName: node linkType: hard "lodash.once@npm:^4.0.0": version: 4.1.1 resolution: "lodash.once@npm:4.1.1" - checksum: d768fa9f9b4e1dc6453be99b753906f58990e0c45e7b2ca5a3b40a33111e5d17f6edf2f768786e2716af90a8e78f8f91431ab8435f761fef00f9b0c256f6d245 + checksum: 10/202f2c8c3d45e401b148a96de228e50ea6951ee5a9315ca5e15733d5a07a6b1a02d9da1e7fdf6950679e17e8ca8f7190ec33cae47beb249b0c50019d753f38f3 languageName: node linkType: hard "lodash.snakecase@npm:^4.1.1": version: 4.1.1 resolution: "lodash.snakecase@npm:4.1.1" - checksum: 1685ed3e83dda6eae5a4dcaee161a51cd210aabb3e1c09c57150e7dd8feda19e4ca0d27d0631eabe8d0f4eaa51e376da64e8c018ae5415417c5890d42feb72a8 + checksum: 10/82ed40935d840477ef8fee64f9f263f75989c6cde36b84aae817246d95826228e1b5a7f6093c51de324084f86433634c7af244cb89496633cacfe443071450d0 languageName: node linkType: hard "lodash.truncate@npm:^4.4.2": version: 4.4.2 resolution: "lodash.truncate@npm:4.4.2" - checksum: b463d8a382cfb5f0e71c504dcb6f807a7bd379ff1ea216669aa42c52fc28c54e404bfbd96791aa09e6df0de2c1d7b8f1b7f4b1a61f324d38fe98bc535aeee4f5 + checksum: 10/7a495616121449e5d2288c606b1025d42ab9979e8c93ba885e5c5802ffd4f1ebad4428c793ccc12f73e73237e85a9f5b67dd6415757546fbd5a4653ba83e25ac languageName: node linkType: hard "lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.16, lodash@npm:^4.17.19, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 languageName: node linkType: hard @@ -9340,8 +9340,8 @@ __metadata: version: 3.0.0 resolution: "log-symbols@npm:3.0.0" dependencies: - chalk: ^2.4.2 - checksum: f2322e1452d819050b11aad247660e1494f8b2219d40a964af91d5f9af1a90636f1b3d93f2952090e42af07cc5550aecabf6c1d8ec1181207e95cb66ba112361 + chalk: "npm:^2.4.2" + checksum: 10/f2322e1452d819050b11aad247660e1494f8b2219d40a964af91d5f9af1a90636f1b3d93f2952090e42af07cc5550aecabf6c1d8ec1181207e95cb66ba112361 languageName: node linkType: hard @@ -9349,9 +9349,9 @@ __metadata: version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: - chalk: ^4.1.0 - is-unicode-supported: ^0.1.0 - checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10/fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 languageName: node linkType: hard @@ -9359,34 +9359,34 @@ __metadata: version: 2.5.1 resolution: "logform@npm:2.5.1" dependencies: - "@colors/colors": 1.5.0 - "@types/triple-beam": ^1.3.2 - fecha: ^4.2.0 - ms: ^2.1.1 - safe-stable-stringify: ^2.3.1 - triple-beam: ^1.3.0 - checksum: 08fdf03be5bb69af33bac214eb4f6a0c83ad3821a30de498925fccb61e993e5a4a87470aab356ca2110c11e4643685bed5597ca5f46dd1cd11437c44a0e0e3c2 + "@colors/colors": "npm:1.5.0" + "@types/triple-beam": "npm:^1.3.2" + fecha: "npm:^4.2.0" + ms: "npm:^2.1.1" + safe-stable-stringify: "npm:^2.3.1" + triple-beam: "npm:^1.3.0" + checksum: 10/8f8add6f6a9b1cd03b7d093bf4a7577a45803c771d37ac04833d4507f79523f26e4ce70638828e7693e2fc8cd52d89a7a8e3738ed0e9762d8b3737c6ec04da39 languageName: node linkType: hard "logplease@npm:^1.2.15": version: 1.2.15 resolution: "logplease@npm:1.2.15" - checksum: c2ac90a75dfa28234f67c79a112baf3c7d7a3011a6d16b052e299ad2f37430fd17959fa116629e14ef3b56796a2dd7015802d0a835ded107ceacb0ca5a44393f + checksum: 10/76af230a8baf99285c990391eff14ddc2a5bee48a2c0ee903d2954a010fb3df3680bbef7221afcb7e6107f777aad43bea55ea427b261878e571645ba276a0fd4 languageName: node linkType: hard "long@npm:^4.0.0": version: 4.0.0 resolution: "long@npm:4.0.0" - checksum: 16afbe8f749c7c849db1f4de4e2e6a31ac6e617cead3bdc4f9605cb703cd20e1e9fc1a7baba674ffcca57d660a6e5b53a9e236d7b25a295d3855cca79cc06744 + checksum: 10/8296e2ba7bab30f9cfabb81ebccff89c819af6a7a78b4bb5a70ea411aa764ee0532f7441381549dfa6a1a98d72abe9138bfcf99f4fa41238629849bc035b845b languageName: node linkType: hard "lossless-json@npm:1.0.5": version: 1.0.5 resolution: "lossless-json@npm:1.0.5" - checksum: c26a231aaaa334dda42ef74ccf01a8558d15de815fd72fd3e47c549da11e3f47ae8f57c5ea26a298473844f889d1645a8b7835d507db430887dd598e9b0a6648 + checksum: 10/95676c867522cb813429361439fea1a32880108e6567becd8637b9af998ad88fbbd48f01bfb1f2856a26b9d07b7e1842262872b4be46475220164db2354a2cdb languageName: node linkType: hard @@ -9394,22 +9394,22 @@ __metadata: version: 2.3.6 resolution: "loupe@npm:2.3.6" dependencies: - get-func-name: ^2.0.0 - checksum: cc83f1b124a1df7384601d72d8d1f5fe95fd7a8185469fec48bb2e4027e45243949e7a013e8d91051a138451ff0552310c32aa9786e60b6a30d1e801bdc2163f + get-func-name: "npm:^2.0.0" + checksum: 10/8e695f3c99d9670d524767bc2bcbf799444b865d1d05e974d6dc53d72863c2ce9990103f311f89f04019f064e5ae7bbe70f3fba030a57d65aacfb951aad34d9f languageName: node linkType: hard "lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" - checksum: 24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac23 + checksum: 10/1c233d2da35056e8c49fae8097ee061b8c799b2f02e33c2bf32f9913c7de8fb481ab04dab7df35e94156c800f5f34e99acbf32b21781d87c3aa43ef7b748b79e languageName: node linkType: hard "lowercase-keys@npm:^3.0.0": version: 3.0.0 resolution: "lowercase-keys@npm:3.0.0" - checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 + checksum: 10/67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 languageName: node linkType: hard @@ -9417,8 +9417,8 @@ __metadata: version: 5.1.1 resolution: "lru-cache@npm:5.1.1" dependencies: - yallist: ^3.0.2 - checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb + yallist: "npm:^3.0.2" + checksum: 10/951d2673dcc64a7fb888bf3d13bc2fdf923faca97d89cdb405ba3dfff77e2b26e5798d405e78fcd7094c9e7b8b4dab2ddc5a4f8a11928af24a207b7c738ca3f8 languageName: node linkType: hard @@ -9426,43 +9426,43 @@ __metadata: version: 6.0.0 resolution: "lru-cache@npm:6.0.0" dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + yallist: "npm:^4.0.0" + checksum: 10/fc1fe2ee205f7c8855fa0f34c1ab0bcf14b6229e35579ec1fd1079f31d6fc8ef8eb6fd17f2f4d99788d7e339f50e047555551ebd5e434dda503696e7c6591825 languageName: node linkType: hard "lru-cache@npm:^7.7.1": version: 7.17.0 resolution: "lru-cache@npm:7.17.0" - checksum: 28c2a98ad313b8d61beac1f08257b6f0ca990e39d24a9bc831030b6e209447cfb11c6d9d1a774282189bfc9609d1dfd17ebe485228dd68f7b96b6b9b7740894e + checksum: 10/2139d254291809a6ee2a03b88a67084b1df0762beadc850c043562f0b769f8a9e147c5e2df97789036c463e790f7e01eec43f7bb7f708134a58e700fad1a0cb8 languageName: node linkType: hard "lru_map@npm:^0.3.3": version: 0.3.3 resolution: "lru_map@npm:0.3.3" - checksum: ca9dd43c65ed7a4f117c548028101c5b6855e10923ea9d1f635af53ad20c5868ff428c364d454a7b57fe391b89c704982275410c3c5099cca5aeee00d76e169a + checksum: 10/50f6597924a7763ab0b31192e5e9965f08ca64a0044254138e74a65aecab95047d540f73739cff489866f4310e0202c11c10fdf18b10b236472160baaa68bbb1 languageName: node linkType: hard "ltgt@npm:~2.2.0": version: 2.2.1 resolution: "ltgt@npm:2.2.1" - checksum: 7e3874296f7538bc8087b428ac4208008d7b76916354b34a08818ca7c83958c1df10ec427eeeaad895f6b81e41e24745b18d30f89abcc21d228b94f6961d50a2 + checksum: 10/10536cee1d01114cf7aadd0c24fab432a4825bb8ef091488ae6d255df916ac7f15141f6bc1e023886aea0397353f0c14608581ce0dbb57f43704f77cc33731d0 languageName: node linkType: hard "luxon@npm:^3.2.1": version: 3.2.1 resolution: "luxon@npm:3.2.1" - checksum: 3fa3def2c5f5d3032b4c46220c4da8aeb467ac979888fc9d2557adcd22195f93516b4ad5909a75862bec8dc6ddc0953b0f38e6d2f4a8ab8450ddc531a83cf20d + checksum: 10/16340e1b646c8170ff3c747e4ef7948ff9daad6fe2b442f344ccd685d853e2f81bd0b702c77a8dc600dbe9013e16af638ad334cd4551521337c2f19c32c8a527 languageName: node linkType: hard "magic-bytes.js@npm:^1.0.15": version: 1.0.17 resolution: "magic-bytes.js@npm:1.0.17" - checksum: 8afda0fee0f834a77304ca8e32e49acde4e0a03c0bee6a629959ae78c8dbf7e007e29395cefadd7205635b52bf4e9575b7c94ef015795b7d720814930723c0db + checksum: 10/3242185450f3ea18b324e7050d4ed80f42a73ba61ee15d88d0786da6c9a6aba73631967ffc234ea0e4cec3c0bf85d871b4fefd31947acb2d4fabcd59613653ab languageName: node linkType: hard @@ -9470,15 +9470,15 @@ __metadata: version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 + semver: "npm:^6.0.0" + checksum: 10/484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 languageName: node linkType: hard "make-error@npm:1.x, make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" - checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 + checksum: 10/b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 languageName: node linkType: hard @@ -9486,23 +9486,23 @@ __metadata: version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c + agentkeepalive: "npm:^4.2.1" + cacache: "npm:^16.1.0" + http-cache-semantics: "npm:^4.1.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-fetch: "npm:^2.0.3" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^7.0.0" + ssri: "npm:^9.0.0" + checksum: 10/fef5acb865a46f25ad0b5ad7d979799125db5dbb24ea811ffa850fbb804bc8e495df2237a8ec3a4fc6250e73c2f95549cca6d6d36a73b1faa61224504eb1188f languageName: node linkType: hard @@ -9510,23 +9510,23 @@ __metadata: version: 9.1.0 resolution: "make-fetch-happen@npm:9.1.0" dependencies: - agentkeepalive: ^4.1.3 - cacache: ^15.2.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^6.0.0 - minipass: ^3.1.3 - minipass-collect: ^1.0.2 - minipass-fetch: ^1.3.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.2 - promise-retry: ^2.0.1 - socks-proxy-agent: ^6.0.0 - ssri: ^8.0.0 - checksum: 0eb371c85fdd0b1584fcfdf3dc3c62395761b3c14658be02620c310305a9a7ecf1617a5e6fb30c1d081c5c8aaf177fa133ee225024313afabb7aa6a10f1e3d04 + agentkeepalive: "npm:^4.1.3" + cacache: "npm:^15.2.0" + http-cache-semantics: "npm:^4.1.0" + http-proxy-agent: "npm:^4.0.1" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^6.0.0" + minipass: "npm:^3.1.3" + minipass-collect: "npm:^1.0.2" + minipass-fetch: "npm:^1.3.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.2" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^6.0.0" + ssri: "npm:^8.0.0" + checksum: 10/a868e74fc223a78afb7a1f8115133befdffae84f07a5f5dd9317cbf9f784a8373f28829a73ae3f31060e1b0cb4944e73257733c3b10c314354060fab412b6028 languageName: node linkType: hard @@ -9534,15 +9534,15 @@ __metadata: version: 1.0.12 resolution: "makeerror@npm:1.0.12" dependencies: - tmpl: 1.0.5 - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 + tmpl: "npm:1.0.5" + checksum: 10/4c66ddfc654537333da952c084f507fa4c30c707b1635344eb35be894d797ba44c901a9cebe914aa29a7f61357543ba09b09dddbd7f65b4aee756b450f169f40 languageName: node linkType: hard "markdown-table@npm:^1.1.3": version: 1.1.3 resolution: "markdown-table@npm:1.1.3" - checksum: 292e8c956ae833c2ccb0a55cd8d87980cd657ab11cd9ff63c3fcc4d3a518d3b3882ba07410b8f477ba9e30b3f70658677e4e8acf61816dd6cfdd1f6293130664 + checksum: 10/ca94e8a84c467f9da963d1888aa298939f137d792b39259bf971d01d6fb534e02c0435e10dcccdc0b11d9e29bf6eb7dffacb007b07e3038b68b2e6eb02990fb1 languageName: node linkType: hard @@ -9550,16 +9550,16 @@ __metadata: version: 2.0.1 resolution: "matcher-collection@npm:2.0.1" dependencies: - "@types/minimatch": ^3.0.3 - minimatch: ^3.0.2 - checksum: f6d4f94bdcf773f9cbd4b7b10199a7632c434833a4c01bfb29c373e118647bb3b748aa3f20c70d6c3a715915fcc44ad4a77a9f8d5f059f3a0d15c984c0acc83d + "@types/minimatch": "npm:^3.0.3" + minimatch: "npm:^3.0.2" + checksum: 10/f6d4f94bdcf773f9cbd4b7b10199a7632c434833a4c01bfb29c373e118647bb3b748aa3f20c70d6c3a715915fcc44ad4a77a9f8d5f059f3a0d15c984c0acc83d languageName: node linkType: hard "mcl-wasm@npm:^0.7.1": version: 0.7.9 resolution: "mcl-wasm@npm:0.7.9" - checksum: 6b6ed5084156b98b2db70b223e1ba2c01953970b48a2e0c4ea3eeb9296610e6b3bfb2a2cce9e92e2d7ad61778b5f5a630e705e663835e915ba188c174a0a37fa + checksum: 10/eb689cf0e2422ef7b98e8b040ed601821aea839718c876cd734e9148ca7013adf1c869bbc9495aac351e645d314ec3bd3d3612c91f60c499c5aea8d3dd2a7e38 languageName: node linkType: hard @@ -9567,17 +9567,17 @@ __metadata: version: 1.3.5 resolution: "md5.js@npm:1.3.5" dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: 098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10/098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c languageName: node linkType: hard "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 + checksum: 10/38e0984db39139604756903a01397e29e17dcb04207bb3e081412ce725ab17338ecc47220c1b186b6bbe79a658aad1b0d41142884f5a481f36290cdefbe6aa46 languageName: node linkType: hard @@ -9585,13 +9585,13 @@ __metadata: version: 5.1.0 resolution: "memdown@npm:5.1.0" dependencies: - abstract-leveldown: ~6.2.1 - functional-red-black-tree: ~1.0.1 - immediate: ~3.2.3 - inherits: ~2.0.1 - ltgt: ~2.2.0 - safe-buffer: ~5.2.0 - checksum: 23e4414034e975eae1edd6864874bbe77501d41814fc27e8ead946c3379cb1cbea303d724083d08a6a269af9bf5d55073f1f767dfa7ad6e70465769f87e29794 + abstract-leveldown: "npm:~6.2.1" + functional-red-black-tree: "npm:~1.0.1" + immediate: "npm:~3.2.3" + inherits: "npm:~2.0.1" + ltgt: "npm:~2.2.0" + safe-buffer: "npm:~5.2.0" + checksum: 10/0b356646d8f8ba69860fdbfd747907c9c859a38a31ce5cb3d46010ed3736d54a54d1a7d37dde24b970dcdef7e6e56d68ebd06e8424923f28377797fcf825a174 languageName: node linkType: hard @@ -9599,31 +9599,31 @@ __metadata: version: 1.0.0 resolution: "memory-level@npm:1.0.0" dependencies: - abstract-level: ^1.0.0 - functional-red-black-tree: ^1.0.1 - module-error: ^1.0.1 - checksum: 80b1b7aedaf936e754adbcd7b9303018c3684fb32f9992fd967c448f145d177f16c724fbba9ed3c3590a9475fd563151eae664d69b83d2ad48714852e9fc5c72 + abstract-level: "npm:^1.0.0" + functional-red-black-tree: "npm:^1.0.1" + module-error: "npm:^1.0.1" + checksum: 10/e3293d8c67ebc0aa4b29982c5f8e3d139c5b1b04b97fa3ae98f940f91c7bdfefec9ff189742943734ebb6c7efa85fed6a4d559407b2d5751106b24cac17a23a6 languageName: node linkType: hard "memorystream@npm:^0.3.1": version: 0.3.1 resolution: "memorystream@npm:0.3.1" - checksum: f18b42440d24d09516d01466c06adf797df7873f0d40aa7db02e5fb9ed83074e5e65412d0720901d7069363465f82dc4f8bcb44f0cde271567a61426ce6ca2e9 + checksum: 10/2e34a1e35e6eb2e342f788f75f96c16f115b81ff6dd39e6c2f48c78b464dbf5b1a4c6ebfae4c573bd0f8dbe8c57d72bb357c60523be184655260d25855c03902 languageName: node linkType: hard "merge-descriptors@npm:1.0.1": version: 1.0.1 resolution: "merge-descriptors@npm:1.0.1" - checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 + checksum: 10/5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 languageName: node linkType: hard "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 + checksum: 10/6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 languageName: node linkType: hard @@ -9631,20 +9631,20 @@ __metadata: version: 4.2.4 resolution: "merkle-patricia-tree@npm:4.2.4" dependencies: - "@types/levelup": ^4.3.0 - ethereumjs-util: ^7.1.4 - level-mem: ^5.0.1 - level-ws: ^2.0.0 - readable-stream: ^3.6.0 - semaphore-async-await: ^1.5.1 - checksum: acedc7eea7bb14b97da01e8e023406ed55742f8e82bdd28d1ed821e3bd0cfed9e92f18c7cb300aee0d38f319c960026fd4d4e601f61e2a8665b73c0786d9f799 + "@types/levelup": "npm:^4.3.0" + ethereumjs-util: "npm:^7.1.4" + level-mem: "npm:^5.0.1" + level-ws: "npm:^2.0.0" + readable-stream: "npm:^3.6.0" + semaphore-async-await: "npm:^1.5.1" + checksum: 10/77770d8cce8d7b04ca5f9206e86463373ed4c4d61f0588f3cfba58e98585a0db31959dffbbec1ac8336707d26197e38c258baca31c680780fdf7fb473aef6aae languageName: node linkType: hard "methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" - checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a + checksum: 10/a385dd974faa34b5dd021b2bbf78c722881bf6f003bfe6d391d7da3ea1ed625d1ff10ddd13c57531f628b3e785be38d3eed10ad03cebd90b76932413df9a1820 languageName: node linkType: hard @@ -9652,9 +9652,9 @@ __metadata: version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: 10/a749888789fc15cac0e03273844dbd749f9f8e8d64e70c564bcf06a033129554c789bb9e30d7566d7ff6596611a08e58ac12cf2a05f6e3c9c47c50c4c7e12fa2 languageName: node linkType: hard @@ -9662,18 +9662,18 @@ __metadata: version: 4.0.1 resolution: "miller-rabin@npm:4.0.1" dependencies: - bn.js: ^4.0.0 - brorand: ^1.0.1 + bn.js: "npm:^4.0.0" + brorand: "npm:^1.0.1" bin: miller-rabin: bin/miller-rabin - checksum: 00cd1ab838ac49b03f236cc32a14d29d7d28637a53096bf5c6246a032a37749c9bd9ce7360cbf55b41b89b7d649824949ff12bc8eee29ac77c6b38eada619ece + checksum: 10/2a38ba9d1e878d94ee8a8ab3505b40e8d44fb9700a7716570fe4c8ca7e20d49b69aea579106580618c877cc6ff969eff71705042fafb47573736bf89404417bc languageName: node linkType: hard "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 languageName: node linkType: hard @@ -9681,8 +9681,8 @@ __metadata: version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + mime-db: "npm:1.52.0" + checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a languageName: node linkType: hard @@ -9691,28 +9691,28 @@ __metadata: resolution: "mime@npm:1.6.0" bin: mime: cli.js - checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 + checksum: 10/b7d98bb1e006c0e63e2c91b590fe1163b872abf8f7ef224d53dd31499c2197278a6d3d0864c45239b1a93d22feaf6f9477e9fc847eef945838150b8c02d03170 languageName: node linkType: hard "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a + checksum: 10/d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a languageName: node linkType: hard "mimic-response@npm:^1.0.0": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" - checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 + checksum: 10/034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 languageName: node linkType: hard "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 + checksum: 10/7e719047612411fe071332a7498cf0448bbe43c485c0d780046c76633a771b223ff49bd00267be122cedebb897037fdb527df72335d0d0f74724604ca70b37ad languageName: node linkType: hard @@ -9720,22 +9720,22 @@ __metadata: version: 2.19.0 resolution: "min-document@npm:2.19.0" dependencies: - dom-walk: ^0.1.0 - checksum: da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c9623 + dom-walk: "npm:^0.1.0" + checksum: 10/4e45a0686c81cc04509989235dc6107e2678a59bb48ce017d3c546d7d9a18d782e341103e66c78081dd04544704e2196e529905c41c2550bca069b69f95f07c8 languageName: node linkType: hard "minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": version: 1.0.1 resolution: "minimalistic-assert@npm:1.0.1" - checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 + checksum: 10/cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 languageName: node linkType: hard "minimalistic-crypto-utils@npm:^1.0.1": version: 1.0.1 resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed + checksum: 10/6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed languageName: node linkType: hard @@ -9743,8 +9743,8 @@ __metadata: version: 3.0.4 resolution: "minimatch@npm:3.0.4" dependencies: - brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 + brace-expansion: "npm:^1.1.7" + checksum: 10/3b3f17f76582417dd139646505f1d1bb5f148ea5191eb98fe73cd41224a678dadb94cc674c7d06b36de4ab5c303f039cfd7cd2d089348d6f70d04db169cf3770 languageName: node linkType: hard @@ -9752,8 +9752,8 @@ __metadata: version: 5.0.1 resolution: "minimatch@npm:5.0.1" dependencies: - brace-expansion: ^2.0.1 - checksum: b34b98463da4754bc526b244d680c69d4d6089451ebe512edaf6dd9eeed0279399cfa3edb19233513b8f830bf4bfcad911dddcdf125e75074100d52f724774f0 + brace-expansion: "npm:^2.0.1" + checksum: 10/2656580f18d9f38ada186196fcc72dc9076d70f7227adc664e72614d464e075dc4ae3936e6742519e09e336996ef33c6035e606888b12f65ca7fda792ddd2085 languageName: node linkType: hard @@ -9761,8 +9761,8 @@ __metadata: version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + brace-expansion: "npm:^1.1.7" + checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 languageName: node linkType: hard @@ -9770,15 +9770,15 @@ __metadata: version: 5.1.6 resolution: "minimatch@npm:5.1.6" dependencies: - brace-expansion: ^2.0.1 - checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 + brace-expansion: "npm:^2.0.1" + checksum: 10/126b36485b821daf96d33b5c821dac600cc1ab36c87e7a532594f9b1652b1fa89a1eebcaad4dff17c764dce1a7ac1531327f190fed5f97d8f6e5f889c116c429 languageName: node linkType: hard "minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" - checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 + checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f languageName: node linkType: hard @@ -9786,8 +9786,8 @@ __metadata: version: 1.0.2 resolution: "minipass-collect@npm:1.0.2" dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + minipass: "npm:^3.0.0" + checksum: 10/14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 languageName: node linkType: hard @@ -9795,14 +9795,14 @@ __metadata: version: 1.4.1 resolution: "minipass-fetch@npm:1.4.1" dependencies: - encoding: ^0.1.12 - minipass: ^3.1.0 - minipass-sized: ^1.0.3 - minizlib: ^2.0.0 + encoding: "npm:^0.1.12" + minipass: "npm:^3.1.0" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.0.0" dependenciesMeta: encoding: optional: true - checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 + checksum: 10/4c6f678d2c976c275ba35735aa18e341401d1fb94bbf38a36bb2c2d01835ac699f15b7ab1adaf4ee40a751361527d312a18853feaf9c0121f4904f811656575a languageName: node linkType: hard @@ -9810,14 +9810,14 @@ __metadata: version: 2.1.2 resolution: "minipass-fetch@npm:2.1.2" dependencies: - encoding: ^0.1.13 - minipass: ^3.1.6 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 + encoding: "npm:^0.1.13" + minipass: "npm:^3.1.6" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" dependenciesMeta: encoding: optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 + checksum: 10/8cfc589563ae2a11eebbf79121ef9a526fd078fca949ed3f1e4a51472ca4a4aad89fcea1738982ce9d7d833116ecc9c6ae9ebbd844832a94e3f4a3d4d1b9d3b9 languageName: node linkType: hard @@ -9825,8 +9825,8 @@ __metadata: version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + minipass: "npm:^3.0.0" + checksum: 10/56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf languageName: node linkType: hard @@ -9834,8 +9834,8 @@ __metadata: version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + minipass: "npm:^3.0.0" + checksum: 10/b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b languageName: node linkType: hard @@ -9843,8 +9843,8 @@ __metadata: version: 1.0.3 resolution: "minipass-sized@npm:1.0.3" dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + minipass: "npm:^3.0.0" + checksum: 10/40982d8d836a52b0f37049a0a7e5d0f089637298e6d9b45df9c115d4f0520682a78258905e5c8b180fb41b593b0a82cc1361d2c74b45f7ada66334f84d1ecfdd languageName: node linkType: hard @@ -9852,9 +9852,9 @@ __metadata: version: 2.9.0 resolution: "minipass@npm:2.9.0" dependencies: - safe-buffer: ^5.1.2 - yallist: ^3.0.0 - checksum: 077b66f31ba44fd5a0d27d12a9e6a86bff8f97a4978dedb0373167156b5599fadb6920fdde0d9f803374164d810e05e8462ce28e86abbf7f0bea293a93711fc6 + safe-buffer: "npm:^5.1.2" + yallist: "npm:^3.0.0" + checksum: 10/fdd1a77996c184991f8d2ce7c5b3979bec624e2a3225e2e1e140c4038fd65873d7eb90fb29779f8733735a8827b2686f283871a0c74c908f4f7694c56fa8dadf languageName: node linkType: hard @@ -9862,15 +9862,15 @@ __metadata: version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: - yallist: ^4.0.0 - checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + yallist: "npm:^4.0.0" + checksum: 10/a5c6ef069f70d9a524d3428af39f2b117ff8cd84172e19b754e7264a33df460873e6eb3d6e55758531580970de50ae950c496256bb4ad3691a2974cddff189f0 languageName: node linkType: hard "minipass@npm:^4.0.0": version: 4.2.0 resolution: "minipass@npm:4.2.0" - checksum: 3c3ce269eacdcecb56b5dfe4bb4ab905d60fea1af4c967c7ed54baadfdd4af03e4d926567fb655957504fb4c9e2e7adbb2dc636927dfb56c829f2b25f1b2b3dd + checksum: 10/911c421741799bb49375fdd4829cb588e0041d3bea2f6f5ba3e48be9515bbfdaf86c09d06657860c8b023065e9db4cd498bb85502cfb834581d557fb37a0d557 languageName: node linkType: hard @@ -9878,8 +9878,8 @@ __metadata: version: 1.3.3 resolution: "minizlib@npm:1.3.3" dependencies: - minipass: ^2.9.0 - checksum: b0425c04d2ae6aad5027462665f07cc0d52075f7fa16e942b4611115f9b31f02924073b7221be6f75929d3c47ab93750c63f6dc2bbe8619ceacb3de1f77732c0 + minipass: "npm:^2.9.0" + checksum: 10/9c2c47e5687d7f896431a9b5585988ef72f848b56c6a974c9489534e8f619388d500d986ef82e1c13aedd46f3a0e81b6a88110cb1b27de7524cc8dabe8885e17 languageName: node linkType: hard @@ -9887,9 +9887,9 @@ __metadata: version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10/ae0f45436fb51344dcb87938446a32fbebb540d0e191d63b35e1c773d47512e17307bf54aa88326cc6d176594d00e4423563a091f7266c2f9a6872cdc1e234d1 languageName: node linkType: hard @@ -9897,8 +9897,8 @@ __metadata: version: 5.0.1 resolution: "mkdirp-promise@npm:5.0.1" dependencies: - mkdirp: "*" - checksum: 31ddc9478216adf6d6bee9ea7ce9ccfe90356d9fcd1dfb18128eac075390b4161356d64c3a7b0a75f9de01a90aadd990a0ec8c7434036563985c4b853a053ee2 + mkdirp: "npm:*" + checksum: 10/31ddc9478216adf6d6bee9ea7ce9ccfe90356d9fcd1dfb18128eac075390b4161356d64c3a7b0a75f9de01a90aadd990a0ec8c7434036563985c4b853a053ee2 languageName: node linkType: hard @@ -9907,7 +9907,7 @@ __metadata: resolution: "mkdirp@npm:3.0.1" bin: mkdirp: dist/cjs/src/bin.js - checksum: 972deb188e8fb55547f1e58d66bd6b4a3623bf0c7137802582602d73e6480c1c2268dcbafbfb1be466e00cc7e56ac514d7fd9334b7cf33e3e2ab547c16f83a8d + checksum: 10/16fd79c28645759505914561e249b9a1f5fe3362279ad95487a4501e4467abeb714fd35b95307326b8fd03f3c7719065ef11a6f97b7285d7888306d1bd2232ba languageName: node linkType: hard @@ -9915,10 +9915,10 @@ __metadata: version: 0.5.5 resolution: "mkdirp@npm:0.5.5" dependencies: - minimist: ^1.2.5 + minimist: "npm:^1.2.5" bin: mkdirp: bin/cmd.js - checksum: 3bce20ea525f9477befe458ab85284b0b66c8dc3812f94155af07c827175948cdd8114852ac6c6d82009b13c1048c37f6d98743eb019651ee25c39acc8aabe7d + checksum: 10/3bce20ea525f9477befe458ab85284b0b66c8dc3812f94155af07c827175948cdd8114852ac6c6d82009b13c1048c37f6d98743eb019651ee25c39acc8aabe7d languageName: node linkType: hard @@ -9926,10 +9926,10 @@ __metadata: version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: - minimist: ^1.2.6 + minimist: "npm:^1.2.6" bin: mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 + checksum: 10/0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 languageName: node linkType: hard @@ -9938,7 +9938,7 @@ __metadata: resolution: "mkdirp@npm:1.0.4" bin: mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + checksum: 10/d71b8dcd4b5af2fe13ecf3bd24070263489404fe216488c5ba7e38ece1f54daf219e72a833a3a2dc404331e870e9f44963a33399589490956bff003a3404d3b2 languageName: node linkType: hard @@ -9946,8 +9946,8 @@ __metadata: version: 0.38.5 resolution: "mnemonist@npm:0.38.5" dependencies: - obliterator: ^2.0.0 - checksum: 66080afc1616866beb164e230c432964d6eed467cf37ad00e9c10161b8267928124ca8f1d0ecfea86c85568acfa62d54faaf646a86968d1135189a0fdfdd6b78 + obliterator: "npm:^2.0.0" + checksum: 10/2df34862567376acb8c2411d546ba9f109229acb2b7fe7593df6fe62194d98f124cf7ff7b2d6f457a3f0410d4d8b44389022ac853d5e5448a2603c4b12f733bf languageName: node linkType: hard @@ -9955,31 +9955,31 @@ __metadata: version: 10.2.0 resolution: "mocha@npm:10.2.0" dependencies: - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4 - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.0.1 - ms: 2.1.3 - nanoid: 3.3.3 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.2.1 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 + ansi-colors: "npm:4.1.1" + browser-stdout: "npm:1.3.1" + chokidar: "npm:3.5.3" + debug: "npm:4.3.4" + diff: "npm:5.0.0" + escape-string-regexp: "npm:4.0.0" + find-up: "npm:5.0.0" + glob: "npm:7.2.0" + he: "npm:1.2.0" + js-yaml: "npm:4.1.0" + log-symbols: "npm:4.1.0" + minimatch: "npm:5.0.1" + ms: "npm:2.1.3" + nanoid: "npm:3.3.3" + serialize-javascript: "npm:6.0.0" + strip-json-comments: "npm:3.1.1" + supports-color: "npm:8.1.1" + workerpool: "npm:6.2.1" + yargs: "npm:16.2.0" + yargs-parser: "npm:20.2.4" + yargs-unparser: "npm:2.0.0" bin: _mocha: bin/_mocha mocha: bin/mocha.js - checksum: 406c45eab122ffd6ea2003c2f108b2bc35ba036225eee78e0c784b6fa2c7f34e2b13f1dbacef55a4fdf523255d76e4f22d1b5aacda2394bd11666febec17c719 + checksum: 10/f7362898ae65e8fe716cfe62fd014b432d100c9611aaf5abe85ed14efcbfdd82f3bdf32c44bccf00c9059a264c7e8d93a69dd5b830652109052a92beffb7ea35 languageName: node linkType: hard @@ -9987,76 +9987,76 @@ __metadata: version: 7.2.0 resolution: "mocha@npm:7.2.0" dependencies: - ansi-colors: 3.2.3 - browser-stdout: 1.3.1 - chokidar: 3.3.0 - debug: 3.2.6 - diff: 3.5.0 - escape-string-regexp: 1.0.5 - find-up: 3.0.0 - glob: 7.1.3 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 3.13.1 - log-symbols: 3.0.0 - minimatch: 3.0.4 - mkdirp: 0.5.5 - ms: 2.1.1 - node-environment-flags: 1.0.6 - object.assign: 4.1.0 - strip-json-comments: 2.0.1 - supports-color: 6.0.0 - which: 1.3.1 - wide-align: 1.1.3 - yargs: 13.3.2 - yargs-parser: 13.1.2 - yargs-unparser: 1.6.0 + ansi-colors: "npm:3.2.3" + browser-stdout: "npm:1.3.1" + chokidar: "npm:3.3.0" + debug: "npm:3.2.6" + diff: "npm:3.5.0" + escape-string-regexp: "npm:1.0.5" + find-up: "npm:3.0.0" + glob: "npm:7.1.3" + growl: "npm:1.10.5" + he: "npm:1.2.0" + js-yaml: "npm:3.13.1" + log-symbols: "npm:3.0.0" + minimatch: "npm:3.0.4" + mkdirp: "npm:0.5.5" + ms: "npm:2.1.1" + node-environment-flags: "npm:1.0.6" + object.assign: "npm:4.1.0" + strip-json-comments: "npm:2.0.1" + supports-color: "npm:6.0.0" + which: "npm:1.3.1" + wide-align: "npm:1.1.3" + yargs: "npm:13.3.2" + yargs-parser: "npm:13.1.2" + yargs-unparser: "npm:1.6.0" bin: _mocha: bin/_mocha mocha: bin/mocha - checksum: d098484fe1b165bb964fdbf6b88b256c71fead47575ca7c5bcf8ed07db0dcff41905f6d2f0a05111a0441efaef9d09241a8cc1ddf7961056b28984ec63ba2874 + checksum: 10/3f7630fc5aecd1497a13ffa8ac98a5db6d91a9f0232d12f5d258c17da187ab1ec53192e4947443d96174785256036b711e0d3cd6f99fd5766b29c801836fe6c1 languageName: node linkType: hard "mock-fs@npm:^4.1.0": version: 4.14.0 resolution: "mock-fs@npm:4.14.0" - checksum: dccd976a8d753e19d3c7602ea422d1f7137def3c1128c177e1f5500fe8c50ec15fe0937cfc3a15c4577fe7adb9a37628b92da9294d13d90f08be4b669b0fca76 + checksum: 10/20facbc85bb62df02dbfc946b354fcdd8b2b2aeafef4986adab18dc9a23efccb34ce49d4dac22aaed1a24420fc50c53d77e90984cc888bcce314e18e0e21872a languageName: node linkType: hard "module-error@npm:^1.0.1, module-error@npm:^1.0.2": version: 1.0.2 resolution: "module-error@npm:1.0.2" - checksum: 5d653e35bd55b3e95f8aee2cdac108082ea892e71b8f651be92cde43e4ee86abee4fa8bd7fc3fe5e68b63926d42f63c54cd17b87a560c31f18739295575a3962 + checksum: 10/5d653e35bd55b3e95f8aee2cdac108082ea892e71b8f651be92cde43e4ee86abee4fa8bd7fc3fe5e68b63926d42f63c54cd17b87a560c31f18739295575a3962 languageName: node linkType: hard "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 + checksum: 10/0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 languageName: node linkType: hard "ms@npm:2.1.1": version: 2.1.1 resolution: "ms@npm:2.1.1" - checksum: 0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e + checksum: 10/0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e languageName: node linkType: hard "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f languageName: node linkType: hard "ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard @@ -10064,14 +10064,14 @@ __metadata: version: 3.0.0 resolution: "msgpackr-extract@npm:3.0.0" dependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64": 3.0.0 - "@msgpackr-extract/msgpackr-extract-darwin-x64": 3.0.0 - "@msgpackr-extract/msgpackr-extract-linux-arm": 3.0.0 - "@msgpackr-extract/msgpackr-extract-linux-arm64": 3.0.0 - "@msgpackr-extract/msgpackr-extract-linux-x64": 3.0.0 - "@msgpackr-extract/msgpackr-extract-win32-x64": 3.0.0 - node-gyp: latest - node-gyp-build-optional-packages: 5.0.7 + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "npm:3.0.0" + "@msgpackr-extract/msgpackr-extract-darwin-x64": "npm:3.0.0" + "@msgpackr-extract/msgpackr-extract-linux-arm": "npm:3.0.0" + "@msgpackr-extract/msgpackr-extract-linux-arm64": "npm:3.0.0" + "@msgpackr-extract/msgpackr-extract-linux-x64": "npm:3.0.0" + "@msgpackr-extract/msgpackr-extract-win32-x64": "npm:3.0.0" + node-gyp: "npm:latest" + node-gyp-build-optional-packages: "npm:5.0.7" dependenciesMeta: "@msgpackr-extract/msgpackr-extract-darwin-arm64": optional: true @@ -10087,7 +10087,7 @@ __metadata: optional: true bin: download-msgpackr-prebuilds: bin/download-prebuilds.js - checksum: 89a92c1422399ab796f31742a8b1724b4e7a766706417c7c6da30f3be2a1dff64d182ed20109987dc38520c0864c9c7607a082ae95f1d15a2fa3695aa30dcd22 + checksum: 10/d87bfd42c3429ea418f6c2683d934453f6e6d4690deddb4e6d2aabee48f20120a1ca8fac44cf42d1b1430f0de3129bd213dacc698a40ae59175d6a17ec3e6762 languageName: node linkType: hard @@ -10095,11 +10095,11 @@ __metadata: version: 1.8.3 resolution: "msgpackr@npm:1.8.3" dependencies: - msgpackr-extract: ^3.0.0 + msgpackr-extract: "npm:^3.0.0" dependenciesMeta: msgpackr-extract: optional: true - checksum: 15a3a7db3332b1a6e9b5ca71d57b862bf10c73d7b3e4f37abfe009d9b0843857cc9c625fed942f3f53d39770468c9ef92a83798e64993cb6389fd695075f3f74 + checksum: 10/b40f25bec982c8e09c4062aef2e89c79e018bc309e62eeccb4fcf6f11e7a31d032a6b77dde11899d037aa2308ca781238b7f21f229bf0e4cfe29bf4d86ffa8fb languageName: node linkType: hard @@ -10107,9 +10107,9 @@ __metadata: version: 0.7.0 resolution: "multibase@npm:0.7.0" dependencies: - base-x: ^3.0.8 - buffer: ^5.5.0 - checksum: 3a520897d706b3064b59ddee286a9e1a5b35bb19bd830f93d7ddecdbf69fa46648c8fda0fec49a5d4640b8b7ac9d5fe360417d6de2906599aa535f55bf6b8e58 + base-x: "npm:^3.0.8" + buffer: "npm:^5.5.0" + checksum: 10/a5cbbf00b8aa61bcb92a706e210d8f258e8413cff2893584fedbc316c98bf2a44b8f648b57c124ddfaa29750c3b686ee5ba973cb8da84a896c19d63101b09445 languageName: node linkType: hard @@ -10117,9 +10117,9 @@ __metadata: version: 0.6.1 resolution: "multibase@npm:0.6.1" dependencies: - base-x: ^3.0.8 - buffer: ^5.5.0 - checksum: 0e25a978d2b5cf73e4cce31d032bad85230ea99e9394d259210f676a76539316e7c51bd7dcc9d83523ec7ea1f0e7a3353c5f69397639d78be9acbefa29431faa + base-x: "npm:^3.0.8" + buffer: "npm:^5.5.0" + checksum: 10/c9e3bf20dc1b109019b94b14a76731ea0a6b0e654a4ef627ba154bfc2b8602ac43b160c44d8245d18cd6a9ed971826efb204230f22b929c8b3e72da13dbc1859 languageName: node linkType: hard @@ -10127,8 +10127,8 @@ __metadata: version: 0.5.7 resolution: "multicodec@npm:0.5.7" dependencies: - varint: ^5.0.0 - checksum: 5af1febc3bb5381c303c964a4c3bacb9d0d16615599426d58c68722c46e66a7085082995479943084322028324ad692cd70ea14b5eefb2791d325fa00ead04a3 + varint: "npm:^5.0.0" + checksum: 10/b61bbf04e1bfff180f77693661b8111bf94f65580abc455e6d83d2240c227d8c2e8af99ca93b6c02500c5da43d16e2b028dbbec1b376a85145a774f542d9ca2c languageName: node linkType: hard @@ -10136,9 +10136,9 @@ __metadata: version: 1.0.4 resolution: "multicodec@npm:1.0.4" dependencies: - buffer: ^5.6.0 - varint: ^5.0.0 - checksum: e6a2916fa76c023b1c90b32ae74f8a781cf0727f71660b245a5ed1db46add6f2ce1586bee5713b16caf0a724e81bfe0678d89910c20d3bb5fd9649dacb2be79e + buffer: "npm:^5.6.0" + varint: "npm:^5.0.0" + checksum: 10/3a78ac54d3715e6b095a1805f63b4c4e7d5bb4642445691c0c4e6442cad9f97823469634e73ee362ba748596570db1050d69d5cc74a88928b1e9658916cdfbcd languageName: node linkType: hard @@ -10146,31 +10146,31 @@ __metadata: version: 0.4.21 resolution: "multihashes@npm:0.4.21" dependencies: - buffer: ^5.5.0 - multibase: ^0.7.0 - varint: ^5.0.0 - checksum: 688731560cf7384e899dc75c0da51e426eb7d058c5ea5eb57b224720a1108deb8797f1cd7f45599344d512d2877de99dd6a7b7773a095812365dea4ffe6ebd4c + buffer: "npm:^5.5.0" + multibase: "npm:^0.7.0" + varint: "npm:^5.0.0" + checksum: 10/a482d9ba7ed0ad41db22ca589f228e4b7a30207a229a64dfc9888796752314fca00a8d03025fe40d6d73965bbb246f54b73626c5a235463e30c06c7bf7a8785f languageName: node linkType: hard "nano-json-stream-parser@npm:^0.1.2": version: 0.1.2 resolution: "nano-json-stream-parser@npm:0.1.2" - checksum: 5bfe146358c659e0aa7d5e0003416be929c9bd02ba11b1e022b78dddf25be655e33d810249c1687d2c9abdcee5cd4d00856afd1b266a5a127236c0d16416d33a + checksum: 10/00a3ce63d3b66220def9fd6c26cd495100efd155e7bda54a11f1dfd185ba6750d5ce266076e0f229bad3f5ef892e2017f24da012669f146b404a8e47a44568ec languageName: node linkType: hard "nanoassert@npm:^1.0.0": version: 1.1.0 resolution: "nanoassert@npm:1.1.0" - checksum: f360fe639db8edc422de9f5a8a7d384ba9c11e9c6fac149f7ad3b0a94e4ec9d5aa44ce55b3e4c7682658efad792604fc96c336b0e80a3590744104ba58af80c7 + checksum: 10/f360fe639db8edc422de9f5a8a7d384ba9c11e9c6fac149f7ad3b0a94e4ec9d5aa44ce55b3e4c7682658efad792604fc96c336b0e80a3590744104ba58af80c7 languageName: node linkType: hard "nanoassert@npm:^2.0.0": version: 2.0.0 resolution: "nanoassert@npm:2.0.0" - checksum: b1d366f9524405f3337192d32dda6ac0b02374e4d0550c9aad33480caf2eb3c84c06f18f41f4c5404c14f6fc1ae6b84692b4375166dcb9f2d04a2ea9b9bccba0 + checksum: 10/b1d366f9524405f3337192d32dda6ac0b02374e4d0550c9aad33480caf2eb3c84c06f18f41f4c5404c14f6fc1ae6b84692b4375166dcb9f2d04a2ea9b9bccba0 languageName: node linkType: hard @@ -10179,35 +10179,35 @@ __metadata: resolution: "nanoid@npm:3.3.3" bin: nanoid: bin/nanoid.cjs - checksum: ada019402a07464a694553c61d2dca8a4353645a7d92f2830f0d487fedff403678a0bee5323a46522752b2eab95a0bc3da98b6cccaa7c0c55cd9975130e6d6f0 + checksum: 10/c703ed58a234b68245a8a4826dd25c1453a9017d34fa28bc58e7aa8247de87d854582fa2209d7aee04084cff9ce150be8fd30300abe567dc615d4e8e735f2d99 languageName: node linkType: hard "napi-macros@npm:~2.0.0": version: 2.0.0 resolution: "napi-macros@npm:2.0.0" - checksum: 30384819386977c1f82034757014163fa60ab3c5a538094f778d38788bebb52534966279956f796a92ea771c7f8ae072b975df65de910d051ffbdc927f62320c + checksum: 10/6ffa499356a09727d4a622bc68a9c22996adfb9b95e0d4426be9084b73dd1f0dc8f78adf7e86b560ac463e3ce1707a57dd2644f858dcbb303c36fb8bb3d915b2 languageName: node linkType: hard "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" - checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d + checksum: 10/23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d languageName: node linkType: hard "negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 + checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 languageName: node linkType: hard "next-tick@npm:^1.1.0": version: 1.1.0 resolution: "next-tick@npm:1.1.0" - checksum: 83b5cf36027a53ee6d8b7f9c0782f2ba87f4858d977342bfc3c20c21629290a2111f8374d13a81221179603ffc4364f38374b5655d17b6a8f8a8c77bdea4fe8b + checksum: 10/83b5cf36027a53ee6d8b7f9c0782f2ba87f4858d977342bfc3c20c21629290a2111f8374d13a81221179603ffc4364f38374b5655d17b6a8f8a8c77bdea4fe8b languageName: node linkType: hard @@ -10215,8 +10215,8 @@ __metadata: version: 2.0.2 resolution: "node-addon-api@npm:2.0.2" dependencies: - node-gyp: latest - checksum: 31fb22d674648204f8dd94167eb5aac896c841b84a9210d614bf5d97c74ef059cc6326389cf0c54d2086e35312938401d4cc82e5fcd679202503eb8ac84814f8 + node-gyp: "npm:latest" + checksum: 10/e4ce4daac5b2fefa6b94491b86979a9c12d9cceba571d2c6df1eb5859f9da68e5dc198f128798e1785a88aafee6e11f4992dcccd4bf86bec90973927d158bd60 languageName: node linkType: hard @@ -10224,8 +10224,8 @@ __metadata: version: 3.2.1 resolution: "node-addon-api@npm:3.2.1" dependencies: - node-gyp: latest - checksum: 2369986bb0881ccd9ef6bacdf39550e07e089a9c8ede1cbc5fc7712d8e2faa4d50da0e487e333d4125f8c7a616c730131d1091676c9d499af1d74560756b4a18 + node-gyp: "npm:latest" + checksum: 10/681b52dfa3e15b0a8e5cf283cc0d8cd5fd2a57c559ae670fcfd20544cbb32f75de7648674110defcd17ab2c76ebef630aa7d2d2f930bc7a8cc439b20fe233518 languageName: node linkType: hard @@ -10233,9 +10233,9 @@ __metadata: version: 1.0.6 resolution: "node-environment-flags@npm:1.0.6" dependencies: - object.getownpropertydescriptors: ^2.0.3 - semver: ^5.7.0 - checksum: 268139ed0f7fabdca346dcb26931300ec7a1dc54a58085a849e5c78a82b94967f55df40177a69d4e819da278d98686d5c4fd49ab0d7bcff16fda25b6fffc4ca3 + object.getownpropertydescriptors: "npm:^2.0.3" + semver: "npm:^5.7.0" + checksum: 10/e179d0ff3697cd6006d426ce707060b044da93c8e4c7ce1b19d211c25cc276ba72aa36247bfe64d6e79a0264843d5df7124f0fc28e50fc904f07cc1b96f8c781 languageName: node linkType: hard @@ -10243,13 +10243,13 @@ __metadata: version: 2.6.9 resolution: "node-fetch@npm:2.6.9" dependencies: - whatwg-url: ^5.0.0 + whatwg-url: "npm:^5.0.0" peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: encoding: optional: true - checksum: acb04f9ce7224965b2b59e71b33c639794d8991efd73855b0b250921382b38331ffc9d61bce502571f6cc6e11a8905ca9b1b6d4aeb586ab093e2756a1fd190d0 + checksum: 10/4d04273c97e3829b3fb070b9b2c14c9f6ecff9afd1d3d8043fb39d1d2440b23e2ddbdbab1b2f879bf71fa23275bf5711e777256e5784d1852333965a6cea38ab languageName: node linkType: hard @@ -10257,13 +10257,13 @@ __metadata: version: 2.6.11 resolution: "node-fetch@npm:2.6.11" dependencies: - whatwg-url: ^5.0.0 + whatwg-url: "npm:^5.0.0" peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: encoding: optional: true - checksum: 249d0666a9497553384d46b5ab296ba223521ac88fed4d8a17d6ee6c2efb0fc890f3e8091cafe7f9fba8151a5b8d925db2671543b3409a56c3cd522b468b47b3 + checksum: 10/de59f077d419ecb7889c2fda6c641af99ab7d4131e7a90803b68b2911c81f77483f15d515096603a6dd3dc738b53d8c28b68d47d38c7c41770c0dbf4238fa6fe languageName: node linkType: hard @@ -10274,7 +10274,7 @@ __metadata: node-gyp-build-optional-packages: bin.js node-gyp-build-optional-packages-optional: optional.js node-gyp-build-optional-packages-test: build-test.js - checksum: bcb4537af15bcb3811914ea0db8f69284ca10db1cc7543a167a4c41ae4b9b5044b133f789fdadad0b7adc6931f6ae7def3c75b0bc7b05836881aae52400163e6 + checksum: 10/f61780b83ee665d88a1b2d0f5375d3455fabed1af4a009fd4396ed0b19ed6ad2215d4adbc76bd6eea0aafde0c72990e2cee9c888eeb28d6da2c8e5f8bce3ca0f languageName: node linkType: hard @@ -10285,7 +10285,7 @@ __metadata: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 1ecab16d9f275174d516e223f60f65ebe07540347d5c04a6a7d6921060b7f2e3af4f19463d9d1dcedc452e275c2ae71354a99405e55ebd5b655bb2f38025c728 + checksum: 10/673bd8f12694cc226747333fc181a7288e32dc96e88067bccb9ae3969ed1459fe461f85ad76d0ec8566ec1ae75c179e7a6667b0094cc78c9431ecfc95b5c24aa languageName: node linkType: hard @@ -10296,7 +10296,7 @@ __metadata: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 972a059f960253d254e0b23ce10f54c8982236fc0edcab85166d0b7f87443b2ce98391c877cfb2f6eeafcf03c538c5f4dd3e0bfff03828eb48634f58f4c64343 + checksum: 10/a2f77e622ed738209f20ee808c812fe5697c3c641b76b6a369b989a810ed40d1a7f5e7687ca0ea5987363697c284f1c75cdc8164e8cfdd5e6ff3bae17e9898ff languageName: node linkType: hard @@ -10307,7 +10307,7 @@ __metadata: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15 + checksum: 10/c8b57abe5e6e4a28dce450e3c0136bcce88d15602c33f1258ed9c9a52f156d34a00dd8864271b2f2acfd6ef4de0af3e75e5e76e771c4bc4f38dd0ee06ad178d8 languageName: node linkType: hard @@ -10315,19 +10315,19 @@ __metadata: version: 8.4.1 resolution: "node-gyp@npm:8.4.1" dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^9.1.0 - nopt: ^5.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 + env-paths: "npm:^2.2.0" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^9.1.0" + nopt: "npm:^5.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" bin: node-gyp: bin/node-gyp.js - checksum: 341710b5da39d3660e6a886b37e210d33f8282047405c2e62c277bcc744c7552c5b8b972ebc3a7d5c2813794e60cc48c3ebd142c46d6e0321db4db6c92dd0355 + checksum: 10/5ac19a7f6212c787f33bb72f889fafb1ce9d80b7ecb87b3785aebb0ff94a70cd5dbb3ecb435a308eaeb26d037c6edaf173951a9edacaadf0f4c3ae189f1e5077 languageName: node linkType: hard @@ -10335,26 +10335,26 @@ __metadata: version: 9.3.1 resolution: "node-gyp@npm:9.3.1" dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 + env-paths: "npm:^2.2.0" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^10.0.3" + nopt: "npm:^6.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" bin: node-gyp: bin/node-gyp.js - checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7 + checksum: 10/e9345b22be0a3256af87a16ba9604362cd8e4db304e67e71dd83bb8e573f3fdbaf69e359b5af572a14a98730cc3e1813679444ee029093d2a2f38ba3cac4ed7e languageName: node linkType: hard "node-int64@npm:^0.4.0": version: 0.4.0 resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e + checksum: 10/b7afc2b65e56f7035b1a2eec57ae0fbdee7d742b1cdcd0f4387562b6527a011ab1cbe9f64cc8b3cca61e3297c9637c8bf61cec2e6b8d3a711d4b5267dfafbe02 languageName: node linkType: hard @@ -10362,24 +10362,24 @@ __metadata: version: 0.5.0 resolution: "node-redis-dump2@npm:0.5.0" dependencies: - async: ^3.2.0 - ioredis: ^4.27.0 - underscore: ^1.13.1 - checksum: 94bf18128fd49186da4596f7434d66883c08df7f8d3c100739b14291ab51b9bdadd989766415cb830a3d6003dfde88dad4566c272993904c8d1a1dfda0577092 + async: "npm:^3.2.0" + ioredis: "npm:^4.27.0" + underscore: "npm:^1.13.1" + checksum: 10/592ef6e375a6919f76624bf6ba1ba7d6b25974272930cb4c418be2fea6b43dc9d3ae31b8449d0d6655d04e5b4b52c491e3660445b364f18e0f441c74b2ae3eb5 languageName: node linkType: hard "node-releases@npm:^2.0.8": version: 2.0.10 resolution: "node-releases@npm:2.0.10" - checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc + checksum: 10/d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc languageName: node linkType: hard "nofilter@npm:^3.1.0": version: 3.1.0 resolution: "nofilter@npm:3.1.0" - checksum: 58aa85a5b4b35cbb6e42de8a8591c5e338061edc9f3e7286f2c335e9e9b9b8fa7c335ae45daa8a1f3433164dc0b9a3d187fa96f9516e04a17a1f9ce722becc4f + checksum: 10/f63d87231dfda4b783db17d75b15aac948f78e65f4f1043096ef441147f6667ff74cd4b3f57ada5dbe240be282d3e9838558ac863a66cb04ef25fff7b2b4be4e languageName: node linkType: hard @@ -10387,10 +10387,10 @@ __metadata: version: 5.0.0 resolution: "nopt@npm:5.0.0" dependencies: - abbrev: 1 + abbrev: "npm:1" bin: nopt: bin/nopt.js - checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f + checksum: 10/00f9bb2d16449469ba8ffcf9b8f0eae6bae285ec74b135fec533e5883563d2400c0cd70902d0a7759e47ac031ccf206ace4e86556da08ed3f1c66dda206e9ccd languageName: node linkType: hard @@ -10398,24 +10398,24 @@ __metadata: version: 6.0.0 resolution: "nopt@npm:6.0.0" dependencies: - abbrev: ^1.0.0 + abbrev: "npm:^1.0.0" bin: nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + checksum: 10/3c1128e07cd0241ae66d6e6a472170baa9f3e84dd4203950ba8df5bafac4efa2166ce917a57ef02b01ba7c40d18b2cc64b29b225fd3640791fe07b24f0b33a32 languageName: node linkType: hard "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + checksum: 10/88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 languageName: node linkType: hard "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" - checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 + checksum: 10/5ae699402c9d5ffa330adc348fcd6fc6e6a155ab7c811b96e30b7ecab60ceef821d8f86443869671dda71bbc47f4b9625739c82ad247e883e9aefe875bfb8659 languageName: node linkType: hard @@ -10423,8 +10423,8 @@ __metadata: version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: - path-key: ^3.0.0 - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 + path-key: "npm:^3.0.0" + checksum: 10/5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 languageName: node linkType: hard @@ -10432,11 +10432,11 @@ __metadata: version: 5.0.1 resolution: "npmlog@npm:5.0.1" dependencies: - are-we-there-yet: ^2.0.0 - console-control-strings: ^1.1.0 - gauge: ^3.0.0 - set-blocking: ^2.0.0 - checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f + are-we-there-yet: "npm:^2.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^3.0.0" + set-blocking: "npm:^2.0.0" + checksum: 10/f42c7b9584cdd26a13c41a21930b6f5912896b6419ab15be88cc5721fc792f1c3dd30eb602b26ae08575694628ba70afdcf3675d86e4f450fc544757e52726ec languageName: node linkType: hard @@ -10444,11 +10444,11 @@ __metadata: version: 6.0.2 resolution: "npmlog@npm:6.0.2" dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + are-we-there-yet: "npm:^3.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^4.0.3" + set-blocking: "npm:^2.0.0" + checksum: 10/82b123677e62deb9e7472e27b92386c09e6e254ee6c8bcd720b3011013e4168bc7088e984f4fbd53cb6e12f8b4690e23e4fa6132689313e0d0dc4feea45489bb languageName: node linkType: hard @@ -10456,30 +10456,30 @@ __metadata: version: 1.7.0 resolution: "number-to-bn@npm:1.7.0" dependencies: - bn.js: 4.11.6 - strip-hex-prefix: 1.0.0 - checksum: 5b8c9dbe7b49dc7a069e5f0ba4e197257c89db11463478cb002fee7a34dc8868636952bd9f6310e5fdf22b266e0e6dffb5f9537c741734718107e90ae59b3de4 + bn.js: "npm:4.11.6" + strip-hex-prefix: "npm:1.0.0" + checksum: 10/702e8f00b6b90abd23f711056005179c3bd5ce3b063c47d468250f63ab3b9b4b82e27bff3b4642a9e71e06c717d5ed359873501746df0a64c3db1fa6d704e704 languageName: node linkType: hard "oauth-sign@npm:~0.9.0": version: 0.9.0 resolution: "oauth-sign@npm:0.9.0" - checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 + checksum: 10/1809a366d258f41fdf4ab5310cff3d1e15f96b187503bc7333cef4351de7bd0f52cb269bc95800f1fae5fb04dd886287df1471985fd67e8484729fdbcf857119 languageName: node linkType: hard "object-assign@npm:^4, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard "object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" - checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db + checksum: 10/532b0036f0472f561180fac0d04fe328ee01f57637624c83fb054f81b5bfe966cdf4200612a499ed391a7ca3c46b20a0bc3a55fc8241d944abe687c556a32b39 languageName: node linkType: hard @@ -10487,16 +10487,16 @@ __metadata: version: 1.1.5 resolution: "object-is@npm:1.1.5" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.3" + checksum: 10/75365aff5da4bebad5d20efd9f9a7a13597e603f5eb03d89da8f578c3f3937fe01c6cb5fce86c0611c48795c0841401fd37c943821db0de703c7b30a290576ad languageName: node linkType: hard "object-keys@npm:^1.0.11, object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a + checksum: 10/3d81d02674115973df0b7117628ea4110d56042e5326413e4b4313f0bcdf7dd78d4a3acef2c831463fa3796a66762c49daef306f4a0ea1af44877d7086d73bde languageName: node linkType: hard @@ -10504,11 +10504,11 @@ __metadata: version: 4.1.0 resolution: "object.assign@npm:4.1.0" dependencies: - define-properties: ^1.1.2 - function-bind: ^1.1.1 - has-symbols: ^1.0.0 - object-keys: ^1.0.11 - checksum: 648a9a463580bf48332d9a49a76fede2660ab1ee7104d9459b8a240562246da790b4151c3c073f28fda31c1fdc555d25a1d871e72be403e997e4468c91f4801f + define-properties: "npm:^1.1.2" + function-bind: "npm:^1.1.1" + has-symbols: "npm:^1.0.0" + object-keys: "npm:^1.0.11" + checksum: 10/9ca3797cdbd3ff8a196aaee7b4808f2d1802c4d3655b1a03d15ca0284fc1034d097c112c6be60a11a866bcbf728b05318326834054d36f11a17aacb15d04ec9e languageName: node linkType: hard @@ -10516,11 +10516,11 @@ __metadata: version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10/fd82d45289df0a952d772817622ecbaeb4ec933d3abb53267aede083ee38f6a395af8fadfbc569ee575115b0b7c9b286e7cfb2b7a2557b1055f7acbce513bc29 languageName: node linkType: hard @@ -10528,18 +10528,18 @@ __metadata: version: 2.1.5 resolution: "object.getownpropertydescriptors@npm:2.1.5" dependencies: - array.prototype.reduce: ^1.0.5 - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 7883e1aac1f9cd4cd85e2bb8c7aab6a60940a7cfe07b788356f301844d4967482fc81058e7bda24e1b3909cbb4879387ea9407329b78704f8937bc0b97dec58b + array.prototype.reduce: "npm:^1.0.5" + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + es-abstract: "npm:^1.20.4" + checksum: 10/3e5c77e3ac5f23a68d21fc0293d58172df9e421797f45a401fe0ad0a58a8a727e72d1f29e61943105e06b7543a8d57fd86d65fd996a13696a3f1fd36f280deab languageName: node linkType: hard "obliterator@npm:^2.0.0": version: 2.0.4 resolution: "obliterator@npm:2.0.4" - checksum: f28ad35b6d812089315f375dc3e6e5f9bebf958ebe4b10ccd471c7115cbcf595e74bdac4783ae758e5b1f47e3096427fdb37cfa7bed566b132df92ff317b9a7c + checksum: 10/5a49ce3736aa9c8ae536e14e556e347b225c71215d3d3e0b191da0386284a804b9e22c09780645f2cea3981d4cecefaa394f59f4ffd6167fe6c2f2401777e1ae languageName: node linkType: hard @@ -10547,8 +10547,8 @@ __metadata: version: 2.1.5 resolution: "oboe@npm:2.1.5" dependencies: - http-https: ^1.0.0 - checksum: e6171b33645ffc3559688a824a461952380d0b8f6a203b2daf6767647f277554a73fd7ad795629d88cd8eab68c0460aabb1e1b8b52ef80e3ff7621ac39f832ed + http-https: "npm:^1.0.0" + checksum: 10/451d0c28b45f518fc86d4689075cf74c7fea92fb09e2f994dd1208e5c5516a6958f9dc476714b61c62c959a3e7e0db8a69999c59ff63777c7a8af24fbddd0848 languageName: node linkType: hard @@ -10556,8 +10556,8 @@ __metadata: version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: - ee-first: 1.1.1 - checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + ee-first: "npm:1.1.1" + checksum: 10/8e81472c5028125c8c39044ac4ab8ba51a7cdc19a9fbd4710f5d524a74c6d8c9ded4dd0eed83f28d3d33ac1d7a6a439ba948ccb765ac6ce87f30450a26bfe2ea languageName: node linkType: hard @@ -10565,8 +10565,8 @@ __metadata: version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + wrappy: "npm:1" + checksum: 10/cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 languageName: node linkType: hard @@ -10574,8 +10574,8 @@ __metadata: version: 1.0.0 resolution: "one-time@npm:1.0.0" dependencies: - fn.name: 1.x.x - checksum: fd008d7e992bdec1c67f53a2f9b46381ee12a9b8c309f88b21f0223546003fb47e8ad7c1fd5843751920a8d276c63bd4b45670ef80c61fb3e07dbccc962b5c7d + fn.name: "npm:1.x.x" + checksum: 10/64d0160480eeae4e3b2a6fc0a02f452e05bb0cc8373a4ed56a4fc08c3939dcb91bc20075003ed499655bd16919feb63ca56f86eee7932c5251f7d629b55dfc90 languageName: node linkType: hard @@ -10583,8 +10583,8 @@ __metadata: version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 + mimic-fn: "npm:^2.1.0" + checksum: 10/e9fd0695a01cf226652f0385bf16b7a24153dbbb2039f764c8ba6d2306a8506b0e4ce570de6ad99c7a6eb49520743afdb66edd95ee979c1a342554ed49a9aadd languageName: node linkType: hard @@ -10593,28 +10593,28 @@ __metadata: resolution: "opener@npm:1.5.2" bin: opener: bin/opener-bin.js - checksum: 33b620c0d53d5b883f2abc6687dd1c5fd394d270dbe33a6356f2d71e0a2ec85b100d5bac94694198ccf5c30d592da863b2292c5539009c715a9c80c697b4f6cc + checksum: 10/0504efcd6546e14c016a261f58a68acf9f2e5c23d84865d7d5470d5169788327ceaa5386253682f533b3fba4821748aa37ecb395f3dae7acb3261b9b22e36814 languageName: node linkType: hard "os-tmpdir@npm:~1.0.2": version: 1.0.2 resolution: "os-tmpdir@npm:1.0.2" - checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d + checksum: 10/5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d languageName: node linkType: hard "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" - checksum: 3dba12b4fb4a1e3e34524535c7858fc82381bbbd0f247cc32dedc4018592a3950ce66b106d0880b4ec4c2d8d6576f98ca885dc1d7d0f274d1370be20e9523ddf + checksum: 10/7f1b64db17fc54acf359167d62898115dcf2a64bf6b3b038e4faf36fc059e5ed762fb9624df8ed04b25bee8de3ab8d72dea9879a2a960cd12e23c420a4aca6ed languageName: node linkType: hard "p-cancelable@npm:^3.0.0": version: 3.0.0 resolution: "p-cancelable@npm:3.0.0" - checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 + checksum: 10/a5eab7cf5ac5de83222a014eccdbfde65ecfb22005ee9bc242041f0b4441e07fac7629432c82f48868aa0f8413fe0df6c6067c16f76bf9217cd8dc651923c93d languageName: node linkType: hard @@ -10622,8 +10622,8 @@ __metadata: version: 1.3.0 resolution: "p-limit@npm:1.3.0" dependencies: - p-try: ^1.0.0 - checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd + p-try: "npm:^1.0.0" + checksum: 10/eb9d9bc378d48ab1998d2a2b2962a99eddd3e3726c82d3258ecc1a475f22907968edea4fec2736586d100366a001c6bb449a2abe6cd65e252e9597394f01e789 languageName: node linkType: hard @@ -10631,8 +10631,8 @@ __metadata: version: 2.3.0 resolution: "p-limit@npm:2.3.0" dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + p-try: "npm:^2.0.0" + checksum: 10/84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 languageName: node linkType: hard @@ -10640,8 +10640,8 @@ __metadata: version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + yocto-queue: "npm:^0.1.0" + checksum: 10/7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 languageName: node linkType: hard @@ -10649,8 +10649,8 @@ __metadata: version: 2.0.0 resolution: "p-locate@npm:2.0.0" dependencies: - p-limit: ^1.1.0 - checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 + p-limit: "npm:^1.1.0" + checksum: 10/e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 languageName: node linkType: hard @@ -10658,8 +10658,8 @@ __metadata: version: 3.0.0 resolution: "p-locate@npm:3.0.0" dependencies: - p-limit: ^2.0.0 - checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae + p-limit: "npm:^2.0.0" + checksum: 10/83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae languageName: node linkType: hard @@ -10667,8 +10667,8 @@ __metadata: version: 4.1.0 resolution: "p-locate@npm:4.1.0" dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 + p-limit: "npm:^2.2.0" + checksum: 10/513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 languageName: node linkType: hard @@ -10676,15 +10676,15 @@ __metadata: version: 5.0.0 resolution: "p-locate@npm:5.0.0" dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + p-limit: "npm:^3.0.2" + checksum: 10/1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 languageName: node linkType: hard "p-map@npm:^2.1.0": version: 2.1.0 resolution: "p-map@npm:2.1.0" - checksum: 9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d + checksum: 10/9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d languageName: node linkType: hard @@ -10692,43 +10692,43 @@ __metadata: version: 4.0.0 resolution: "p-map@npm:4.0.0" dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + aggregate-error: "npm:^3.0.0" + checksum: 10/7ba4a2b1e24c05e1fc14bbaea0fc6d85cf005ae7e9c9425d4575550f37e2e584b1af97bcde78eacd7559208f20995988d52881334db16cf77bc1bcf68e48ed7c languageName: node linkType: hard "p-try@npm:^1.0.0": version: 1.0.0 resolution: "p-try@npm:1.0.0" - checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 + checksum: 10/20d9735f57258158df50249f172c77fe800d31e80f11a3413ac9e68ccbe6b11798acb3f48f2df8cea7ba2b56b753ce695a4fe2a2987c3c7691c44226b6d82b6f languageName: node linkType: hard "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + checksum: 10/f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae languageName: node linkType: hard "pako@npm:^2.0.2": version: 2.1.0 resolution: "pako@npm:2.1.0" - checksum: 71666548644c9a4d056bcaba849ca6fd7242c6cf1af0646d3346f3079a1c7f4a66ffec6f7369ee0dc88f61926c10d6ab05da3e1fca44b83551839e89edd75a3e + checksum: 10/38a04991d0ec4f4b92794a68b8c92bf7340692c5d980255c92148da96eb3e550df7a86a7128b5ac0c65ecddfe5ef3bbe9c6dab13e1bc315086e759b18f7c1401 languageName: node linkType: hard "parse-cache-control@npm:^1.0.1": version: 1.0.1 resolution: "parse-cache-control@npm:1.0.1" - checksum: 5a70868792124eb07c2dd07a78fcb824102e972e908254e9e59ce59a4796c51705ff28196d2b20d3b7353d14e9f98e65ed0e4eda9be072cc99b5297dc0466fee + checksum: 10/13171cd97395bdcb9ad29e0b82a789f2313663f2392ab4f699c97ecd2059e18c00834b9c12c9b42f6b0f22bc3c9395d16db9d2e3db7e21538ad5cf2e5ec9fdbe languageName: node linkType: hard "parse-headers@npm:^2.0.0": version: 2.0.5 resolution: "parse-headers@npm:2.0.5" - checksum: 3e97f01e4c7f960bfbfd0ee489f0bd8d3c72b6c814f1f79b66abec2cca8eaf8e4ecd89deba0b6e61266469aed87350bc932001181c01ff8c29a59e696abe251f + checksum: 10/210b13bc0f99cf6f1183896f01de164797ac35b2720c9f1c82a3e2ceab256f87b9048e8e16a14cfd1b75448771f8379cd564bd1674a179ab0168c90005d4981b languageName: node linkType: hard @@ -10736,74 +10736,74 @@ __metadata: version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: - "@babel/code-frame": ^7.0.0 - error-ex: ^1.3.1 - json-parse-even-better-errors: ^2.3.0 - lines-and-columns: ^1.1.6 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10/62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 languageName: node linkType: hard "parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 + checksum: 10/407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 languageName: node linkType: hard "path-browserify@npm:^1.0.0": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" - checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 + checksum: 10/7e7368a5207e7c6b9051ef045711d0dc3c2b6203e96057e408e6e74d09f383061010d2be95cb8593fe6258a767c3e9fc6b2bfc7ce8d48ae8c3d9f6994cca9ad8 languageName: node linkType: hard "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a + checksum: 10/96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a languageName: node linkType: hard "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 + checksum: 10/505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 languageName: node linkType: hard "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + checksum: 10/060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 languageName: node linkType: hard "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + checksum: 10/55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 languageName: node linkType: hard "path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + checksum: 10/49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a languageName: node linkType: hard "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" - checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce + checksum: 10/701c99e1f08e3400bea4d701cf6f03517474bb1b608da71c78b1eb261415b645c5670dfae49808c89e12cea2dccd113b069f040a80de012da0400191c6dbd1c8 languageName: node linkType: hard "pathval@npm:^1.1.1": version: 1.1.1 resolution: "pathval@npm:1.1.1" - checksum: 090e3147716647fb7fb5b4b8c8e5b55e5d0a6086d085b6cd23f3d3c01fcf0ff56fd3cc22f2f4a033bd2e46ed55d61ed8379e123b42afe7d531a2a5fc8bb556d6 + checksum: 10/b50a4751068aa3a5428f5a0b480deecedc6f537666a3630a0c2ae2d5e7c0f4bf0ee77b48404441ec1220bef0c91625e6030b3d3cf5a32ab0d9764018d1d9dbb6 languageName: node linkType: hard @@ -10811,40 +10811,40 @@ __metadata: version: 3.1.2 resolution: "pbkdf2@npm:3.1.2" dependencies: - create-hash: ^1.1.2 - create-hmac: ^1.1.4 - ripemd160: ^2.0.1 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92 + create-hash: "npm:^1.1.2" + create-hmac: "npm:^1.1.4" + ripemd160: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10/40bdf30df1c9bb1ae41ec50c11e480cf0d36484b7c7933bf55e4451d1d0e3f09589df70935c56e7fccc5702779a0d7b842d012be8c08a187b44eb24d55bb9460 languageName: node linkType: hard "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" - checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 + checksum: 10/534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 languageName: node linkType: hard "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 + checksum: 10/a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 languageName: node linkType: hard "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc languageName: node linkType: hard "pirates@npm:^4.0.4": version: 4.0.5 resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 + checksum: 10/3728bae0cf6c18c3d25f5449ee8c5bc1a6a83bca688abe0e1654ce8c069bfd408170397cef133ed9ec8b0faeb4093c5c728d0e72ab7b3385256cd87008c40364 languageName: node linkType: hard @@ -10852,8 +10852,8 @@ __metadata: version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + find-up: "npm:^4.0.0" + checksum: 10/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 languageName: node linkType: hard @@ -10862,7 +10862,7 @@ __metadata: resolution: "prettier@npm:2.8.4" bin: prettier: bin-prettier.js - checksum: c173064bf3df57b6d93d19aa98753b9b9dd7657212e33b41ada8e2e9f9884066bb9ca0b4005b89b3ab137efffdf8fbe0b462785aba20364798ff4303aadda57e + checksum: 10/57aedf9eea2ea3a4091c7867c8192d268614c395826c323c1fee7841b3ebab6b299c034b5a083f908d8a995ba7fc5c633ecc4b90c8fd56615c0c054a73d8c6b3 languageName: node linkType: hard @@ -10870,24 +10870,24 @@ __metadata: version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: - "@jest/schemas": ^29.6.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10/dea96bc83c83cd91b2bfc55757b6b2747edcaac45b568e46de29deee80742f17bc76fe8898135a70d904f4928eafd8bb693cd1da4896e8bdd3c5e82cadf1d2bb languageName: node linkType: hard "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf + checksum: 10/1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf languageName: node linkType: hard "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 + checksum: 10/dbaa7e8d1d5cf375c36963ff43116772a989ef2bb47c9bdee20f38fd8fc061119cf38140631cf90c781aca4d3f0f0d2c834711952b728953f04fd7d238f59f5b languageName: node linkType: hard @@ -10895,15 +10895,15 @@ __metadata: version: 14.2.0 resolution: "prom-client@npm:14.2.0" dependencies: - tdigest: ^0.1.1 - checksum: d4c04e57616c72643dd02862d0d4bde09cf8869a19d0aef5e7b785e6e27d02439b66cdc165e3492f62d579fa91579183820870cc757a09b99399d2d02f46b9f1 + tdigest: "npm:^0.1.1" + checksum: 10/892eb83eb860945f3ee55bc19bb73e4a64cb63d95e28336141f49fb90a05354765b4ac4a8ba046fd895690f0bf231de1289caf180647cefdfd0d767f34725d97 languageName: node linkType: hard "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 + checksum: 10/1560d413ea20c5a74f3631d39ba8cbd1972b9228072a755d01e1f5ca5110382d9af76a1582d889445adc6e75bb5ac4886b56dc4b6eae51b30145d7bb1ac7505b languageName: node linkType: hard @@ -10911,9 +10911,9 @@ __metadata: version: 2.0.1 resolution: "promise-retry@npm:2.0.1" dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 languageName: node linkType: hard @@ -10921,8 +10921,8 @@ __metadata: version: 8.3.0 resolution: "promise@npm:8.3.0" dependencies: - asap: ~2.0.6 - checksum: a69f0ddbddf78ffc529cffee7ad950d307347615970564b17988ce43fbe767af5c738a9439660b24a9a8cbea106c0dcbb6c2b20e23b7e96a8e89e5c2679e94d5 + asap: "npm:~2.0.6" + checksum: 10/55e9d0d723c66810966bc055c6c77a3658c0af7e4a8cc88ea47aeaf2949ca0bd1de327d9c631df61236f5406ad478384fa19a77afb3f88c0303eba9e5eb0a8d8 languageName: node linkType: hard @@ -10930,9 +10930,9 @@ __metadata: version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10/c52536521a4d21eff4f2f2aa4572446cad227464066365a7167e52ccf8d9839c099f9afec1aba0eed3d5a2514b3e79e0b3e7a1dc326b9acde6b75d27ed74b1a9 languageName: node linkType: hard @@ -10940,23 +10940,23 @@ __metadata: version: 6.11.3 resolution: "protobufjs@npm:6.11.3" dependencies: - "@protobufjs/aspromise": ^1.1.2 - "@protobufjs/base64": ^1.1.2 - "@protobufjs/codegen": ^2.0.4 - "@protobufjs/eventemitter": ^1.1.0 - "@protobufjs/fetch": ^1.1.0 - "@protobufjs/float": ^1.0.2 - "@protobufjs/inquire": ^1.1.0 - "@protobufjs/path": ^1.1.2 - "@protobufjs/pool": ^1.1.0 - "@protobufjs/utf8": ^1.1.0 - "@types/long": ^4.0.1 - "@types/node": ">=13.7.0" - long: ^4.0.0 + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/long": "npm:^4.0.1" + "@types/node": "npm:>=13.7.0" + long: "npm:^4.0.0" bin: pbjs: bin/pbjs pbts: bin/pbts - checksum: 4a6ce1964167e4c45c53fd8a312d7646415c777dd31b4ba346719947b88e61654912326101f927da387d6b6473ab52a7ea4f54d6f15d63b31130ce28e2e15070 + checksum: 10/ab7efcdc4d2e43ffad92272cf8c7bed7b8abfa75b00d059024abe7af446e7151bf71c265347b06dc21136187682c86cd1214e1fcf057ed3fc8142c8a6c47b613 languageName: node linkType: hard @@ -10964,23 +10964,23 @@ __metadata: version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 + forwarded: "npm:0.2.0" + ipaddr.js: "npm:1.9.1" + checksum: 10/f24a0c80af0e75d31e3451398670d73406ec642914da11a2965b80b1898ca6f66a0e3e091a11a4327079b2b268795f6fa06691923fef91887215c3d0e8ea3f68 languageName: node linkType: hard "prr@npm:~1.0.1": version: 1.0.1 resolution: "prr@npm:1.0.1" - checksum: 3bca2db0479fd38f8c4c9439139b0c42dcaadcc2fbb7bb8e0e6afaa1383457f1d19aea9e5f961d5b080f1cfc05bfa1fe9e45c97a1d3fd6d421950a73d3108381 + checksum: 10/3bca2db0479fd38f8c4c9439139b0c42dcaadcc2fbb7bb8e0e6afaa1383457f1d19aea9e5f961d5b080f1cfc05bfa1fe9e45c97a1d3fd6d421950a73d3108381 languageName: node linkType: hard "psl@npm:^1.1.28": version: 1.9.0 resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d + checksum: 10/d07879d4bfd0ac74796306a8e5a36a93cfb9c4f4e8ee8e63fbb909066c192fe1008cd8f12abd8ba2f62ca28247949a20c8fb32e1d18831d9e71285a1569720f9 languageName: node linkType: hard @@ -10988,37 +10988,37 @@ __metadata: version: 3.0.0 resolution: "pump@npm:3.0.0" dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10/e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 languageName: node linkType: hard "punycode@npm:1.3.2": version: 1.3.2 resolution: "punycode@npm:1.3.2" - checksum: b8807fd594b1db33335692d1f03e8beeddde6fda7fbb4a2e32925d88d20a3aa4cd8dcc0c109ccaccbd2ba761c208dfaaada83007087ea8bfb0129c9ef1b99ed6 + checksum: 10/5c57d588c60679fd1b9400c75de06e327723f2b38e21e195027ba7a59006725f7b817dce5b26d47c7f8c1c842d28275aa59955a06d2e467cffeba70b7e0576bb languageName: node linkType: hard "punycode@npm:2.1.0": version: 2.1.0 resolution: "punycode@npm:2.1.0" - checksum: d125d8f86cd89303c33bad829388c49ca23197e16ccf8cd398dcbd81b026978f6543f5066c66825b25b1dfea7790a42edbeea82908e103474931789714ab86cd + checksum: 10/012f9443fe56baf485db702d0d07cef7d89c0670ce1ac4da8fb8b5bd3677e42a8f5d2b35f595ffa31ba843661c9c6766f2feb1e1e3393e1ff1033120d0f94d60 languageName: node linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.3.0 resolution: "punycode@npm:2.3.0" - checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 + checksum: 10/d4e7fbb96f570c57d64b09a35a1182c879ac32833de7c6926a2c10619632c1377865af3dab5479f59d51da18bcd5035a20a5ef6ceb74020082a3e78025d9a9ca languageName: node linkType: hard "pure-rand@npm:^6.0.0": version: 6.0.3 resolution: "pure-rand@npm:6.0.3" - checksum: d08701cfd1528c5f9cdca996776c498c92767722561f9b8f9e62645d5025c8a3bf60b90f76f262aaab124e6bb1d58e1b0850722dbca2846a19b708801956e56b + checksum: 10/68e6ebbc918d0022870cc436c26fd07b8ae6a71acc9aa83145d6e2ec0022e764926cbffc70c606fd25213c3b7234357d10458939182fb6568c2a364d1098cf34 languageName: node linkType: hard @@ -11026,8 +11026,8 @@ __metadata: version: 6.10.3 resolution: "qs@npm:6.10.3" dependencies: - side-channel: ^1.0.4 - checksum: 0fac5e6c7191d0295a96d0e83c851aeb015df7e990e4d3b093897d3ac6c94e555dbd0a599739c84d7fa46d7fee282d94ba76943983935cf33bba6769539b8019 + side-channel: "npm:^1.0.4" + checksum: 10/73d07bfd77f07bec3750dca5e6d165cba0c87ce3e4688bb26e5e462e725ab1289ecdb69164b0b4a4d1b913e2a3ae6b22acbb8b2feb5c8f31bd76f2380f3dc23d languageName: node linkType: hard @@ -11035,15 +11035,15 @@ __metadata: version: 6.11.0 resolution: "qs@npm:6.11.0" dependencies: - side-channel: ^1.0.4 - checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 + side-channel: "npm:^1.0.4" + checksum: 10/5a3bfea3e2f359ede1bfa5d2f0dbe54001aa55e40e27dc3e60fab814362d83a9b30758db057c2011b6f53a2d4e4e5150194b5bac45372652aecb3e3c0d4b256e languageName: node linkType: hard "qs@npm:~6.5.2": version: 6.5.3 resolution: "qs@npm:6.5.3" - checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb17655692 + checksum: 10/485c990fba7ad17671e16c92715fb064c1600337738f5d140024eb33a49fbc1ed31890d3db850117c760caeb9c9cc9f4ba22a15c20dd119968e41e3d3fe60b28 languageName: node linkType: hard @@ -11051,31 +11051,31 @@ __metadata: version: 5.1.1 resolution: "query-string@npm:5.1.1" dependencies: - decode-uri-component: ^0.2.0 - object-assign: ^4.1.0 - strict-uri-encode: ^1.0.0 - checksum: 4ac760d9778d413ef5f94f030ed14b1a07a1708dd13fd3bc54f8b9ef7b425942c7577f30de0bf5a7d227ee65a9a0350dfa3a43d1d266880882fb7ce4c434a4dd + decode-uri-component: "npm:^0.2.0" + object-assign: "npm:^4.1.0" + strict-uri-encode: "npm:^1.0.0" + checksum: 10/8834591ed02c324ac10397094c2ae84a3d3460477ef30acd5efe03b1afbf15102ccc0829ab78cc58ecb12f70afeb7a1f81e604487a9ad4859742bb14748e98cc languageName: node linkType: hard "querystring@npm:0.2.0": version: 0.2.0 resolution: "querystring@npm:0.2.0" - checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69 + checksum: 10/37b91720be8c8de87b49d1a68f0ceafbbeda6efe6334ce7aad080b0b4111f933a40650b8a6669c1bc629cd8bb37c67cb7b5a42ec0758662efbce44b8faa1766d languageName: node linkType: hard "queue-microtask@npm:^1.2.2, queue-microtask@npm:^1.2.3": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + checksum: 10/72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b languageName: node linkType: hard "quick-lru@npm:^5.1.1": version: 5.1.1 resolution: "quick-lru@npm:5.1.1" - checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed + checksum: 10/a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed languageName: node linkType: hard @@ -11083,10 +11083,10 @@ __metadata: version: 0.0.16 resolution: "r1csfile@npm:0.0.16" dependencies: - "@iden3/bigarray": 0.0.2 - fastfile: 0.0.18 - ffjavascript: 0.2.22 - checksum: fff8bd137069eb7464391a2e0aa8c0e76c73a8b3d4eea6458e1a56d17b007bc2717b89f7d0f5c2a74c71b3eafdd140f40f5bb64653e25e9a85762f16c377c75b + "@iden3/bigarray": "npm:0.0.2" + fastfile: "npm:0.0.18" + ffjavascript: "npm:0.2.22" + checksum: 10/4a7f7ca6ebe527e490224fece104f6a6fe9b4c063bdd62b820475a4ea7830b669f4639978dd328c65a9f04b6fb4e409f0d6a44e198fa122f4ebcd1c791206b96 languageName: node linkType: hard @@ -11094,11 +11094,11 @@ __metadata: version: 0.0.32 resolution: "r1csfile@npm:0.0.32" dependencies: - "@iden3/bigarray": 0.0.2 - "@iden3/binfileutils": 0.0.8 - fastfile: 0.0.19 - ffjavascript: 0.2.35 - checksum: 9ed82928daee3556c992d699875d0e05ac7a04ee9c42aa864d65e539f019a249f146441d264abb0ba0949df1be502cbe2678f336c21c4e4f13a12949fd0152eb + "@iden3/bigarray": "npm:0.0.2" + "@iden3/binfileutils": "npm:0.0.8" + fastfile: "npm:0.0.19" + ffjavascript: "npm:0.2.35" + checksum: 10/cbe89906c1533ece6be3f987b716b6d340403ec776bf8ee52d4c6492c8a91a2e2a2b6746fe729379c08cacd2c15f7cc5d6a3fec2fcc358c7d1c995484d11dd88 languageName: node linkType: hard @@ -11106,11 +11106,11 @@ __metadata: version: 0.0.33 resolution: "r1csfile@npm:0.0.33" dependencies: - "@iden3/bigarray": 0.0.2 - "@iden3/binfileutils": 0.0.8 - fastfile: 0.0.19 - ffjavascript: 0.2.39 - checksum: 3b7d9fe5906c56cfb77c4f2dc94d62b79df945e5513a1282536bb0f6de5470335333e694f187dbb7a09ad55783c1ea1307aef92eff82fa198a5f931117097f9d + "@iden3/bigarray": "npm:0.0.2" + "@iden3/binfileutils": "npm:0.0.8" + fastfile: "npm:0.0.19" + ffjavascript: "npm:0.2.39" + checksum: 10/97a8da6b9f9741c0dffb8fdcc3df6bc4f5e05c00f10800f59c115c828fa68eed75728ee0a81b385f4b4a5f667fde2384c78eb9891c5d372b17ab515c455425e1 languageName: node linkType: hard @@ -11118,11 +11118,11 @@ __metadata: version: 0.0.37 resolution: "r1csfile@npm:0.0.37" dependencies: - "@iden3/bigarray": 0.0.2 - "@iden3/binfileutils": 0.0.11 - fastfile: 0.0.20 - ffjavascript: 0.2.55 - checksum: 975e367fa80c7671c87ad88efbfd11231f41292d151b1e97d10af30e39cb52cef4567783569e37ee7c43184ba3b2fae6a955bf5462b4c441a69675abd05f65d8 + "@iden3/bigarray": "npm:0.0.2" + "@iden3/binfileutils": "npm:0.0.11" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.55" + checksum: 10/e18f049797b0736b28293a4e9c7f3e47b720de7a7a98340acb49fc9d450398532b06411159599f5b66aaf01f334c4b3c553d40bbe528146331663c7a3552dee2 languageName: node linkType: hard @@ -11130,11 +11130,11 @@ __metadata: version: 0.0.40 resolution: "r1csfile@npm:0.0.40" dependencies: - "@iden3/bigarray": 0.0.2 - "@iden3/binfileutils": 0.0.11 - fastfile: 0.0.20 - ffjavascript: 0.2.55 - checksum: 24035139a072f54e4ecde2e7f1f713bff42d54221e3bfa881b3e4191db570a7e489a7ccd1831308ad01672c111e90d9b37eefccd4ef31844cf3f09b2c67d12ce + "@iden3/bigarray": "npm:0.0.2" + "@iden3/binfileutils": "npm:0.0.11" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.55" + checksum: 10/83ab7e92a61b2b8d69f268ba76cc806e588ddf6523d6a2c38aadf6b1ae2db3bdd21aca9ca80c7625889c743d6727ec07baaaa9a27e8b031eff9d3151b57d5020 languageName: node linkType: hard @@ -11142,11 +11142,11 @@ __metadata: version: 0.0.45 resolution: "r1csfile@npm:0.0.45" dependencies: - "@iden3/bigarray": 0.0.2 - "@iden3/binfileutils": 0.0.11 - fastfile: 0.0.20 - ffjavascript: 0.2.57 - checksum: ae2d7ab3f2c37640aea2b4f45753d1f2258f5d904a51d7aaff67c32a931c3e90d22d257e8f10752044fa36b3ac31516f60e503f858913a625015b9b05575ba47 + "@iden3/bigarray": "npm:0.0.2" + "@iden3/binfileutils": "npm:0.0.11" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.57" + checksum: 10/fa7ab753d0b14ebf7505f1242c409254a0eb3acf739260929b61a93d57b76b695aaca4104996cc7d05f742a14933f1614f173b0d40f70f21d93751b35ea51791 languageName: node linkType: hard @@ -11154,15 +11154,15 @@ __metadata: version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 + safe-buffer: "npm:^5.1.0" + checksum: 10/4efd1ad3d88db77c2d16588dc54c2b52fd2461e70fe5724611f38d283857094fe09040fa2c9776366803c3152cf133171b452ef717592b65631ce5dc3a2bdafc languageName: node linkType: hard "range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 + checksum: 10/ce21ef2a2dd40506893157970dc76e835c78cf56437e26e19189c48d5291e7279314477b06ac38abd6a401b661a6840f7b03bd0b1249da9b691deeaa15872c26 languageName: node linkType: hard @@ -11170,11 +11170,11 @@ __metadata: version: 2.5.1 resolution: "raw-body@npm:2.5.1" dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10/280bedc12db3490ecd06f740bdcf66093a07535374b51331242382c0e130bb273ebb611b7bc4cba1b4b4e016cc7b1f4b05a6df885a6af39c2bc3b94c02291c84 languageName: node linkType: hard @@ -11182,18 +11182,18 @@ __metadata: version: 2.5.2 resolution: "raw-body@npm:2.5.2" dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10/863b5171e140546a4d99f349b720abac4410338e23df5e409cfcc3752538c9caf947ce382c89129ba976f71894bd38b5806c774edac35ebf168d02aa1ac11a95 languageName: node linkType: hard "react-is@npm:^18.0.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" - checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e + checksum: 10/200cd65bf2e0be7ba6055f647091b725a45dd2a6abef03bf2380ce701fd5edccee40b49b9d15edab7ac08a762bf83cb4081e31ec2673a5bfb549a36ba21570df languageName: node linkType: hard @@ -11201,14 +11201,14 @@ __metadata: version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42 + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10/8500dd3a90e391d6c5d889256d50ec6026c059fadee98ae9aa9b86757d60ac46fff24fafb7a39fa41d54cb39d8be56cc77be202ebd4cd8ffcf4cb226cbaa40d4 languageName: node linkType: hard @@ -11216,10 +11216,10 @@ __metadata: version: 3.6.1 resolution: "readable-stream@npm:3.6.1" dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: b7ab0508dba3c37277b9e43c0a970ea27635375698859a687f558c3c9393154b6c4f39c3aa5689641de183fffa26771bc1a45878ddde0236ad18fc8fdfde50ea + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10/4f430e96aca6f77026e9c60f026d0ba459f96307d6d33e62f328c1a5f5b47637faa50c1c5a2d5f35bdd160ff21f600459288a7abc6f345d11ff7afe64a2cd2e9 languageName: node linkType: hard @@ -11227,8 +11227,8 @@ __metadata: version: 3.2.0 resolution: "readdirp@npm:3.2.0" dependencies: - picomatch: ^2.0.4 - checksum: 0456a4465a13eb5eaf40f0e0836b1bc6b9ebe479b48ba6f63a738b127a1990fb7b38f3ec4b4b6052f9230f976bc0558f12812347dc6b42ce4d548cfe82a9b6f3 + picomatch: "npm:^2.0.4" + checksum: 10/3efe893b62a2fac6a5c5b7a5ef7247a7894ed4cf21c1b7115fce6f61139da3b7fa8ae81d1ff9df035c6364175935163608f44efa23e3955c7074025396e9960e languageName: node linkType: hard @@ -11236,29 +11236,29 @@ __metadata: version: 3.6.0 resolution: "readdirp@npm:3.6.0" dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + picomatch: "npm:^2.2.1" + checksum: 10/196b30ef6ccf9b6e18c4e1724b7334f72a093d011a99f3b5920470f0b3406a51770867b3e1ae9711f227ef7a7065982f6ee2ce316746b2cb42c88efe44297fe7 languageName: node linkType: hard "readline-browserify@npm:0.0.4": version: 0.0.4 resolution: "readline-browserify@npm:0.0.4" - checksum: f0b974f05a0259a20ebe6b3b70b58d1394be2f9235d897145d7b7500b4c42e312c7c3ec153260e48c1c87a827206c3210a92e179c66961dbe71c6784638a803a + checksum: 10/a8d27614440f532327b0ff677bc8758f546f8a513c12ed6b4188df3ced891017cc52916b6bfbf7819e2f8ae18732744f38fdb6d15691beeab7e665c808f79f28 languageName: node linkType: hard "readline@npm:^1.3.0": version: 1.3.0 resolution: "readline@npm:1.3.0" - checksum: dfaf8e6ac20408ea00d650e95f7bb47f77c4c62dd12ed7fb51731ee84532a2f3675fcdc4cab4923dc1eef227520a2e082a093215190907758bea9f585b19438e + checksum: 10/2cb7c274333fe1ed55e1bd06c670a32bd9eae5324d8e1fafb9af5c128dfde85601d59defe47947788b0682d5e9efeae6b88ea5fe233d5236a02f382a0b0ad4c3 languageName: node linkType: hard "readonly-date@npm:^1.0.0": version: 1.0.0 resolution: "readonly-date@npm:1.0.0" - checksum: 78481e2abf3c2f9bc526029458aee3e2b1c476ca1434c4cc9db5c9aba51bf8f1323c1995d764ff01f2055b01f13e05416b2e14b387f644b0a5a56554c3ee9d0a + checksum: 10/70a42fd3dbc94a2823e79a415fa46ced7d961b39e33fc0654b2cc774ee56e67a7a6fa3d268ba0f5d2268fdd21b65512142c6fa91e5c21ad526fc3c1b7c019e07 languageName: node linkType: hard @@ -11266,8 +11266,8 @@ __metadata: version: 0.6.2 resolution: "rechoir@npm:0.6.2" dependencies: - resolve: ^1.1.6 - checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b + resolve: "npm:^1.1.6" + checksum: 10/fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b languageName: node linkType: hard @@ -11275,48 +11275,48 @@ __metadata: version: 0.8.0 resolution: "redis-commander@npm:0.8.0" dependencies: - async: 3.2.3 - bcrypt: ~5.0.0 - bcryptjs: 2.4.3 - body-parser: 1.20.0 - clipboard: 2.0.10 - cmdparser: 0.0.3 - config: 3.3.7 - dateformat: 3.0.3 - ejs: 3.1.7 - express: 4.18.1 - express-partials: 0.3.0 - inflection: 1.13.2 - ioredis: 4.28.5 - jquery.json-viewer: 1.5.0 - jsonwebtoken: 8.5.1 - jstree: 3.3.12 - lodash.isequal: 4.5.0 - lossless-json: 1.0.5 - node-redis-dump2: 0.5.0 - opener: 1.5.2 - readline-browserify: 0.0.4 - yargs: 17.4.1 + async: "npm:3.2.3" + bcrypt: "npm:~5.0.0" + bcryptjs: "npm:2.4.3" + body-parser: "npm:1.20.0" + clipboard: "npm:2.0.10" + cmdparser: "npm:0.0.3" + config: "npm:3.3.7" + dateformat: "npm:3.0.3" + ejs: "npm:3.1.7" + express: "npm:4.18.1" + express-partials: "npm:0.3.0" + inflection: "npm:1.13.2" + ioredis: "npm:4.28.5" + jquery.json-viewer: "npm:1.5.0" + jsonwebtoken: "npm:8.5.1" + jstree: "npm:3.3.12" + lodash.isequal: "npm:4.5.0" + lossless-json: "npm:1.0.5" + node-redis-dump2: "npm:0.5.0" + opener: "npm:1.5.2" + readline-browserify: "npm:0.0.4" + yargs: "npm:17.4.1" dependenciesMeta: bcrypt: optional: true bin: redis-commander: bin/redis-commander.js - checksum: 6736538ed0f6a051ed018ac2cfd55128d6a86932b0de317ce81d56984f004b005c1f3921864be555d6740df7e1324ee77f6e9cef3fc83f88d64b0170f5eff8db + checksum: 10/20d2d890801364e7aeebda67c6962f23a0c4a404c565de180dd465468fe655d622d997639cb0277727f4c99fd34e875f7242946f4abf2857cd739e8e182eedc0 languageName: node linkType: hard "redis-commands@npm:1.7.0": version: 1.7.0 resolution: "redis-commands@npm:1.7.0" - checksum: d1ff7fbcb5e54768c77f731f1d49679d2a62c3899522c28addb4e2e5813aea8bcac3f22519d71d330224c3f2937f935dfc3d8dc65e90db0f5fe22dc2c1515aa7 + checksum: 10/c3c86ecefb7552d4333024dba8e0f1f6516568c2a74fd41643768781fb909524c7a581027d75e2456be1f0b7f08505c4c2252c6234abe044626455ef645c9459 languageName: node linkType: hard "redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": version: 1.2.0 resolution: "redis-errors@npm:1.2.0" - checksum: f28ac2692113f6f9c222670735aa58aeae413464fd58ccf3fce3f700cae7262606300840c802c64f2b53f19f65993da24dc918afc277e9e33ac1ff09edb394f4 + checksum: 10/001c11f63ddd52d7c80eb4f4ede3a9433d29a458a7eea06b9154cb37c9802a218d93b7988247aa8c958d4b5d274b18354e8853c148f1096fda87c6e675cfd3ee languageName: node linkType: hard @@ -11324,8 +11324,8 @@ __metadata: version: 3.0.0 resolution: "redis-parser@npm:3.0.0" dependencies: - redis-errors: ^1.0.0 - checksum: 89290ae530332f2ae37577647fa18208d10308a1a6ba750b9d9a093e7398f5e5253f19855b64c98757f7129cccce958e4af2573fdc33bad41405f87f1943459a + redis-errors: "npm:^1.0.0" + checksum: 10/b10846844b4267f19ce1a6529465819c3d78c3e89db7eb0c3bb4eb19f83784797ec411274d15a77dbe08038b48f95f76014b83ca366dc955a016a3a0a0234650 languageName: node linkType: hard @@ -11333,20 +11333,20 @@ __metadata: version: 4.6.5 resolution: "redis@npm:4.6.5" dependencies: - "@redis/bloom": 1.2.0 - "@redis/client": 1.5.6 - "@redis/graph": 1.1.0 - "@redis/json": 1.0.4 - "@redis/search": 1.1.2 - "@redis/time-series": 1.0.4 - checksum: 81696673a4c3acefcde310289ac83f40fe974af76f6d2f2a682befd6486128f8870f48b9e6fee1213cecfba9ac705649d27b750e853809d734cccce05868f1b7 + "@redis/bloom": "npm:1.2.0" + "@redis/client": "npm:1.5.6" + "@redis/graph": "npm:1.1.0" + "@redis/json": "npm:1.0.4" + "@redis/search": "npm:1.1.2" + "@redis/time-series": "npm:1.0.4" + checksum: 10/2b427aadaa8888b0ac88a3dd51217ff16b76967329ee397259b591b5b0666d01a7c5e07a000a7e1dfec85480884ef03bdceb19cfe1b4437230dcc9ff6cb85dd1 languageName: node linkType: hard "reduce-flatten@npm:^2.0.0": version: 2.0.0 resolution: "reduce-flatten@npm:2.0.0" - checksum: 64393ef99a16b20692acfd60982d7fdbd7ff8d9f8f185c6023466444c6dd2abb929d67717a83cec7f7f8fb5f46a25d515b3b2bf2238fdbfcdbfd01d2a9e73cb8 + checksum: 10/64393ef99a16b20692acfd60982d7fdbd7ff8d9f8f185c6023466444c6dd2abb929d67717a83cec7f7f8fb5f46a25d515b3b2bf2238fdbfcdbfd01d2a9e73cb8 languageName: node linkType: hard @@ -11354,10 +11354,10 @@ __metadata: version: 1.4.3 resolution: "regexp.prototype.flags@npm:1.4.3" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.3" + functions-have-names: "npm:^1.2.2" + checksum: 10/3cde7cd22f0cf9d04db0b77c825b14824c6e7d2ec77e17e8dba707ad1b3c70bb3f2ac5b4cad3c0932045ba61cb2fd1b8ef84a49140e952018bdae065cc001670 languageName: node linkType: hard @@ -11365,8 +11365,8 @@ __metadata: version: 2.0.0 resolution: "req-cwd@npm:2.0.0" dependencies: - req-from: ^2.0.0 - checksum: c44f9dea0b0f7d3a72be18a04f7769e0eefbadca363e3a346c1c02b79745126c871e1f6970357b3e731c26740aad8344bf80fb3ce055a2bcf8ca85ad2b44f519 + req-from: "npm:^2.0.0" + checksum: 10/c44f9dea0b0f7d3a72be18a04f7769e0eefbadca363e3a346c1c02b79745126c871e1f6970357b3e731c26740aad8344bf80fb3ce055a2bcf8ca85ad2b44f519 languageName: node linkType: hard @@ -11374,8 +11374,8 @@ __metadata: version: 2.0.0 resolution: "req-from@npm:2.0.0" dependencies: - resolve-from: ^3.0.0 - checksum: 4c369881a2296e23e71668ed089c5d93b37652fe900ec9f1e1f5c1da65f6bca4ee271e97ba2b806fdea50219e011995d1df3c80a7209015cc1e1fc622507f140 + resolve-from: "npm:^3.0.0" + checksum: 10/4c369881a2296e23e71668ed089c5d93b37652fe900ec9f1e1f5c1da65f6bca4ee271e97ba2b806fdea50219e011995d1df3c80a7209015cc1e1fc622507f140 languageName: node linkType: hard @@ -11383,10 +11383,10 @@ __metadata: version: 1.1.4 resolution: "request-promise-core@npm:1.1.4" dependencies: - lodash: ^4.17.19 + lodash: "npm:^4.17.19" peerDependencies: request: ^2.34 - checksum: c798bafd552961e36fbf5023b1d081e81c3995ab390f1bc8ef38a711ba3fe4312eb94dbd61887073d7356c3499b9380947d7f62faa805797c0dc50f039425699 + checksum: 10/79714e46b078c8de539c4de13e78878a3c7e3f33e194547c5ec3f0c8e47b0b222aa1718bbd2dbfb1a7990149041c6cc0be6c5916e03d99f4e75939f2a840046e languageName: node linkType: hard @@ -11394,12 +11394,12 @@ __metadata: version: 1.0.9 resolution: "request-promise-native@npm:1.0.9" dependencies: - request-promise-core: 1.1.4 - stealthy-require: ^1.1.1 - tough-cookie: ^2.3.3 + request-promise-core: "npm:1.1.4" + stealthy-require: "npm:^1.1.1" + tough-cookie: "npm:^2.3.3" peerDependencies: request: ^2.34 - checksum: 3e2c694eefac88cb20beef8911ad57a275ab3ccbae0c4ca6c679fffb09d5fd502458aab08791f0814ca914b157adab2d4e472597c97a73be702918e41725ed69 + checksum: 10/6df0cf75cbddd08b568e462570fb63033f040efdf961f39af572e52821a831a13ee9027db7ba78f1d980759cc7913f2a12a34424deac5a0ec56c5d8ebbf45391 languageName: node linkType: hard @@ -11407,55 +11407,55 @@ __metadata: version: 2.88.2 resolution: "request@npm:2.88.2" dependencies: - aws-sign2: ~0.7.0 - aws4: ^1.8.0 - caseless: ~0.12.0 - combined-stream: ~1.0.6 - extend: ~3.0.2 - forever-agent: ~0.6.1 - form-data: ~2.3.2 - har-validator: ~5.1.3 - http-signature: ~1.2.0 - is-typedarray: ~1.0.0 - isstream: ~0.1.2 - json-stringify-safe: ~5.0.1 - mime-types: ~2.1.19 - oauth-sign: ~0.9.0 - performance-now: ^2.1.0 - qs: ~6.5.2 - safe-buffer: ^5.1.2 - tough-cookie: ~2.5.0 - tunnel-agent: ^0.6.0 - uuid: ^3.3.2 - checksum: 4e112c087f6eabe7327869da2417e9d28fcd0910419edd2eb17b6acfc4bfa1dad61954525949c228705805882d8a98a86a0ea12d7f739c01ee92af7062996983 + aws-sign2: "npm:~0.7.0" + aws4: "npm:^1.8.0" + caseless: "npm:~0.12.0" + combined-stream: "npm:~1.0.6" + extend: "npm:~3.0.2" + forever-agent: "npm:~0.6.1" + form-data: "npm:~2.3.2" + har-validator: "npm:~5.1.3" + http-signature: "npm:~1.2.0" + is-typedarray: "npm:~1.0.0" + isstream: "npm:~0.1.2" + json-stringify-safe: "npm:~5.0.1" + mime-types: "npm:~2.1.19" + oauth-sign: "npm:~0.9.0" + performance-now: "npm:^2.1.0" + qs: "npm:~6.5.2" + safe-buffer: "npm:^5.1.2" + tough-cookie: "npm:~2.5.0" + tunnel-agent: "npm:^0.6.0" + uuid: "npm:^3.3.2" + checksum: 10/005b8b237b56f1571cfd4ecc09772adaa2e82dcb884fc14ea2bb25e23dbf7c2009f9929e0b6d3fd5802e33ed8ee705a3b594c8f9467c1458cd973872bf89db8e languageName: node linkType: hard "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 + checksum: 10/a72468e2589270d91f06c7d36ec97a88db53ae5d6fe3787fadc943f0b0276b10347f89b363b2a82285f650bdcc135ad4a257c61bdd4d00d6df1fa24875b0ddaf languageName: node linkType: hard "require-from-string@npm:^2.0.0, require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" - checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b + checksum: 10/839a3a890102a658f4cb3e7b2aa13a1f80a3a976b512020c3d1efc418491c48a886b6e481ea56afc6c4cb5eef678f23b2a4e70575e7534eccadf5e30ed2e56eb languageName: node linkType: hard "require-main-filename@npm:^2.0.0": version: 2.0.0 resolution: "require-main-filename@npm:2.0.0" - checksum: e9e294695fea08b076457e9ddff854e81bffbe248ed34c1eec348b7abbd22a0d02e8d75506559e2265e96978f3c4720bd77a6dad84755de8162b357eb6c778c7 + checksum: 10/8604a570c06a69c9d939275becc33a65676529e1c3e5a9f42d58471674df79357872b96d70bb93a0380a62d60dc9031c98b1a9dad98c946ffdd61b7ac0c8cedd languageName: node linkType: hard "resolve-alpn@npm:^1.0.0, resolve-alpn@npm:^1.2.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" - checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 + checksum: 10/744e87888f0b6fa0b256ab454ca0b9c0b80808715e2ef1f3672773665c92a941f6181194e30ccae4a8cd0adbe0d955d3f133102636d2ee0cca0119fec0bc9aec languageName: node linkType: hard @@ -11463,29 +11463,29 @@ __metadata: version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" dependencies: - resolve-from: ^5.0.0 - checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 + resolve-from: "npm:^5.0.0" + checksum: 10/546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 languageName: node linkType: hard "resolve-from@npm:^3.0.0": version: 3.0.0 resolution: "resolve-from@npm:3.0.0" - checksum: fff9819254d2d62b57f74e5c2ca9c0bdd425ca47287c4d801bc15f947533148d858229ded7793b0f59e61e49e782fffd6722048add12996e1bd4333c29669062 + checksum: 10/c4189f1592a777f7d51c1ff6153df18b5d062c831fb0c623b4b87736c8a73c08e4eaab19e807399287040791f3e7aa0877f05f9d86739d3ef1ef0c727e9fe06c languageName: node linkType: hard "resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + checksum: 10/be18a5e4d76dd711778664829841cde690971d02b6cbae277735a09c1c28f407b99ef6ef3cd585a1e6546d4097b28df40ed32c4a287b9699dcf6d7f208495e23 languageName: node linkType: hard "resolve.exports@npm:^2.0.0": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" - checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 + checksum: 10/f1cc0b6680f9a7e0345d783e0547f2a5110d8336b3c2a4227231dd007271ffd331fd722df934f017af90bae0373920ca0d4005da6f76cb3176c8ae426370f893 languageName: node linkType: hard @@ -11493,8 +11493,8 @@ __metadata: version: 1.17.0 resolution: "resolve@npm:1.17.0" dependencies: - path-parse: ^1.0.6 - checksum: 9ceaf83b3429f2d7ff5d0281b8d8f18a1f05b6ca86efea7633e76b8f76547f33800799dfdd24434942dec4fbd9e651ed3aef577d9a6b5ec87ad89c1060e24759 + path-parse: "npm:^1.0.6" + checksum: 10/74141da8c56192fd46f6aa887864f8fd74c1755425174526610cb775177278bb414c6f6feb3051ccd73d774d2ae124c6c97e463e30d7ffd9a87f7da202b851dd languageName: node linkType: hard @@ -11502,34 +11502,34 @@ __metadata: version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 + is-core-module: "npm:^2.9.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e + checksum: 10/4adcfac33f0baf6fc46d6c3a11acfad5c9345eab8bb7280d65672dc40a9694ddab6d18be2feebccf6cfc581bedd7ebfa792f6bc86db1903a41d328c23161bd23 languageName: node linkType: hard -"resolve@patch:resolve@1.17.0#~builtin": +"resolve@patch:resolve@npm%3A1.17.0#optional!builtin": version: 1.17.0 - resolution: "resolve@patch:resolve@npm%3A1.17.0#~builtin::version=1.17.0&hash=07638b" + resolution: "resolve@patch:resolve@npm%3A1.17.0#optional!builtin::version=1.17.0&hash=c3c19d" dependencies: - path-parse: ^1.0.6 - checksum: 6fd799f282ddf078c4bc20ce863e3af01fa8cb218f0658d9162c57161a2dbafe092b13015b9a4c58d0e1e801cf7aa7a4f13115fea9db98c3f9a0c43e429bad6f + path-parse: "npm:^1.0.6" + checksum: 10/02e87fe9233d169fdc5220572c7b8933c9e23323aaecfd5b8d0b106a7f09dc676dd4d380e66c72b1369489292bcb337b13aad28b480a1bde5a5c040ff16758ea languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.20.0#~builtin": +"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin": version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" + resolution: "resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=c3c19d" dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 + is-core-module: "npm:^2.9.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b + checksum: 10/551dd500765cce767c583747f5f21ceb51d437f539b01aee96d6ec39eb2c68a8ff5d646b083d690fe428a81329856bc1bbdb094379b8df4b3f10e7e1f6aa3839 languageName: node linkType: hard @@ -11537,15 +11537,15 @@ __metadata: version: 2.0.1 resolution: "responselike@npm:2.0.1" dependencies: - lowercase-keys: ^2.0.0 - checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a + lowercase-keys: "npm:^2.0.0" + checksum: 10/b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a languageName: node linkType: hard "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 languageName: node linkType: hard @@ -11553,10 +11553,10 @@ __metadata: version: 2.7.1 resolution: "rimraf@npm:2.7.1" dependencies: - glob: ^7.1.3 + glob: "npm:^7.1.3" bin: rimraf: ./bin.js - checksum: cdc7f6eacb17927f2a075117a823e1c5951792c6498ebcce81ca8203454a811d4cf8900314154d3259bb8f0b42ab17f67396a8694a54cae3283326e57ad250cd + checksum: 10/4586c296c736483e297da7cffd19475e4a3e41d07b1ae124aad5d687c79e4ffa716bdac8732ed1db942caf65271cee9dd39f8b639611de161a2753e2112ffe1d languageName: node linkType: hard @@ -11564,10 +11564,10 @@ __metadata: version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: - glob: ^7.1.3 + glob: "npm:^7.1.3" bin: rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + checksum: 10/063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5 languageName: node linkType: hard @@ -11575,9 +11575,9 @@ __metadata: version: 2.0.2 resolution: "ripemd160@npm:2.0.2" dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - checksum: 006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc393 + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + checksum: 10/006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc393 languageName: node linkType: hard @@ -11585,10 +11585,10 @@ __metadata: version: 2.2.6 resolution: "rlp@npm:2.2.6" dependencies: - bn.js: ^4.11.1 + bn.js: "npm:^4.11.1" bin: rlp: bin/rlp - checksum: 2601225df0fe7aa3b497b33a12fd9fbaf8fb1d2989ecc5c091918ed93ee77d1c3fab20ddd3891a9ca66a8ba66d993e6079be6fb31f450fcf38ba30873102ca46 + checksum: 10/ae575c0e297591e3d11e259de004ebd4de27a22c68064fba9f63073a731ec3bf9a12b2658feaba3f9857d5b58a5033b85ee50d950f767d625ebb09ddaa0f77a6 languageName: node linkType: hard @@ -11596,10 +11596,10 @@ __metadata: version: 2.2.7 resolution: "rlp@npm:2.2.7" dependencies: - bn.js: ^5.2.0 + bn.js: "npm:^5.2.0" bin: rlp: bin/rlp - checksum: 3db4dfe5c793f40ac7e0be689a1f75d05e6f2ca0c66189aeb62adab8c436b857ab4420a419251ee60370d41d957a55698fc5e23ab1e1b41715f33217bc4bb558 + checksum: 10/cf1919a2dc99f336191b3363b76299db567c192b7ee3c6f5c722728c34f65577883c9c88eeb7a1bfcbc26693c8a4f1fb0662e79ee86f0c98dd258d6987303498 languageName: node linkType: hard @@ -11607,29 +11607,29 @@ __metadata: version: 1.1.0 resolution: "run-parallel-limit@npm:1.1.0" dependencies: - queue-microtask: ^1.2.2 - checksum: 672c3b87e7f939c684b9965222b361421db0930223ed1e43ebf0e7e48ccc1a022ea4de080bef4d5468434e2577c33b7681e3f03b7593fdc49ad250a55381123c + queue-microtask: "npm:^1.2.2" + checksum: 10/672c3b87e7f939c684b9965222b361421db0930223ed1e43ebf0e7e48ccc1a022ea4de080bef4d5468434e2577c33b7681e3f03b7593fdc49ad250a55381123c languageName: node linkType: hard "rustbn.js@npm:~0.2.0": version: 0.2.0 resolution: "rustbn.js@npm:0.2.0" - checksum: 2148e7ba34e70682907ee29df4784639e6eb025481b2c91249403b7ec57181980161868d9aa24822a5075dd1bb5a180dfedc77309e5f0d27b6301f9b563af99a + checksum: 10/2d7d09f6bea2b5fb05142724f5cfc65c8d96b6e57a29874060733d041789aabbd236617c05d8569a43a2997eea850b4323527e92368c46d04a671ef0b2319fe9 languageName: node linkType: hard "safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 languageName: node linkType: hard "safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c + checksum: 10/7eb5b48f2ed9a594a4795677d5a150faa7eb54483b2318b568dc0c4fc94092a6cce5be02c7288a0500a156282f5276d5688bce7259299568d1053b2150ef374a languageName: node linkType: hard @@ -11637,38 +11637,38 @@ __metadata: version: 1.0.0 resolution: "safe-regex-test@npm:1.0.0" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-regex: ^1.1.4 - checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + is-regex: "npm:^1.1.4" + checksum: 10/c7248dfa07891aa634c8b9c55da696e246f8589ca50e7fd14b22b154a106e83209ddf061baf2fa45ebfbd485b094dc7297325acfc50724de6afe7138451b42a9 languageName: node linkType: hard "safe-stable-stringify@npm:^2.3.1": version: 2.4.3 resolution: "safe-stable-stringify@npm:2.4.3" - checksum: 3aeb64449706ee1f5ad2459fc99648b131d48e7a1fbb608d7c628020177512dc9d94108a5cb61bbc953985d313d0afea6566d243237743e02870490afef04b43 + checksum: 10/a6c192bbefe47770a11072b51b500ed29be7b1c15095371c1ee1dc13e45ce48ee3c80330214c56764d006c485b88bd0b24940d868948170dddc16eed312582d8 languageName: node linkType: hard "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 languageName: node linkType: hard "scrypt-js@npm:2.0.4": version: 2.0.4 resolution: "scrypt-js@npm:2.0.4" - checksum: 679e8940953ebbef40863bfcc58f1d3058d4b7af0ca9bd8062d8213c30e14db59c6ebfc82a85fbd3b90b6d46b708be4c53b9c4bb200b6f50767dc08a846315a9 + checksum: 10/584c42ca17f8da7d9eec483b56743e868d1e795634f9581169f0b40c7abc5d4266dfb9d59d8f0a65479885c74fd44f3a99aca5a5048d3c4f7d33d88389aa2014 languageName: node linkType: hard "scrypt-js@npm:3.0.1, scrypt-js@npm:^3.0.0, scrypt-js@npm:^3.0.1": version: 3.0.1 resolution: "scrypt-js@npm:3.0.1" - checksum: b7c7d1a68d6ca946f2fbb0778e0c4ec63c65501b54023b2af7d7e9f48fdb6c6580d6f7675cd53bda5944c5ebc057560d5a6365079752546865defb3b79dea454 + checksum: 10/2f8aa72b7f76a6f9c446bbec5670f80d47497bccce98474203d89b5667717223eeb04a50492ae685ed7adc5a060fc2d8f9fd988f8f7ebdaf3341967f3aeff116 languageName: node linkType: hard @@ -11676,32 +11676,32 @@ __metadata: version: 4.0.3 resolution: "secp256k1@npm:4.0.3" dependencies: - elliptic: ^6.5.4 - node-addon-api: ^2.0.0 - node-gyp: latest - node-gyp-build: ^4.2.0 - checksum: 21e219adc0024fbd75021001358780a3cc6ac21273c3fcaef46943af73969729709b03f1df7c012a0baab0830fb9a06ccc6b42f8d50050c665cb98078eab477b + elliptic: "npm:^6.5.4" + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + checksum: 10/8b45820cd90fd2f95cc8fdb9bf8a71e572de09f2311911ae461a951ffa9e30c99186a129d0f1afeb380dd67eca0c10493f8a7513c39063fda015e99995088e3b languageName: node linkType: hard "seedrandom@npm:3.0.5": version: 3.0.5 resolution: "seedrandom@npm:3.0.5" - checksum: 728b56bc3bc1b9ddeabd381e449b51cb31bdc0aa86e27fcd0190cea8c44613d5bcb2f6bb63ed79f78180cbe791c20b8ec31a9627f7b7fc7f476fd2bdb7e2da9f + checksum: 10/acad5e516c04289f61c2fb9848f449b95f58362b75406b79ec51e101ec885293fc57e3675d2f39f49716336559d7190f7273415d185fead8cd27b171ebf7d8fb languageName: node linkType: hard "select@npm:^1.1.2": version: 1.1.2 resolution: "select@npm:1.1.2" - checksum: 4346151e94f226ea6131e44e68e6d837f3fdee64831b756dd657cc0b02f4cb5107f867cb34a1d1216ab7737d0bf0645d44546afb030bbd8d64e891f5e4c4814e + checksum: 10/4346151e94f226ea6131e44e68e6d837f3fdee64831b756dd657cc0b02f4cb5107f867cb34a1d1216ab7737d0bf0645d44546afb030bbd8d64e891f5e4c4814e languageName: node linkType: hard "semaphore-async-await@npm:^1.5.1": version: 1.5.1 resolution: "semaphore-async-await@npm:1.5.1" - checksum: 2dedf7c59ba5f2da860fed95a81017189de6257cbe06c9de0ff2e610a3ae427e9bde1ab7685a62b03ebc28982dee437110492215d75fd6dc8257ce7a38e66b74 + checksum: 10/f11508ce157bffd5cb18e28c7319e88b13f8fb994c784ace133e153a1e1f783227ed2bbbd596874503d58e12d79d52e43e57da6655a497b53989fed514b2e3d0 languageName: node linkType: hard @@ -11710,7 +11710,7 @@ __metadata: resolution: "semver@npm:5.7.1" bin: semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf + checksum: 10/fbc71cf00736480ca0dd67f2527cda6e0fde5447af00bd2ce06cb522d510216603a63ed0c6c87d8904507c1a4e8113e628a71424ebd9e0fd7d345ee8ed249690 languageName: node linkType: hard @@ -11719,7 +11719,7 @@ __metadata: resolution: "semver@npm:6.3.0" bin: semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 + checksum: 10/8dd72e7c7cdbd8cff66b5530eeff9eec2342b127eef2c956259cdf66b85addf4829e6e4a045ca30d974d075595b0b03faa6318a597307eb3984649516b98b501 languageName: node linkType: hard @@ -11727,10 +11727,10 @@ __metadata: version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: - lru-cache: ^6.0.0 + lru-cache: "npm:^6.0.0" bin: semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 + checksum: 10/c8c04a4d41d30cffa7277904e0ad6998623dd61e36bca9578b0128d8c683b705a3924beada55eae7fa004fb30a9359a53a4ead2b68468d778b602f3b1a28f8e3 languageName: node linkType: hard @@ -11738,10 +11738,10 @@ __metadata: version: 7.6.0 resolution: "semver@npm:7.6.0" dependencies: - lru-cache: ^6.0.0 + lru-cache: "npm:^6.0.0" bin: semver: bin/semver.js - checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c + checksum: 10/1b41018df2d8aca5a1db4729985e8e20428c650daea60fcd16e926e9383217d00f574fab92d79612771884a98d2ee2a1973f49d630829a8d54d6570defe62535 languageName: node linkType: hard @@ -11749,20 +11749,20 @@ __metadata: version: 0.18.0 resolution: "send@npm:0.18.0" dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: ~1.2.1 - statuses: 2.0.1 - checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:2.0.1" + checksum: 10/ec66c0ad109680ad8141d507677cfd8b4e40b9559de23191871803ed241718e99026faa46c398dcfb9250676076573bd6bfe5d0ec347f88f4b7b8533d1d391cb languageName: node linkType: hard @@ -11770,8 +11770,8 @@ __metadata: version: 6.0.0 resolution: "serialize-javascript@npm:6.0.0" dependencies: - randombytes: ^2.1.0 - checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 + randombytes: "npm:^2.1.0" + checksum: 10/ed3dabfbb565c48c9eb1ca8fe58f0d256902ab70a8a605be634ddd68388d5f728bb0bd1268e94fab628748ba8ad8392f01b05f3cbe1e4878b5c58c669fd3d1b4 languageName: node linkType: hard @@ -11779,11 +11779,11 @@ __metadata: version: 1.15.0 resolution: "serve-static@npm:1.15.0" dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.18.0 - checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + parseurl: "npm:~1.3.3" + send: "npm:0.18.0" + checksum: 10/699b2d4c29807a51d9b5e0f24955346911437aebb0178b3c4833ad30d3eca93385ff9927254f5c16da345903cad39d9cd4a532198c95a5129cc4ed43911b15a4 languageName: node linkType: hard @@ -11791,40 +11791,40 @@ __metadata: version: 0.1.12 resolution: "servify@npm:0.1.12" dependencies: - body-parser: ^1.16.0 - cors: ^2.8.1 - express: ^4.14.0 - request: ^2.79.0 - xhr: ^2.3.3 - checksum: f90e8f4e31b2981b31e3fa8be0b570b0876136b4cf818ba3bfb65e1bfb3c54cb90a0c30898a7c2974b586800bd26ff525c838a8c170148d9e6674c2170f535d8 + body-parser: "npm:^1.16.0" + cors: "npm:^2.8.1" + express: "npm:^4.14.0" + request: "npm:^2.79.0" + xhr: "npm:^2.3.3" + checksum: 10/d61b145034aa26c143d7081a56c544aceff256eead27a5894b6785346254438d2b387ac7411bf664024d258779a00dc6c5d9da65f8d60382dac23a8cba0b0d9e languageName: node linkType: hard "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + checksum: 10/8980ebf7ae9eb945bb036b6e283c547ee783a1ad557a82babf758a065e2fb6ea337fd82cac30dd565c1e606e423f30024a19fff7afbf4977d784720c4026a8ef languageName: node linkType: hard "setimmediate@npm:1.0.4": version: 1.0.4 resolution: "setimmediate@npm:1.0.4" - checksum: 1d3726183ade73fa1c83bd562b05ae34e97802229d5b9292cde7ed03846524f04eb0fdd2131cc159103e3a7afb7c4e958b35bf960e3c4846fa50d94a3278be6f + checksum: 10/eb11c0c817a9373d07a0501c298ebcac72755a1d6444b44d5b7827bc1f81848801fae14067dd14b1cc0529fbc7a794d1a661b99dfbc83784dbbccdf0914a7e63 languageName: node linkType: hard "setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" - checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd + checksum: 10/76e3f5d7f4b581b6100ff819761f04a984fa3f3990e72a6554b57188ded53efce2d3d6c0932c10f810b7c59414f85e2ab3c11521877d1dea1ce0b56dc906f485 languageName: node linkType: hard "setprototypeof@npm:1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" - checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 + checksum: 10/fde1630422502fbbc19e6844346778f99d449986b2f9cdcceb8326730d2f3d9964dbcb03c02aaadaefffecd0f2c063315ebea8b3ad895914bf1afc1747fc172e languageName: node linkType: hard @@ -11832,11 +11832,11 @@ __metadata: version: 2.4.11 resolution: "sha.js@npm:2.4.11" dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" bin: sha.js: ./bin.js - checksum: ebd3f59d4b799000699097dadb831c8e3da3eb579144fd7eb7a19484cbcbb7aca3c68ba2bb362242eb09e33217de3b4ea56e4678184c334323eca24a58e3ad07 + checksum: 10/d833bfa3e0a67579a6ce6e1bc95571f05246e0a441dd8c76e3057972f2a3e098465687a4369b07e83a0375a88703577f71b5b2e966809e67ebc340dbedb478c7 languageName: node linkType: hard @@ -11844,9 +11844,9 @@ __metadata: version: 1.1.1 resolution: "sha1@npm:1.1.1" dependencies: - charenc: ">= 0.0.1" - crypt: ">= 0.0.1" - checksum: da9f47e949988e2f595ef19733fd1dc736866ef6de4e421a55c13b444c03ae532e528b7350ae6ea55d9fb053be61d4648ec2cd5250d46cfdbdf4f6b4e763713d + charenc: "npm:>= 0.0.1" + crypt: "npm:>= 0.0.1" + checksum: 10/da9f47e949988e2f595ef19733fd1dc736866ef6de4e421a55c13b444c03ae532e528b7350ae6ea55d9fb053be61d4648ec2cd5250d46cfdbdf4f6b4e763713d languageName: node linkType: hard @@ -11854,15 +11854,15 @@ __metadata: version: 2.0.0 resolution: "shebang-command@npm:2.0.0" dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + shebang-regex: "npm:^3.0.0" + checksum: 10/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa languageName: node linkType: hard "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + checksum: 10/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 languageName: node linkType: hard @@ -11870,12 +11870,12 @@ __metadata: version: 0.8.5 resolution: "shelljs@npm:0.8.5" dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 + glob: "npm:^7.0.0" + interpret: "npm:^1.0.0" + rechoir: "npm:^0.6.2" bin: shjs: bin/shjs - checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 + checksum: 10/f2178274b97b44332bbe9ddb78161137054f55ecf701c7a99db9552cb5478fe279ad5f5131d8a7c2f0730e01ccf0c629d01094143f0541962ce1a3d0243d23f7 languageName: node linkType: hard @@ -11883,24 +11883,24 @@ __metadata: version: 1.0.4 resolution: "side-channel@npm:1.0.4" dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + call-bind: "npm:^1.0.0" + get-intrinsic: "npm:^1.0.2" + object-inspect: "npm:^1.9.0" + checksum: 10/c4998d9fc530b0e75a7fd791ad868fdc42846f072734f9080ff55cc8dc7d3899abcda24fd896aa6648c3ab7021b4bb478073eb4f44dfd55bce9714bc1a7c5d45 languageName: node linkType: hard "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + checksum: 10/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 languageName: node linkType: hard "simple-concat@npm:^1.0.0": version: 1.0.1 resolution: "simple-concat@npm:1.0.1" - checksum: 4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a + checksum: 10/4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a languageName: node linkType: hard @@ -11908,10 +11908,10 @@ __metadata: version: 2.8.2 resolution: "simple-get@npm:2.8.2" dependencies: - decompress-response: ^3.3.0 - once: ^1.3.1 - simple-concat: ^1.0.0 - checksum: 230bd931d3198f21a5a1a566687a5ee1ef651b13b61c7a01b547b2a0c2bf72769b5fe14a3b4dd518e99a18ba1002ba8af3901c0e61e8a0d1e7631a3c2eb1f7a9 + decompress-response: "npm:^3.3.0" + once: "npm:^1.3.1" + simple-concat: "npm:^1.0.0" + checksum: 10/b827672695bbe504217311c47c6a106358babcfbf3d69c8d67ad56da40c2ed05185eec12538dfe3637e1cf0441bcd5931b022a84dc7f8f2d84969d595f7f7fda languageName: node linkType: hard @@ -11919,22 +11919,22 @@ __metadata: version: 0.2.2 resolution: "simple-swizzle@npm:0.2.2" dependencies: - is-arrayish: ^0.3.1 - checksum: a7f3f2ab5c76c4472d5c578df892e857323e452d9f392e1b5cf74b74db66e6294a1e1b8b390b519fa1b96b5b613f2a37db6cffef52c3f1f8f3c5ea64eb2d54c0 + is-arrayish: "npm:^0.3.1" + checksum: 10/c6dffff17aaa383dae7e5c056fbf10cf9855a9f79949f20ee225c04f06ddde56323600e0f3d6797e82d08d006e93761122527438ee9531620031c08c9e0d73cc languageName: node linkType: hard "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 + checksum: 10/aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 languageName: node linkType: hard "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + checksum: 10/94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c languageName: node linkType: hard @@ -11942,17 +11942,17 @@ __metadata: version: 4.0.0 resolution: "slice-ansi@npm:4.0.0" dependencies: - ansi-styles: ^4.0.0 - astral-regex: ^2.0.0 - is-fullwidth-code-point: ^3.0.0 - checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10/4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 languageName: node linkType: hard "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + checksum: 10/927484aa0b1640fd9473cee3e0a0bcad6fce93fd7bbc18bac9ad0c33686f5d2e2c422fba24b5899c184524af01e11dd2bd051c2bf2b07e47aff8ca72cbfc60d2 languageName: node linkType: hard @@ -11960,21 +11960,21 @@ __metadata: version: 0.2.0 resolution: "snarkit2@https://github.com/fluidex/snarkit2.git#commit=70142d8bbc5ec79cfa6869205263ff77e8423975" dependencies: - "@iden3/binfileutils": ^0.0.8 - chai: ^4.3.4 - commander: ^7.2.0 - dotenv: ^10.0.0 - ffiasm: ^0.1.1 - ffjavascript: ^0.2.35 - r1csfile: 0.0.16 - shelljs: ^0.8.4 - snarkjs: ^0.3.60 - systeminformation: ^5.6.10 - tmp-promise: ^3.0.2 - walk-sync: ^2.2.0 + "@iden3/binfileutils": "npm:^0.0.8" + chai: "npm:^4.3.4" + commander: "npm:^7.2.0" + dotenv: "npm:^10.0.0" + ffiasm: "npm:^0.1.1" + ffjavascript: "npm:^0.2.35" + r1csfile: "npm:0.0.16" + shelljs: "npm:^0.8.4" + snarkjs: "npm:^0.3.60" + systeminformation: "npm:^5.6.10" + tmp-promise: "npm:^3.0.2" + walk-sync: "npm:^2.2.0" bin: snarkit2: ./dist/cli.js - checksum: e64e60e2f2639e18ee49977349236b187ed978dc6a14104c11dd0e055c52dfff89f916d3b75804aa294d2b91291e603acb7e6ced1bae430e2d4a9956218b3a65 + checksum: 10/a6b011da3a519a17dc69878dff6992fd39b7a20a1ca7fb1c2373027848b0af0f3e5b6b7ba31126eb3d71c23bd24d6b09290308f303aa2a9b7396421a79535223 languageName: node linkType: hard @@ -11982,20 +11982,20 @@ __metadata: version: 0.2.0 resolution: "snarkit2@npm:0.2.0" dependencies: - "@iden3/binfileutils": ^0.0.8 - chai: ^4.3.4 - commander: ^7.2.0 - ffiasm: ^0.1.1 - ffjavascript: ^0.2.35 - r1csfile: 0.0.16 - shelljs: ^0.8.4 - snarkjs: ^0.3.60 - systeminformation: ^5.6.10 - tmp-promise: ^3.0.2 - walk-sync: ^2.2.0 + "@iden3/binfileutils": "npm:^0.0.8" + chai: "npm:^4.3.4" + commander: "npm:^7.2.0" + ffiasm: "npm:^0.1.1" + ffjavascript: "npm:^0.2.35" + r1csfile: "npm:0.0.16" + shelljs: "npm:^0.8.4" + snarkjs: "npm:^0.3.60" + systeminformation: "npm:^5.6.10" + tmp-promise: "npm:^3.0.2" + walk-sync: "npm:^2.2.0" bin: snarkit2: dist/cli.js - checksum: bad701f7208ca91cf10626fb0662746ecfdbe79f871b3f47014600c0a40d14bd8ace1e544b77c97bb323b2d369607d9dba472d25b7a3db0516786833b05cfb28 + checksum: 10/1ee1a394f7d7a9ed622f8ea0dffe70d1e73c0e49ac21ce462fe5149e8b27885b317fef500a91201e7c56a7622b09f5222e6df225a887b7baab054accc266047e languageName: node linkType: hard @@ -12003,19 +12003,19 @@ __metadata: version: 0.6.10 resolution: "snarkjs@https://github.com/metacraft-labs/snarkjs.git#commit=091ee9c3744c660b0ecd961f9197a8249a8f7d3b" dependencies: - "@iden3/binfileutils": 0.0.11 - bfj: ^7.0.2 - blake2b-wasm: ^2.4.0 - circom_runtime: 0.1.22 - ejs: ^3.1.6 - fastfile: 0.0.20 - ffjavascript: 0.2.57 - js-sha3: ^0.8.0 - logplease: ^1.2.15 - r1csfile: 0.0.45 + "@iden3/binfileutils": "npm:0.0.11" + bfj: "npm:^7.0.2" + blake2b-wasm: "npm:^2.4.0" + circom_runtime: "npm:0.1.22" + ejs: "npm:^3.1.6" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.57" + js-sha3: "npm:^0.8.0" + logplease: "npm:^1.2.15" + r1csfile: "npm:0.0.45" bin: snarkjs: build/cli.cjs - checksum: 91946fe67a5d9c002fce1a297200ee46e9505520716255afe5358b847f4715c5da46a83b047419b426bdaa836fdb5ed04ca86c57460a4636564b0fd06ba393d1 + checksum: 10/09cd55330b2fe81ae6a1c3f6be4e809eec0529841896b5c0626bb4e616336ac019345644a95ecd1f5cbb935643829cf4df63d489fb30f6b9b58016bdf6e95089 languageName: node linkType: hard @@ -12023,19 +12023,19 @@ __metadata: version: 0.4.10 resolution: "snarkjs@npm:0.4.10" dependencies: - "@iden3/binfileutils": 0.0.8 - blake2b-wasm: ^2.3.0 - circom_runtime: 0.1.14 - ejs: ^3.1.6 - fastfile: 0.0.19 - ffjavascript: 0.2.39 - js-sha3: ^0.8.0 - logplease: ^1.2.15 - r1csfile: 0.0.33 - readline: ^1.3.0 + "@iden3/binfileutils": "npm:0.0.8" + blake2b-wasm: "npm:^2.3.0" + circom_runtime: "npm:0.1.14" + ejs: "npm:^3.1.6" + fastfile: "npm:0.0.19" + ffjavascript: "npm:0.2.39" + js-sha3: "npm:^0.8.0" + logplease: "npm:^1.2.15" + r1csfile: "npm:0.0.33" + readline: "npm:^1.3.0" bin: snarkjs: build/cli.cjs - checksum: 2f5a40d2d312bf93ea4abb1ba949828f6c9647e9616855a2f5759d5d34703bf71a4eec2071b77f45bce54273219d3af2a79eadd689399926063540eb01a94988 + checksum: 10/0f306d6654d8fd8280ba8e910e5ff0a1e64ce825c9fd2573975fb7db1ffad96b3510ff728104d807cd6353ccf925f8a45cfcea85b19b00e1e63060ea5864b221 languageName: node linkType: hard @@ -12043,17 +12043,17 @@ __metadata: version: 0.3.60 resolution: "snarkjs@npm:0.3.60" dependencies: - "@iden3/binfileutils": 0.0.8 + "@iden3/binfileutils": "npm:0.0.8" blake2b-wasm: "git+https://github.com/jbaylina/blake2b-wasm.git" - circom_runtime: 0.1.13 - fastfile: 0.0.19 - ffjavascript: 0.2.35 - logplease: ^1.2.15 - r1csfile: 0.0.32 - readline: ^1.3.0 + circom_runtime: "npm:0.1.13" + fastfile: "npm:0.0.19" + ffjavascript: "npm:0.2.35" + logplease: "npm:^1.2.15" + r1csfile: "npm:0.0.32" + readline: "npm:^1.3.0" bin: snarkjs: build/cli.cjs - checksum: 3067338ef7653070e640f5c70e61e30998cf2b999b369d3d1ecb0d6640640b1509c170a72ef8f2336a97ccc379874d191d9b840ee127f94e58372af1f0675adf + checksum: 10/35ca76fb922faa6e9709c3011d315a1b346f9d122351e797ba0665afb4d0f3125c637dfddec710f824e83f119d40fb5fa030c463d9eb648c983ce648600aac0a languageName: node linkType: hard @@ -12061,19 +12061,19 @@ __metadata: version: 0.4.27 resolution: "snarkjs@npm:0.4.27" dependencies: - "@iden3/binfileutils": 0.0.11 - bfj: ^7.0.2 - blake2b-wasm: ^2.4.0 - circom_runtime: 0.1.20 - ejs: ^3.1.6 - fastfile: 0.0.20 - ffjavascript: 0.2.55 - js-sha3: ^0.8.0 - logplease: ^1.2.15 - r1csfile: 0.0.40 + "@iden3/binfileutils": "npm:0.0.11" + bfj: "npm:^7.0.2" + blake2b-wasm: "npm:^2.4.0" + circom_runtime: "npm:0.1.20" + ejs: "npm:^3.1.6" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.55" + js-sha3: "npm:^0.8.0" + logplease: "npm:^1.2.15" + r1csfile: "npm:0.0.40" bin: snarkjs: build/cli.cjs - checksum: 5898ee988f3e2dfeb9cd25454fce3b185b8f596ae56bbe2faaf0bc6db4e7e6049f296b4e9bddf425fd804775a9d2d7b228d08363452229f57e92cf334156cd01 + checksum: 10/d4fefc9e00a9abfdb8064df2a8cccf211731690425518c6a025d2c7110b5fde2fd1655eb49a02bf3c93086764823c1cc419f667b242ec7f0171d70b89d9f70b7 languageName: node linkType: hard @@ -12081,10 +12081,10 @@ __metadata: version: 6.2.1 resolution: "socks-proxy-agent@npm:6.2.1" dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 9ca089d489e5ee84af06741135c4b0d2022977dad27ac8d649478a114cdce87849e8d82b7c22b51501a4116e231241592946fc7fae0afc93b65030ee57084f58 + agent-base: "npm:^6.0.2" + debug: "npm:^4.3.3" + socks: "npm:^2.6.2" + checksum: 10/554749ba3bdba0742ec36493a907261c116dd0dafcd618ea5babdfc90ce5a5ae648d4ee4d2e26e7184afd854973d282372ce0af63e1fc6412bb9fa1a2b1f2d45 languageName: node linkType: hard @@ -12092,10 +12092,10 @@ __metadata: version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + agent-base: "npm:^6.0.2" + debug: "npm:^4.3.3" + socks: "npm:^2.6.2" + checksum: 10/26c75d9c62a9ed3fd494df60e65e88da442f78e0d4bc19bfd85ac37bd2c67470d6d4bba5202e804561cda6674db52864c9e2a2266775f879bc8d89c1445a5f4c languageName: node linkType: hard @@ -12103,9 +12103,9 @@ __metadata: version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: - ip: ^2.0.0 - smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 + ip: "npm:^2.0.0" + smart-buffer: "npm:^4.2.0" + checksum: 10/5074f7d6a13b3155fa655191df1c7e7a48ce3234b8ccf99afa2ccb56591c195e75e8bb78486f8e9ea8168e95a29573cbaad55b2b5e195160ae4d2ea6811ba833 languageName: node linkType: hard @@ -12113,18 +12113,18 @@ __metadata: version: 0.7.3 resolution: "solc@npm:0.7.3" dependencies: - command-exists: ^1.2.8 - commander: 3.0.2 - follow-redirects: ^1.12.1 - fs-extra: ^0.30.0 - js-sha3: 0.8.0 - memorystream: ^0.3.1 - require-from-string: ^2.0.0 - semver: ^5.5.0 - tmp: 0.0.33 + command-exists: "npm:^1.2.8" + commander: "npm:3.0.2" + follow-redirects: "npm:^1.12.1" + fs-extra: "npm:^0.30.0" + js-sha3: "npm:0.8.0" + memorystream: "npm:^0.3.1" + require-from-string: "npm:^2.0.0" + semver: "npm:^5.5.0" + tmp: "npm:0.0.33" bin: solcjs: solcjs - checksum: 2d8eb16c6d8f648213c94dc8d977cffe5099cba7d41c82d92d769ef71ae8320a985065ce3d6c306440a85f8e8d2b27fb30bdd3ac38f69e5c1fa0ab8a3fb2f217 + checksum: 10/68bb783765d1aacf6ebe151ddbffff4c17f679046f2f83a2abae99c57cc0e7dbbcebd62b31861892df18fde272697c37c7a7518f1a9b1219de80217f0c780f0b languageName: node linkType: hard @@ -12132,16 +12132,16 @@ __metadata: version: 0.8.15 resolution: "solc@npm:0.8.15" dependencies: - command-exists: ^1.2.8 - commander: ^8.1.0 - follow-redirects: ^1.12.1 - js-sha3: 0.8.0 - memorystream: ^0.3.1 - semver: ^5.5.0 - tmp: 0.0.33 + command-exists: "npm:^1.2.8" + commander: "npm:^8.1.0" + follow-redirects: "npm:^1.12.1" + js-sha3: "npm:0.8.0" + memorystream: "npm:^0.3.1" + semver: "npm:^5.5.0" + tmp: "npm:0.0.33" bin: solcjs: solc.js - checksum: a11de198bc5d481485a4a4803fb08a81a56dd9ffa7cdc62f8d6d5fc669f72e7cb4b22789004d54481353463421f6e6e3d1dffe7365b6d0ed5f37baee303266db + checksum: 10/fa328fe7b451dbd396115e694b56ca6118bbe07c1ee2d26324992a424da4cb40b725c427c2dbacfbe6e7a4b2692ea3c3ef561f46bbb30d33e9a5c7ffca96a506 languageName: node linkType: hard @@ -12149,9 +12149,9 @@ __metadata: version: 0.5.13 resolution: "source-map-support@npm:0.5.13" dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10/d1514a922ac9c7e4786037eeff6c3322f461cd25da34bb9fefb15387b3490531774e6e31d95ab6d5b84a3e139af9c3a570ccaee6b47bd7ea262691ed3a8bc34e languageName: node linkType: hard @@ -12159,23 +12159,23 @@ __metadata: version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10/8317e12d84019b31e34b86d483dd41d6f832f389f7417faf8fc5c75a66a12d9686e47f589a0554a868b8482f037e23df9d040d29387eb16fa14cb85f091ba207 languageName: node linkType: hard "source-map@npm:^0.6.0, source-map@npm:^0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 + checksum: 10/59ef7462f1c29d502b3057e822cdbdae0b0e565302c4dd1a95e11e793d8d9d62006cdc10e0fd99163ca33ff2071360cf50ee13f90440806e7ed57d81cba2f7ff languageName: node linkType: hard "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 + checksum: 10/c34828732ab8509c2741e5fd1af6b767c3daf2c642f267788f933a65b1614943c282e74c4284f4fa749c264b18ee016a0d37a3e5b73aee446da46277d3a85daa languageName: node linkType: hard @@ -12183,20 +12183,20 @@ __metadata: version: 1.17.0 resolution: "sshpk@npm:1.17.0" dependencies: - asn1: ~0.2.3 - assert-plus: ^1.0.0 - bcrypt-pbkdf: ^1.0.0 - dashdash: ^1.12.0 - ecc-jsbn: ~0.1.1 - getpass: ^0.1.1 - jsbn: ~0.1.0 - safer-buffer: ^2.0.2 - tweetnacl: ~0.14.0 + asn1: "npm:~0.2.3" + assert-plus: "npm:^1.0.0" + bcrypt-pbkdf: "npm:^1.0.0" + dashdash: "npm:^1.12.0" + ecc-jsbn: "npm:~0.1.1" + getpass: "npm:^0.1.1" + jsbn: "npm:~0.1.0" + safer-buffer: "npm:^2.0.2" + tweetnacl: "npm:~0.14.0" bin: sshpk-conv: bin/sshpk-conv sshpk-sign: bin/sshpk-sign sshpk-verify: bin/sshpk-verify - checksum: ba109f65c8e6c35133b8e6ed5576abeff8aa8d614824b7275ec3ca308f081fef483607c28d97780c1e235818b0f93ed8c8b56d0a5968d5a23fd6af57718c7597 + checksum: 10/668c2a279a6ce66fd739ce5684e37927dd75427cc020c828a208f85890a4c400705d4ba09f32fa44efca894339dc6931941664f6f6ba36dfa543de6d006cbe9c languageName: node linkType: hard @@ -12204,8 +12204,8 @@ __metadata: version: 8.0.1 resolution: "ssri@npm:8.0.1" dependencies: - minipass: ^3.1.1 - checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 + minipass: "npm:^3.1.1" + checksum: 10/fde247b7107674d9a424a20f9c1a6e3ad88a139c2636b9d9ffa7df59e85e11a894cdae48fadd0ad6be41eb0d5b847fe094736513d333615c7eebc3d111abe0d2 languageName: node linkType: hard @@ -12213,15 +12213,15 @@ __metadata: version: 9.0.1 resolution: "ssri@npm:9.0.1" dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb + minipass: "npm:^3.1.1" + checksum: 10/7638a61e91432510718e9265d48d0438a17d53065e5184f1336f234ef6aa3479663942e41e97df56cda06bb24d9d0b5ef342c10685add3cac7267a82d7fa6718 languageName: node linkType: hard "stack-trace@npm:0.0.x": version: 0.0.10 resolution: "stack-trace@npm:0.0.10" - checksum: 473036ad32f8c00e889613153d6454f9be0536d430eb2358ca51cad6b95cea08a3cc33cc0e34de66b0dad221582b08ed2e61ef8e13f4087ab690f388362d6610 + checksum: 10/7bd633f0e9ac46e81a0b0fe6538482c1d77031959cf94478228731709db4672fbbed59176f5b9a9fd89fec656b5dae03d084ef2d1b0c4c2f5683e05f2dbb1405 languageName: node linkType: hard @@ -12229,8 +12229,8 @@ __metadata: version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: - escape-string-regexp: ^2.0.0 - checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 + escape-string-regexp: "npm:^2.0.0" + checksum: 10/cdc988acbc99075b4b036ac6014e5f1e9afa7e564482b687da6384eee6a1909d7eaffde85b0a17ffbe186c5247faf6c2b7544e802109f63b72c7be69b13151bb languageName: node linkType: hard @@ -12238,50 +12238,50 @@ __metadata: version: 0.1.10 resolution: "stacktrace-parser@npm:0.1.10" dependencies: - type-fest: ^0.7.1 - checksum: f4fbddfc09121d91e587b60de4beb4941108e967d71ad3a171812dc839b010ca374d064ad0a296295fed13acd103609d99a4224a25b4e67de13cae131f1901ee + type-fest: "npm:^0.7.1" + checksum: 10/f4fbddfc09121d91e587b60de4beb4941108e967d71ad3a171812dc839b010ca374d064ad0a296295fed13acd103609d99a4224a25b4e67de13cae131f1901ee languageName: node linkType: hard "standard-as-callback@npm:^2.1.0": version: 2.1.0 resolution: "standard-as-callback@npm:2.1.0" - checksum: 88bec83ee220687c72d94fd86a98d5272c91d37ec64b66d830dbc0d79b62bfa6e47f53b71646011835fc9ce7fae62739545d13124262b53be4fbb3e2ebad551c + checksum: 10/88bec83ee220687c72d94fd86a98d5272c91d37ec64b66d830dbc0d79b62bfa6e47f53b71646011835fc9ce7fae62739545d13124262b53be4fbb3e2ebad551c languageName: node linkType: hard "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" - checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb + checksum: 10/18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb languageName: node linkType: hard "stealthy-require@npm:^1.1.1": version: 1.1.1 resolution: "stealthy-require@npm:1.1.1" - checksum: 6805b857a9f3a6a1079fc6652278038b81011f2a5b22cbd559f71a6c02087e6f1df941eb10163e3fdc5391ab5807aa46758d4258547c1f5ede31e6d9bfda8dd3 + checksum: 10/a408a51f5b6c1fe535e4459732ac0b66d7921583f89fc8289bfdc937a497fe8196219d1e04d234047349b90723ecff1a1cb4a92bef2315e01a3081dc72db8d41 languageName: node linkType: hard "streamsearch@npm:^1.1.0": version: 1.1.0 resolution: "streamsearch@npm:1.1.0" - checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 + checksum: 10/612c2b2a7dbcc859f74597112f80a42cbe4d448d03da790d5b7b39673c1197dd3789e91cd67210353e58857395d32c1e955a9041c4e6d5bae723436b3ed9ed14 languageName: node linkType: hard "strict-uri-encode@npm:^1.0.0": version: 1.1.0 resolution: "strict-uri-encode@npm:1.1.0" - checksum: 9466d371f7b36768d43f7803f26137657559e4c8b0161fb9e320efb8edba3ae22f8e99d4b0d91da023b05a13f62ec5412c3f4f764b5788fac11d1fea93720bb3 + checksum: 10/9466d371f7b36768d43f7803f26137657559e4c8b0161fb9e320efb8edba3ae22f8e99d4b0d91da023b05a13f62ec5412c3f4f764b5788fac11d1fea93720bb3 languageName: node linkType: hard "string-format@npm:^2.0.0": version: 2.0.0 resolution: "string-format@npm:2.0.0" - checksum: dada2ef95f6d36c66562c673d95315f80457fa7dce2f3609a2e75d1190b98c88319028cf0a5b6c043d01c18d581b2641579f79480584ba030d6ac6fceb30bc55 + checksum: 10/8889014e926f69aaa8d117551a84a97cd7932484f5b0ab5b5b760eb0761e5722dee6112893ea742efac5adeb1b08dfedb77d9a91192dcd683a331e06c5148a87 languageName: node linkType: hard @@ -12289,9 +12289,9 @@ __metadata: version: 4.0.2 resolution: "string-length@npm:4.0.2" dependencies: - char-regex: ^1.0.2 - strip-ansi: ^6.0.0 - checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10/ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 languageName: node linkType: hard @@ -12299,10 +12299,10 @@ __metadata: version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10/e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb languageName: node linkType: hard @@ -12310,9 +12310,9 @@ __metadata: version: 2.1.1 resolution: "string-width@npm:2.1.1" dependencies: - is-fullwidth-code-point: ^2.0.0 - strip-ansi: ^4.0.0 - checksum: d6173abe088c615c8dffaf3861dc5d5906ed3dc2d6fd67ff2bd2e2b5dce7fd683c5240699cf0b1b8aa679a3b3bd6b28b5053c824cb89b813d7f6541d8f89064a + is-fullwidth-code-point: "npm:^2.0.0" + strip-ansi: "npm:^4.0.0" + checksum: 10/d6173abe088c615c8dffaf3861dc5d5906ed3dc2d6fd67ff2bd2e2b5dce7fd683c5240699cf0b1b8aa679a3b3bd6b28b5053c824cb89b813d7f6541d8f89064a languageName: node linkType: hard @@ -12320,10 +12320,10 @@ __metadata: version: 3.1.0 resolution: "string-width@npm:3.1.0" dependencies: - emoji-regex: ^7.0.1 - is-fullwidth-code-point: ^2.0.0 - strip-ansi: ^5.1.0 - checksum: 57f7ca73d201682816d573dc68bd4bb8e1dff8dc9fcf10470fdfc3474135c97175fec12ea6a159e67339b41e86963112355b64529489af6e7e70f94a7caf08b2 + emoji-regex: "npm:^7.0.1" + is-fullwidth-code-point: "npm:^2.0.0" + strip-ansi: "npm:^5.1.0" + checksum: 10/57f7ca73d201682816d573dc68bd4bb8e1dff8dc9fcf10470fdfc3474135c97175fec12ea6a159e67339b41e86963112355b64529489af6e7e70f94a7caf08b2 languageName: node linkType: hard @@ -12331,10 +12331,10 @@ __metadata: version: 1.0.6 resolution: "string.prototype.trimend@npm:1.0.6" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + es-abstract: "npm:^1.20.4" + checksum: 10/3893db9267e0b8a16658c3947738536e90c400a9b7282de96925d4e210174cfe66c59d6b7eb5b4a9aaa78ef7f5e46afb117e842d93112fbd105c8d19206d8092 languageName: node linkType: hard @@ -12342,10 +12342,10 @@ __metadata: version: 1.0.6 resolution: "string.prototype.trimstart@npm:1.0.6" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + es-abstract: "npm:^1.20.4" + checksum: 10/05e2cd06fa5311b17f5b2c7af0a60239fa210f4bb07bbcfce4995215dce330e2b1dd2d8030d371f46252ab637522e14b6e9a78384e8515945b72654c14261d54 languageName: node linkType: hard @@ -12353,8 +12353,8 @@ __metadata: version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + safe-buffer: "npm:~5.2.0" + checksum: 10/54d23f4a6acae0e93f999a585e673be9e561b65cd4cca37714af1e893ab8cd8dfa52a9e4f58f48f87b4a44918d3a9254326cb80ed194bf2e4c226e2b21767e56 languageName: node linkType: hard @@ -12362,8 +12362,8 @@ __metadata: version: 1.1.1 resolution: "string_decoder@npm:1.1.1" dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b + safe-buffer: "npm:~5.1.0" + checksum: 10/7c41c17ed4dea105231f6df208002ebddd732e8e9e2d619d133cecd8e0087ddfd9587d2feb3c8caf3213cbd841ada6d057f5142cae68a4e62d3540778d9819b4 languageName: node linkType: hard @@ -12371,8 +12371,8 @@ __metadata: version: 4.0.0 resolution: "strip-ansi@npm:4.0.0" dependencies: - ansi-regex: ^3.0.0 - checksum: d9186e6c0cf78f25274f6750ee5e4a5725fb91b70fdd79aa5fe648eab092a0ec5b9621b22d69d4534a56319f75d8944efbd84e3afa8d4ad1b9a9491f12c84eca + ansi-regex: "npm:^3.0.0" + checksum: 10/d9186e6c0cf78f25274f6750ee5e4a5725fb91b70fdd79aa5fe648eab092a0ec5b9621b22d69d4534a56319f75d8944efbd84e3afa8d4ad1b9a9491f12c84eca languageName: node linkType: hard @@ -12380,8 +12380,8 @@ __metadata: version: 5.2.0 resolution: "strip-ansi@npm:5.2.0" dependencies: - ansi-regex: ^4.1.0 - checksum: bdb5f76ade97062bd88e7723aa019adbfacdcba42223b19ccb528ffb9fb0b89a5be442c663c4a3fb25268eaa3f6ea19c7c3fbae830bd1562d55adccae1fcec46 + ansi-regex: "npm:^4.1.0" + checksum: 10/bdb5f76ade97062bd88e7723aa019adbfacdcba42223b19ccb528ffb9fb0b89a5be442c663c4a3fb25268eaa3f6ea19c7c3fbae830bd1562d55adccae1fcec46 languageName: node linkType: hard @@ -12389,22 +12389,22 @@ __metadata: version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + ansi-regex: "npm:^5.0.1" + checksum: 10/ae3b5436d34fadeb6096367626ce987057713c566e1e7768818797e00ac5d62023d0f198c4e681eae9e20701721980b26a64a8f5b91238869592a9c6800719a2 languageName: node linkType: hard "strip-bom@npm:^4.0.0": version: 4.0.0 resolution: "strip-bom@npm:4.0.0" - checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 + checksum: 10/9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 languageName: node linkType: hard "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" - checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 + checksum: 10/69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 languageName: node linkType: hard @@ -12412,22 +12412,22 @@ __metadata: version: 1.0.0 resolution: "strip-hex-prefix@npm:1.0.0" dependencies: - is-hex-prefixed: 1.0.0 - checksum: 4cafe7caee1d281d3694d14920fd5d3c11adf09371cef7e2ccedd5b83efd9e9bd2219b5d6ce6e809df6e0f437dc9d30db1192116580875698aad164a6d6b285b + is-hex-prefixed: "npm:1.0.0" + checksum: 10/4cafe7caee1d281d3694d14920fd5d3c11adf09371cef7e2ccedd5b83efd9e9bd2219b5d6ce6e809df6e0f437dc9d30db1192116580875698aad164a6d6b285b languageName: node linkType: hard "strip-json-comments@npm:2.0.1": version: 2.0.1 resolution: "strip-json-comments@npm:2.0.1" - checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 + checksum: 10/1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 languageName: node linkType: hard "strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 + checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 languageName: node linkType: hard @@ -12435,8 +12435,8 @@ __metadata: version: 6.0.0 resolution: "supports-color@npm:6.0.0" dependencies: - has-flag: ^3.0.0 - checksum: 005b4a7e5d78a9a703454f5b7da34336b82825747724d1f3eefea6c3956afcb33b79b31854a93cef0fc1f2449919ae952f79abbfd09a5b5b43ecd26407d3a3a1 + has-flag: "npm:^3.0.0" + checksum: 10/bc443c8e01dc11dec4b12386a2bbd0e82c3108c6b4507076d7c21f70ffabbf539487d52d65fcc21628f5841efb8dbce117ed5d622d7f3023840fa3dc5ee303ba languageName: node linkType: hard @@ -12444,8 +12444,8 @@ __metadata: version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + has-flag: "npm:^4.0.0" + checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282 languageName: node linkType: hard @@ -12453,8 +12453,8 @@ __metadata: version: 5.5.0 resolution: "supports-color@npm:5.5.0" dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + has-flag: "npm:^3.0.0" + checksum: 10/5f505c6fa3c6e05873b43af096ddeb22159831597649881aeb8572d6fe3b81e798cc10840d0c9735e0026b250368851b7f77b65e84f4e4daa820a4f69947f55b languageName: node linkType: hard @@ -12462,15 +12462,15 @@ __metadata: version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a + has-flag: "npm:^4.0.0" + checksum: 10/c8bb7afd564e3b26b50ca6ee47572c217526a1389fe018d00345856d4a9b08ffbd61fadaf283a87368d94c3dcdb8f5ffe2650a5a65863e21ad2730ca0f05210a languageName: node linkType: hard "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae + checksum: 10/a9dc19ae2220c952bd2231d08ddeecb1b0328b61e72071ff4000c8384e145cc07c1c0bdb3b5a1cb06e186a7b2790f1dee793418b332f6ddf320de25d9125be7e languageName: node linkType: hard @@ -12478,25 +12478,25 @@ __metadata: version: 0.1.42 resolution: "swarm-js@npm:0.1.42" dependencies: - bluebird: ^3.5.0 - buffer: ^5.0.5 - eth-lib: ^0.1.26 - fs-extra: ^4.0.2 - got: ^11.8.5 - mime-types: ^2.1.16 - mkdirp-promise: ^5.0.1 - mock-fs: ^4.1.0 - setimmediate: ^1.0.5 - tar: ^4.0.2 - xhr-request: ^1.0.1 - checksum: bbb54b84232ef113ee106cf8158d1c827fbf84b309799576f61603f63d7653fde7e71df981d07f9e4c41781bbbbd72be77e5a47e6b694d6a83b96a6a20641475 + bluebird: "npm:^3.5.0" + buffer: "npm:^5.0.5" + eth-lib: "npm:^0.1.26" + fs-extra: "npm:^4.0.2" + got: "npm:^11.8.5" + mime-types: "npm:^2.1.16" + mkdirp-promise: "npm:^5.0.1" + mock-fs: "npm:^4.1.0" + setimmediate: "npm:^1.0.5" + tar: "npm:^4.0.2" + xhr-request: "npm:^1.0.1" + checksum: 10/341bcfef6daadc1904ea87b1781f10dc99ec14e33c9a9041e43e9617dcc3b7d632230e1baf2fafecb8e10e63c2e4eeb7cce7c85592dc0cf0dde935f49c77050b languageName: node linkType: hard "symbol-observable@npm:^2.0.3": version: 2.0.3 resolution: "symbol-observable@npm:2.0.3" - checksum: 533dcf7a7925bada60dbaa06d678e7c4966dbf0959ccba7f60c22b0494ba5d9160d6a66f2951d45a80bf20e655a89f8b91c5f0458dd12faef28716b54f91f49c + checksum: 10/15ca0de42b490172e901b4cf61b35da9d5ad752afcb5ef6dc9c998a0e9b414dfa26aa9f0dde11d235dfa96731e26a6521c98738e90143bf8efe65bfdc1633be1 languageName: node linkType: hard @@ -12504,10 +12504,10 @@ __metadata: version: 6.1.0 resolution: "sync-request@npm:6.1.0" dependencies: - http-response-object: ^3.0.1 - sync-rpc: ^1.2.1 - then-request: ^6.0.0 - checksum: cc8438a6749f62fb501d022fae0e3af3ac4a9983f889f929c8721b328a1c3408b98ca218aad886785a02be2c34bd75eb1a5a2608bd1fcee3c8c099391ff53a11 + http-response-object: "npm:^3.0.1" + sync-rpc: "npm:^1.2.1" + then-request: "npm:^6.0.0" + checksum: 10/7f2b63b77c8440d36212c61b4babdf740a4ac37492f62f1da5e59e4081c940275a9d929e359ba427d2796e1e401fe00f35f0354b356b3709524a9bcda093313c languageName: node linkType: hard @@ -12515,8 +12515,8 @@ __metadata: version: 1.3.6 resolution: "sync-rpc@npm:1.3.6" dependencies: - get-port: ^3.1.0 - checksum: 4340974fb5641c2cadb9df18d6b791ed2327f28cf6d8a00c99ebc2278e37391e3f5e237596da2ff83d14d2147594c6f5b3b98a93b9327644db425d239dea172f + get-port: "npm:^3.1.0" + checksum: 10/13c05461a32f06f9f41993374b3b9e3145105baede4097bd385e57d841ac0b47dad51737a919c1592df5b04aabdfee03f1d28562c37d5a76ef704069db1b4522 languageName: node linkType: hard @@ -12525,7 +12525,7 @@ __metadata: resolution: "systeminformation@npm:5.17.9" bin: systeminformation: lib/cli.js - checksum: 75804de0bbdcf00e415452bb9795aea4f1dc1b26f332979933cedb66af07e6b6996ba7487ac877b778a20668fd9da4160cee5dd40462d5a5f2e06636c4959f4a + checksum: 10/8e2d2de20d86fe43980754fcad4c7e30fbcdd7eea924e8b11177b34dd3ae4df35ce4917e4b7257834efa06aef9005e51d9872eca28e6ff1de03f7d21a5764582 conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) languageName: node linkType: hard @@ -12534,11 +12534,11 @@ __metadata: version: 1.0.2 resolution: "table-layout@npm:1.0.2" dependencies: - array-back: ^4.0.1 - deep-extend: ~0.6.0 - typical: ^5.2.0 - wordwrapjs: ^4.0.0 - checksum: 8f41b5671f101a5195747ec1727b1d35ea2cd5bf85addda11cc2f4b36892db9696ce3c2c7334b5b8a122505b34d19135fede50e25678df71b0439e0704fd953f + array-back: "npm:^4.0.1" + deep-extend: "npm:~0.6.0" + typical: "npm:^5.2.0" + wordwrapjs: "npm:^4.0.0" + checksum: 10/5dd12bc64ddf246f774fc51b45398dd8da900b7bb246595c84007ea292c15936264701660b80704be17da5d4066a9a250549418c40a2b635a0916c9294b103af languageName: node linkType: hard @@ -12546,12 +12546,12 @@ __metadata: version: 6.8.1 resolution: "table@npm:6.8.1" dependencies: - ajv: ^8.0.1 - lodash.truncate: ^4.4.2 - slice-ansi: ^4.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - checksum: 08249c7046125d9d0a944a6e96cfe9ec66908d6b8a9db125531be6eb05fa0de047fd5542e9d43b4f987057f00a093b276b8d3e19af162a9c40db2681058fd306 + ajv: "npm:^8.0.1" + lodash.truncate: "npm:^4.4.2" + slice-ansi: "npm:^4.0.0" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + checksum: 10/512c4f2bfb6f46f4d5ced19943ae5db1a5163eac1f23ce752625eb49715f84217c1c62bc2d017eb8985b37e0f85731108f654df809c0b34cca1678a672e7ea20 languageName: node linkType: hard @@ -12559,14 +12559,14 @@ __metadata: version: 4.4.19 resolution: "tar@npm:4.4.19" dependencies: - chownr: ^1.1.4 - fs-minipass: ^1.2.7 - minipass: ^2.9.0 - minizlib: ^1.3.3 - mkdirp: ^0.5.5 - safe-buffer: ^5.2.1 - yallist: ^3.1.1 - checksum: 423c8259b17f8f612cef9c96805d65f90ba9a28e19be582cd9d0fcb217038219f29b7547198e8fd617da5f436376d6a74b99827acd1238d2f49cf62330f9664e + chownr: "npm:^1.1.4" + fs-minipass: "npm:^1.2.7" + minipass: "npm:^2.9.0" + minizlib: "npm:^1.3.3" + mkdirp: "npm:^0.5.5" + safe-buffer: "npm:^5.2.1" + yallist: "npm:^3.1.1" + checksum: 10/2715b5964578424ba5164632905a85e5a98c8dffeba657860aafa3a771b2602e6fd2a350bca891d78b8bda8cab5c53134c683ed2269b9925533477a24722e73b languageName: node linkType: hard @@ -12574,13 +12574,13 @@ __metadata: version: 6.1.13 resolution: "tar@npm:6.1.13" dependencies: - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - minipass: ^4.0.0 - minizlib: ^2.1.1 - mkdirp: ^1.0.3 - yallist: ^4.0.0 - checksum: 8a278bed123aa9f53549b256a36b719e317c8b96fe86a63406f3c62887f78267cea9b22dc6f7007009738509800d4a4dccc444abd71d762287c90f35b002eb1c + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^4.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10/add2c3c6d0d71192186ec118d265b92d94be5cd57a0b8fdf0d29ee46dc846574925a5fc57170eefffd78201eda4c45d7604070b5a4b0648e4d6e1d65918b5a82 languageName: node linkType: hard @@ -12588,8 +12588,8 @@ __metadata: version: 0.1.2 resolution: "tdigest@npm:0.1.2" dependencies: - bintrees: 1.0.2 - checksum: 44de8246752b6f8c2924685f969fd3d94c36949f22b0907e99bef2b2220726dd8467f4730ea96b06040b9aa2587c0866049640039d1b956952dfa962bc2075a3 + bintrees: "npm:1.0.2" + checksum: 10/45be99fa52dab74b8edafe150e473cdc45aa1352c75ed516a39905f350a08c3175f6555598111042c3677ba042d7e3cae6b5ce4c663fe609bc634f326aabc9d6 languageName: node linkType: hard @@ -12597,17 +12597,17 @@ __metadata: version: 6.0.0 resolution: "test-exclude@npm:6.0.0" dependencies: - "@istanbuljs/schema": ^0.1.2 - glob: ^7.1.4 - minimatch: ^3.0.4 - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10/8fccb2cb6c8fcb6bb4115394feb833f8b6cf4b9503ec2485c2c90febf435cac62abe882a0c5c51a37b9bbe70640cdd05acf5f45e486ac4583389f4b0855f69e5 languageName: node linkType: hard "text-hex@npm:1.0.x": version: 1.0.0 resolution: "text-hex@npm:1.0.0" - checksum: 1138f68adc97bf4381a302a24e2352f04992b7b1316c5003767e9b0d3367ffd0dc73d65001ea02b07cd0ecc2a9d186de0cf02f3c2d880b8a522d4ccb9342244a + checksum: 10/1138f68adc97bf4381a302a24e2352f04992b7b1316c5003767e9b0d3367ffd0dc73d65001ea02b07cd0ecc2a9d186de0cf02f3c2d880b8a522d4ccb9342244a languageName: node linkType: hard @@ -12615,32 +12615,32 @@ __metadata: version: 6.0.2 resolution: "then-request@npm:6.0.2" dependencies: - "@types/concat-stream": ^1.6.0 - "@types/form-data": 0.0.33 - "@types/node": ^8.0.0 - "@types/qs": ^6.2.31 - caseless: ~0.12.0 - concat-stream: ^1.6.0 - form-data: ^2.2.0 - http-basic: ^8.1.1 - http-response-object: ^3.0.1 - promise: ^8.0.0 - qs: ^6.4.0 - checksum: a24a4fc95dd8591966bf3752f024f5cd4d53c2b2c29b23b4e40c3322df6a432d939bc17b589d8e9d760b90e92ab860f6f361a4dfcfe3542019e1615fb51afccc + "@types/concat-stream": "npm:^1.6.0" + "@types/form-data": "npm:0.0.33" + "@types/node": "npm:^8.0.0" + "@types/qs": "npm:^6.2.31" + caseless: "npm:~0.12.0" + concat-stream: "npm:^1.6.0" + form-data: "npm:^2.2.0" + http-basic: "npm:^8.1.1" + http-response-object: "npm:^3.0.1" + promise: "npm:^8.0.0" + qs: "npm:^6.4.0" + checksum: 10/7a33192fa03493fa7d5a40dbe2039271723c1c226aaa6db91576b439bf56393c8fe5a206478f37855c98284adf31d18c5bb7bafc94ebedae7c5bdb26a580dacc languageName: node linkType: hard "timed-out@npm:^4.0.1": version: 4.0.1 resolution: "timed-out@npm:4.0.1" - checksum: 98efc5d6fc0d2a329277bd4d34f65c1bf44d9ca2b14fd267495df92898f522e6f563c5e9e467c418e0836f5ca1f47a84ca3ee1de79b1cc6fe433834b7f02ec54 + checksum: 10/d52648e5fc0ebb0cae1633737a1db1b7cb464d5d43d754bd120ddebd8067a1b8f42146c250d8cfb9952183b7b0f341a99fc71b59c52d659218afae293165004f languageName: node linkType: hard "tiny-emitter@npm:^2.0.0": version: 2.1.0 resolution: "tiny-emitter@npm:2.1.0" - checksum: fbcfb5145751a0e3b109507a828eb6d6d4501352ab7bb33eccef46e22e9d9ad3953158870a6966a59e57ab7c3f9cfac7cab8521db4de6a5e757012f4677df2dd + checksum: 10/75633f4de4f47f43af56aff6162f25b87be7efc6f669fda256658f3c3f4a216f23dc0d13200c6fafaaf1b0c7142f0201352fb06aec0b77f68aea96be898f4516 languageName: node linkType: hard @@ -12648,8 +12648,8 @@ __metadata: version: 3.0.3 resolution: "tmp-promise@npm:3.0.3" dependencies: - tmp: ^0.2.0 - checksum: f854f5307dcee6455927ec3da9398f139897faf715c5c6dcee6d9471ae85136983ea06662eba2edf2533bdcb0fca66d16648e79e14381e30c7fb20be9c1aa62c + tmp: "npm:^0.2.0" + checksum: 10/0ca65b4f233b1d2b01e17a7a62961d32923e4b27383a370bf4d8d52f1062d79c3250e6b6b706ec390e73c9c58c13dc130b3855eedc89c86c7d90beb28b8382e5 languageName: node linkType: hard @@ -12657,8 +12657,8 @@ __metadata: version: 0.0.33 resolution: "tmp@npm:0.0.33" dependencies: - os-tmpdir: ~1.0.2 - checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 + os-tmpdir: "npm:~1.0.2" + checksum: 10/09c0abfd165cff29b32be42bc35e80b8c64727d97dedde6550022e88fa9fd39a084660415ed8e3ebaa2aca1ee142f86df8b31d4196d4f81c774a3a20fd4b6abf languageName: node linkType: hard @@ -12666,22 +12666,22 @@ __metadata: version: 0.2.1 resolution: "tmp@npm:0.2.1" dependencies: - rimraf: ^3.0.0 - checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e + rimraf: "npm:^3.0.0" + checksum: 10/445148d72df3ce99356bc89a7857a0c5c3b32958697a14e50952c6f7cf0a8016e746ababe9a74c1aa52f04c526661992f14659eba34d3c6701d49ba2f3cf781b languageName: node linkType: hard "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" - checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 + checksum: 10/cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 languageName: node linkType: hard "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 languageName: node linkType: hard @@ -12689,15 +12689,15 @@ __metadata: version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + is-number: "npm:^7.0.0" + checksum: 10/10dda13571e1f5ad37546827e9b6d4252d2e0bc176c24a101252153ef435d83696e2557fe128c4678e4e78f5f01e83711c703eef9814eb12dab028580d45980a languageName: node linkType: hard "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" - checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 + checksum: 10/952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 languageName: node linkType: hard @@ -12705,37 +12705,37 @@ __metadata: version: 2.5.0 resolution: "tough-cookie@npm:2.5.0" dependencies: - psl: ^1.1.28 - punycode: ^2.1.1 - checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 + psl: "npm:^1.1.28" + punycode: "npm:^2.1.1" + checksum: 10/024cb13a4d1fe9af57f4323dff765dd9b217cc2a69be77e3b8a1ca45600aa33a097b6ad949f225d885e904f4bd3ceccef104741ef202d8378e6ca78e850ff82f languageName: node linkType: hard "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 + checksum: 10/8f1f5aa6cb232f9e1bdc86f485f916b7aa38caee8a778b378ffec0b70d9307873f253f5cbadbe2955ece2ac5c83d0dc14a77513166ccd0a0c7fe197e21396695 languageName: node linkType: hard "triple-beam@npm:^1.3.0": version: 1.4.1 resolution: "triple-beam@npm:1.4.1" - checksum: 2e881a3e8e076b6f2b85b9ec9dd4a900d3f5016e6d21183ed98e78f9abcc0149e7d54d79a3f432b23afde46b0885bdcdcbff789f39bc75de796316961ec07f61 + checksum: 10/2e881a3e8e076b6f2b85b9ec9dd4a900d3f5016e6d21183ed98e78f9abcc0149e7d54d79a3f432b23afde46b0885bdcdcbff789f39bc75de796316961ec07f61 languageName: node linkType: hard "true-case-path@npm:^2.2.1": version: 2.2.1 resolution: "true-case-path@npm:2.2.1" - checksum: fd5f1c2a87a122a65ffb1f84b580366be08dac7f552ea0fa4b5a6ab0a013af950b0e752beddb1c6c1652e6d6a2b293b7b3fd86a5a1706242ad365b68f1b5c6f1 + checksum: 10/8c6ddd8dab044012a7bb1bed0b31cbb8f9924e903e996f7378d9b86113cde29251e684075203490d4dca2a199ef401ba89228c602bc5e2a3e4550446e8ae1ccf languageName: node linkType: hard "tryer@npm:^1.0.1": version: 1.0.1 resolution: "tryer@npm:1.0.1" - checksum: 1cf14d7f67c79613f054b569bfc9a89c7020d331573a812dfcf7437244e8f8e6eb6893b210cbd9cc217f67c1d72617f89793df231e4fe7d53634ed91cf3a89d1 + checksum: 10/4d869d187bd715136903b349f39d1cc3e5c19f742689a348190aff92408ee8dd3d7d9adc26dc9265c35d722731184c979ed316109b6c1239249a8707bb92cc49 languageName: node linkType: hard @@ -12743,14 +12743,14 @@ __metadata: version: 2.4.2 resolution: "ts-command-line-args@npm:2.4.2" dependencies: - "@morgan-stanley/ts-mocking-bird": ^0.6.2 - chalk: ^4.1.0 - command-line-args: ^5.1.1 - command-line-usage: ^6.1.0 - string-format: ^2.0.0 + "@morgan-stanley/ts-mocking-bird": "npm:^0.6.2" + chalk: "npm:^4.1.0" + command-line-args: "npm:^5.1.1" + command-line-usage: "npm:^6.1.0" + string-format: "npm:^2.0.0" bin: write-markdown: dist/write-markdown.js - checksum: 87670c554eb23477c777be010ec9cd280187275717d4db002e0d7d1f2a660f9483315a36dc3ea4af714d41b1fc1a3bd242fd538dd76310d9f1a3741502e49fd4 + checksum: 10/4dc252f98eeca11ce9a767f04a0cd6973126b7f6b387cc80d53aadf17e415460f485e9903baea01f0d0e68fd7aa470c816c9ef12468caed8514d67bf8067f600 languageName: node linkType: hard @@ -12759,7 +12759,7 @@ __metadata: resolution: "ts-essentials@npm:7.0.3" peerDependencies: typescript: ">=3.7.0" - checksum: 74d75868acf7f8b95e447d8b3b7442ca21738c6894e576df9917a352423fde5eb43c5651da5f78997da6061458160ae1f6b279150b42f47ccc58b73e55acaa2f + checksum: 10/021b4263ddd58897171f3f5c467b5c872f76ba2ea07dfc11fa9667ba8d62ccb7f390db3e581139dcc6da94c3ff6306921f574acdb2b94cbc9d7da3e859e24665 languageName: node linkType: hard @@ -12767,14 +12767,14 @@ __metadata: version: 29.1.2 resolution: "ts-jest@npm:29.1.2" dependencies: - bs-logger: 0.x - fast-json-stable-stringify: 2.x - jest-util: ^29.0.0 - json5: ^2.2.3 - lodash.memoize: 4.x - make-error: 1.x - semver: ^7.5.3 - yargs-parser: ^21.0.1 + bs-logger: "npm:0.x" + fast-json-stable-stringify: "npm:2.x" + jest-util: "npm:^29.0.0" + json5: "npm:^2.2.3" + lodash.memoize: "npm:4.x" + make-error: "npm:1.x" + semver: "npm:^7.5.3" + yargs-parser: "npm:^21.0.1" peerDependencies: "@babel/core": ">=7.0.0-beta.0 <8" "@jest/types": ^29.0.0 @@ -12792,14 +12792,14 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: a0ce0affc1b716c78c9ab55837829c42cb04b753d174a5c796bb1ddf9f0379fc20647b76fbe30edb30d9b23181908138d6b4c51ef2ae5e187b66635c295cefd5 + checksum: 10/5e40e7b933a1f3aa0d304d3c53913d1a7125fc79cd44e22b332f6e25dfe13008ddc7ac647066bb4f914d76083f7e8949f0bc156d793c30f3419f4ffd8180968b languageName: node linkType: hard "ts-mixer@npm:^6.0.3": version: 6.0.3 resolution: "ts-mixer@npm:6.0.3" - checksum: 7fbaba0a413bf817835a6a23d46bccf4192dd4d7345b6bae9d594c88acffac35bf4995ef3cce753090c8abcdf2afd16dba8899365584a1f960ccc2a15bf2e2d6 + checksum: 10/ac9178bdac5e5f760472269ad4c461587a0f6793532ddbef1326bb01482425a6247be98f9bd11bf35a9fdd36b63b8c8dde393942b9b9ee52d154eef082fca39a languageName: node linkType: hard @@ -12807,19 +12807,19 @@ __metadata: version: 10.9.1 resolution: "ts-node@npm:10.9.1" dependencies: - "@cspotcode/source-map-support": ^0.8.0 - "@tsconfig/node10": ^1.0.7 - "@tsconfig/node12": ^1.0.7 - "@tsconfig/node14": ^1.0.0 - "@tsconfig/node16": ^1.0.2 - acorn: ^8.4.1 - acorn-walk: ^8.1.1 - arg: ^4.1.0 - create-require: ^1.1.0 - diff: ^4.0.1 - make-error: ^1.1.1 - v8-compile-cache-lib: ^3.0.1 - yn: 3.1.1 + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" peerDependencies: "@swc/core": ">=1.2.50" "@swc/wasm": ">=1.2.50" @@ -12837,35 +12837,35 @@ __metadata: ts-node-script: dist/bin-script.js ts-node-transpile-only: dist/bin-transpile.js ts-script: dist/bin-script-deprecated.js - checksum: 090adff1302ab20bd3486e6b4799e90f97726ed39e02b39e566f8ab674fd5bd5f727f43615debbfc580d33c6d9d1c6b1b3ce7d8e3cca3e20530a145ffa232c35 + checksum: 10/bee56d4dc96ccbafc99dfab7b73fbabc62abab2562af53cdea91c874a301b9d11e42bc33c0a032a6ed6d813dbdc9295ec73dde7b73ea4ebde02b0e22006f7e04 languageName: node linkType: hard "tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd + checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb languageName: node linkType: hard "tslib@npm:^2.0.0": version: 2.5.0 resolution: "tslib@npm:2.5.0" - checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 + checksum: 10/ea556fbdf396fe15dbd45e242754e86e7c36e0dce8644404a7c8a81ae1e940744dc639569aeca1ae370a7f804d82872f3fd8564eb23be9adb7618201d0314dac languageName: node linkType: hard "tslib@npm:^2.6.1": version: 2.6.2 resolution: "tslib@npm:2.6.2" - checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad + checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca languageName: node linkType: hard "tsort@npm:0.0.1": version: 0.0.1 resolution: "tsort@npm:0.0.1" - checksum: 581566c248690b9ea7e431e1545affb3d2cab0f5dcd0e45ddef815dfaec4864cb5f0cfd8072924dedbc0de9585ff07e3e65db60f14fab4123737b9bb6e72eacc + checksum: 10/5f15ca0e91142a72d2acb6e9798a0297b754ce402c8f8bbb63457ee17f062272f3ccdf39f4c3155f0568337cb3b5422410b40cfeed72fe75fbb9a71f016cdcf9 languageName: node linkType: hard @@ -12873,50 +12873,50 @@ __metadata: version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" dependencies: - safe-buffer: ^5.0.1 - checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 + safe-buffer: "npm:^5.0.1" + checksum: 10/7f0d9ed5c22404072b2ae8edc45c071772affd2ed14a74f03b4e71b4dd1a14c3714d85aed64abcaaee5fec2efc79002ba81155c708f4df65821b444abb0cfade languageName: node linkType: hard "tweetnacl-util@npm:^0.15.1": version: 0.15.1 resolution: "tweetnacl-util@npm:0.15.1" - checksum: ae6aa8a52cdd21a95103a4cc10657d6a2040b36c7a6da7b9d3ab811c6750a2d5db77e8c36969e75fdee11f511aa2b91c552496c6e8e989b6e490e54aca2864fc + checksum: 10/ae6aa8a52cdd21a95103a4cc10657d6a2040b36c7a6da7b9d3ab811c6750a2d5db77e8c36969e75fdee11f511aa2b91c552496c6e8e989b6e490e54aca2864fc languageName: node linkType: hard "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" - checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487 + checksum: 10/04ee27901cde46c1c0a64b9584e04c96c5fe45b38c0d74930710751ea991408b405747d01dfae72f80fc158137018aea94f9c38c651cb9c318f0861a310c3679 languageName: node linkType: hard "tweetnacl@npm:^1.0.3": version: 1.0.3 resolution: "tweetnacl@npm:1.0.3" - checksum: e4a57cac188f0c53f24c7a33279e223618a2bfb5fea426231991652a13247bea06b081fd745d71291fcae0f4428d29beba1b984b1f1ce6f66b06a6d1ab90645c + checksum: 10/ca122c2f86631f3c0f6d28efb44af2a301d4a557a62a3e2460286b08e97567b258c2212e4ad1cfa22bd6a57edcdc54ba76ebe946847450ab0999e6d48ccae332 languageName: node linkType: hard "type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.5": version: 4.0.8 resolution: "type-detect@npm:4.0.8" - checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 + checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d languageName: node linkType: hard "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" - checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + checksum: 10/f4254070d9c3d83a6e573bcb95173008d73474ceadbbf620dd32d273940ca18734dff39c2b2480282df9afe5d1675ebed5499a00d791758748ea81f61a38961f languageName: node linkType: hard "type-fest@npm:^0.7.1": version: 0.7.1 resolution: "type-fest@npm:0.7.1" - checksum: 5b1b113529d59949d97b76977d545989ddc11b81bb0c766b6d2ccc65473cb4b4a5c7d24f5be2c2bb2de302a5d7a13c1732ea1d34c8c59b7e0ec1f890cf7fc424 + checksum: 10/0699b6011bb3f7fac5fd5385e2e09432cde08fa89283f24084f29db00ec69a5445cd3aa976438ec74fc552a9a96f4a04ed390b5cb62eb7483aa4b6e5b935e059 languageName: node linkType: hard @@ -12924,23 +12924,23 @@ __metadata: version: 1.6.18 resolution: "type-is@npm:1.6.18" dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10/0bd9eeae5efd27d98fd63519f999908c009e148039d8e7179a074f105362d4fcc214c38b24f6cda79c87e563cbd12083a4691381ed28559220d4a10c2047bed4 languageName: node linkType: hard "type@npm:^1.0.1": version: 1.2.0 resolution: "type@npm:1.2.0" - checksum: dae8c64f82c648b985caf321e9dd6e8b7f4f2e2d4f846fc6fd2c8e9dc7769382d8a52369ddbaccd59aeeceb0df7f52fb339c465be5f2e543e81e810e413451ee + checksum: 10/b4d4b27d1926028be45fc5baaca205896e2a1fe9e5d24dc892046256efbe88de6acd0149e7353cd24dad596e1483e48ec60b0912aa47ca078d68cdd198b09885 languageName: node linkType: hard "type@npm:^2.7.2": version: 2.7.2 resolution: "type@npm:2.7.2" - checksum: 0f42379a8adb67fe529add238a3e3d16699d95b42d01adfe7b9a7c5da297f5c1ba93de39265ba30ffeb37dfd0afb3fb66ae09f58d6515da442219c086219f6f4 + checksum: 10/602f1b369fba60687fa4d0af6fcfb814075bcaf9ed3a87637fb384d9ff849e2ad15bc244a431f341374562e51a76c159527ffdb1f1f24b0f1f988f35a301c41d languageName: node linkType: hard @@ -12948,21 +12948,21 @@ __metadata: version: 8.1.1 resolution: "typechain@npm:8.1.1" dependencies: - "@types/prettier": ^2.1.1 - debug: ^4.3.1 - fs-extra: ^7.0.0 - glob: 7.1.7 - js-sha3: ^0.8.0 - lodash: ^4.17.15 - mkdirp: ^1.0.4 - prettier: ^2.3.1 - ts-command-line-args: ^2.2.0 - ts-essentials: ^7.0.1 + "@types/prettier": "npm:^2.1.1" + debug: "npm:^4.3.1" + fs-extra: "npm:^7.0.0" + glob: "npm:7.1.7" + js-sha3: "npm:^0.8.0" + lodash: "npm:^4.17.15" + mkdirp: "npm:^1.0.4" + prettier: "npm:^2.3.1" + ts-command-line-args: "npm:^2.2.0" + ts-essentials: "npm:^7.0.1" peerDependencies: typescript: ">=4.3.0" bin: typechain: dist/cli/cli.js - checksum: 77984239d9728befe5a484c4e1b55c8f194696fc8a78c44754f8e25ca8fd6d0208ddfcd9e71c90c1c35ac0689f5c3053107b54fdc2aab691c980614f6daf209b + checksum: 10/c8d39ab8b5a5d60c1967ab3c798432b8184a776c8b4cd4e0d9290fa1d8532786f39e2e07cca1f783dfa6905e2838819e012b2fb58e4dd0c3f8466c68e29b3530 languageName: node linkType: hard @@ -12970,10 +12970,10 @@ __metadata: version: 1.0.4 resolution: "typed-array-length@npm:1.0.4" dependencies: - call-bind: ^1.0.2 - for-each: ^0.3.3 - is-typed-array: ^1.1.9 - checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + is-typed-array: "npm:^1.1.9" + checksum: 10/0444658acc110b233176cb0b7689dcb828b0cfa099ab1d377da430e8553b6fdcdce882360b7ffe9ae085b6330e1d39383d7b2c61574d6cd8eef651d3e4a87822 languageName: node linkType: hard @@ -12981,15 +12981,15 @@ __metadata: version: 3.1.5 resolution: "typedarray-to-buffer@npm:3.1.5" dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 + is-typedarray: "npm:^1.0.0" + checksum: 10/7c850c3433fbdf4d04f04edfc751743b8f577828b8e1eb93b95a3bce782d156e267d83e20fb32b3b47813e69a69ab5e9b5342653332f7d21c7d1210661a7a72c languageName: node linkType: hard "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" - checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 + checksum: 10/2cc1bcf7d8c1237f6a16c04efc06637b2c5f2d74e58e84665445cf87668b85a21ab18dd751fa49eee6ae024b70326635d7b79ad37b1c370ed2fec6aeeeb52714 languageName: node linkType: hard @@ -12999,38 +12999,38 @@ __metadata: bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 7912821dac4d962d315c36800fe387cdc0a6298dba7ec171b350b4a6e988b51d7b8f051317786db1094bd7431d526b648aba7da8236607febb26cf5b871d2d3c + checksum: 10/d65e50eb849bd21ff8677e5b9447f9c6e74777e346afd67754934264dcbf4bd59e7d2473f6062d9a015d66bd573311166357e3eb07fea0b52859cf9bb2b58555 languageName: node linkType: hard -"typescript@patch:typescript@5.2.2#~builtin": +"typescript@patch:typescript@npm%3A5.2.2#optional!builtin": version: 5.2.2 - resolution: "typescript@patch:typescript@npm%3A5.2.2#~builtin::version=5.2.2&hash=7ad353" + resolution: "typescript@patch:typescript@npm%3A5.2.2#optional!builtin::version=5.2.2&hash=f3b441" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 07106822b4305de3f22835cbba949a2b35451cad50888759b6818421290ff95d522b38ef7919e70fb381c5fe9c1c643d7dea22c8b31652a717ddbd57b7f4d554 + checksum: 10/f79cc2ba802c94c2b78dbb00d767a10adb67368ae764709737dc277273ec148aa4558033a03ce901406b35fddf4eac46dabc94a1e1d12d2587e2b9cfe5707b4a languageName: node linkType: hard "typical@npm:^4.0.0": version: 4.0.0 resolution: "typical@npm:4.0.0" - checksum: a242081956825328f535e6195a924240b34daf6e7fdb573a1809a42b9f37fb8114fa99c7ab89a695e0cdb419d4149d067f6723e4b95855ffd39c6c4ca378efb3 + checksum: 10/aefe2c24b025cda22534ae2594df4a1df5db05b5fe3692890fd51db741ca4f18937a149f968b8d56d9a7b0756e7cd8843b1907bea21987ff4a06619c54d5a575 languageName: node linkType: hard "typical@npm:^5.2.0": version: 5.2.0 resolution: "typical@npm:5.2.0" - checksum: ccaeb151a9a556291b495571ca44c4660f736fb49c29314bbf773c90fad92e9485d3cc2b074c933866c1595abbbc962f2b8bfc6e0f52a8c6b0cdd205442036ac + checksum: 10/fd8e4197cb2e021ca6d11fea0018ee219c29bf4160ab613492f74c0e21806003d1cd92a15088b111778a7b5c6432e4e28321899785a86980b390b87c4010efe5 languageName: node linkType: hard "ultron@npm:~1.1.0": version: 1.1.1 resolution: "ultron@npm:1.1.1" - checksum: aa7b5ebb1b6e33287b9d873c6756c4b7aa6d1b23d7162ff25b0c0ce5c3c7e26e2ab141a5dc6e96c10ac4d00a372e682ce298d784f06ffcd520936590b4bc0653 + checksum: 10/7cc6e8e98a2c62c87ab25a79a274f90492f13f5cf7c622dbda1ec85913e207aed392c26e76ed6250c4f05f842571b05dcce1f8ad0f5ecded64a99002b1fdf6e5 languageName: node linkType: hard @@ -13038,18 +13038,18 @@ __metadata: version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" dependencies: - call-bind: ^1.0.2 - has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10/06e1ee41c1095e37281cb71a975cb3350f7cb470a0665d2576f02cc9564f623bd90cfc0183693b8a7fdf2d242963dcc3010b509fa3ac683f540c765c0f3e7e43 languageName: node linkType: hard "underscore@npm:^1.13.1": version: 1.13.6 resolution: "underscore@npm:1.13.6" - checksum: d5cedd14a9d0d91dd38c1ce6169e4455bb931f0aaf354108e47bd46d3f2da7464d49b2171a5cf786d61963204a42d01ea1332a903b7342ad428deaafaf70ec36 + checksum: 10/58cf5dc42cb0ac99c146ae4064792c0a2cc84f3a3c4ad88f5082e79057dfdff3371d896d1ec20379e9ece2450d94fa78f2ef5bfefc199ba320653e32c009bd66 languageName: node linkType: hard @@ -13057,8 +13057,8 @@ __metadata: version: 5.22.1 resolution: "undici@npm:5.22.1" dependencies: - busboy: ^1.6.0 - checksum: 048a3365f622be44fb319316cedfaa241c59cf7f3368ae7667a12323447e1822e8cc3d00f6956c852d1478a6fde1cbbe753f49e05f2fdaed229693e716ebaf35 + busboy: "npm:^1.6.0" + checksum: 10/4e4ae061372508bad6c017e0188cdbf1bb73e427d881aefe6277f88cb0bdd45b57bb88d7ab6fc136ff08e7d022bd83ca550a28272aebfb36b28c06fe8f07ac5e languageName: node linkType: hard @@ -13066,8 +13066,8 @@ __metadata: version: 5.20.0 resolution: "undici@npm:5.20.0" dependencies: - busboy: ^1.6.0 - checksum: 25412a785b2bd0b12f0bb0ec47ef00aa7a611ca0e570cb7af97cffe6a42e0d78e4b15190363a43771e9002defc3c6647c1b2d52201b3f64e2196819db4d150d3 + busboy: "npm:^1.6.0" + checksum: 10/080b9d4f8d3209a5732ade1f0fcb4d330b386d5edbe0a17ef6336e43abc1c9430f820e0bdea986d8c69e2c07f4c0b63351a1a018898705e34f0e0bbd554ee62f languageName: node linkType: hard @@ -13075,8 +13075,8 @@ __metadata: version: 1.1.1 resolution: "unique-filename@npm:1.1.1" dependencies: - unique-slug: ^2.0.0 - checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 + unique-slug: "npm:^2.0.0" + checksum: 10/9b6969d649a2096755f19f793315465c6427453b66d67c2a1bee8f36ca7e1fc40725be2c028e974dec110d365bd30a4248e89b1044dc1dfe29663b6867d071ef languageName: node linkType: hard @@ -13084,8 +13084,8 @@ __metadata: version: 2.0.1 resolution: "unique-filename@npm:2.0.1" dependencies: - unique-slug: ^3.0.0 - checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f + unique-slug: "npm:^3.0.0" + checksum: 10/807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f languageName: node linkType: hard @@ -13093,8 +13093,8 @@ __metadata: version: 2.0.2 resolution: "unique-slug@npm:2.0.2" dependencies: - imurmurhash: ^0.1.4 - checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a + imurmurhash: "npm:^0.1.4" + checksum: 10/6cfaf91976acc9c125fd0686c561ee9ca0784bb4b2b408972e6cd30e747b4ff0ca50264c01bcf5e711b463535ea611ffb84199e9f73088cd79ac9ddee8154042 languageName: node linkType: hard @@ -13102,22 +13102,22 @@ __metadata: version: 3.0.0 resolution: "unique-slug@npm:3.0.0" dependencies: - imurmurhash: ^0.1.4 - checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c + imurmurhash: "npm:^0.1.4" + checksum: 10/26fc5bc209a875956dd5e84ca39b89bc3be777b112504667c35c861f9547df95afc80439358d836b878b6d91f6ee21fe5ba1a966e9ec2e9f071ddf3fd67d45ee languageName: node linkType: hard "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" - checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff + checksum: 10/40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff languageName: node linkType: hard "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" - checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 + checksum: 10/4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 languageName: node linkType: hard @@ -13125,13 +13125,13 @@ __metadata: version: 1.0.10 resolution: "update-browserslist-db@npm:1.0.10" dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 + escalade: "npm:^3.1.1" + picocolors: "npm:^1.0.0" peerDependencies: browserslist: ">= 4.21.0" bin: browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 + checksum: 10/2c88096ca99918efc77a514458c4241b3f2a8e7882aa91b97251231240c30c71e82cb2043aaf12e40eba6bebda3369010e180a58bc11bbd0bca29094945c31cb languageName: node linkType: hard @@ -13139,15 +13139,15 @@ __metadata: version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 + punycode: "npm:^2.1.0" + checksum: 10/b271ca7e3d46b7160222e3afa3e531505161c9a4e097febae9664e4b59912f4cbe94861361a4175edac3a03fee99d91e44b6a58c17a634bc5a664b19fc76fbcb languageName: node linkType: hard "url-set-query@npm:^1.0.0": version: 1.0.0 resolution: "url-set-query@npm:1.0.0" - checksum: 5ad73525e8f3ab55c6bf3ddc70a43912e65ff9ce655d7868fdcefdf79f509cfdddde4b07150797f76186f1a47c0ecd2b7bb3687df8f84757dee4110cf006e12d + checksum: 10/a6e4d1ac5c3e7db8644655a2774b9462d8d95ec7abae341ff53d4a3d03adc2dabc38650dc757659fcbce4859372bbea4a896ac842dd5b54cc22aae087ba35664 languageName: node linkType: hard @@ -13155,9 +13155,9 @@ __metadata: version: 0.11.0 resolution: "url@npm:0.11.0" dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90 + punycode: "npm:1.3.2" + querystring: "npm:0.2.0" + checksum: 10/beec744c7ade6ef178fd631e2fe70110c5c53f9e7caea5852703214bfcbf03fd136b98b3b6f4a08bd2420a76f569cbc10c2a86ade7f836ac7d9ff27ed62d8d2d languageName: node linkType: hard @@ -13165,9 +13165,9 @@ __metadata: version: 5.0.7 resolution: "utf-8-validate@npm:5.0.7" dependencies: - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: 588d272b359bf555a0c4c2ffe97286edc73126de132f63f4f0c80110bd06b67d3ce44d2b3d24feea6da13ced50c04d774ba4d25fe28576371cd714cd013bd3b7 + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10/05045f5348747f63ad56caf93ceca240f180f341f7f6ea5c02625265293b0c237a726ff29e2cc2270037efd04cab6bdb4aff650dcdc0232d2c6c6e2809b479ad languageName: node linkType: hard @@ -13175,23 +13175,23 @@ __metadata: version: 5.0.10 resolution: "utf-8-validate@npm:5.0.10" dependencies: - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: 5579350a023c66a2326752b6c8804cc7b39dcd251bb088241da38db994b8d78352e388dcc24ad398ab98385ba3c5ffcadb6b5b14b2637e43f767869055e46ba6 + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10/b89cbc13b4badad04828349ebb7aa2ab1edcb02b46ab12ce0ba5b2d6886d684ad4e93347819e3c8d36224c8742422d2dca69f5cc16c72ae4d7eeecc0c5cb544b languageName: node linkType: hard "utf8@npm:3.0.0": version: 3.0.0 resolution: "utf8@npm:3.0.0" - checksum: cb89a69ad9ab393e3eae9b25305b3ff08bebca9adc839191a34f90777eb2942f86a96369d2839925fea58f8f722f7e27031d697f10f5f39690f8c5047303e62d + checksum: 10/31d19c4faacbb65b09ebc1c21c32b20bdb0919c6f6773cee5001b99bb83f8e503e7233c08fc71ebb34f7cfebd95cec3243b81d90176097aa2f286cccb4ce866e languageName: node linkType: hard "util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + checksum: 10/474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 languageName: node linkType: hard @@ -13199,26 +13199,26 @@ __metadata: version: 0.12.5 resolution: "util@npm:0.12.5" dependencies: - inherits: ^2.0.3 - is-arguments: ^1.0.4 - is-generator-function: ^1.0.7 - is-typed-array: ^1.1.3 - which-typed-array: ^1.1.2 - checksum: 705e51f0de5b446f4edec10739752ac25856541e0254ea1e7e45e5b9f9b0cb105bc4bd415736a6210edc68245a7f903bf085ffb08dd7deb8a0e847f60538a38a + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10/61a10de7753353dd4d744c917f74cdd7d21b8b46379c1e48e1c4fd8e83f8190e6bd9978fc4e5102ab6a10ebda6019d1b36572fa4a325e175ec8b789a121f6147 languageName: node linkType: hard "utils-merge@npm:1.0.1": version: 1.0.1 resolution: "utils-merge@npm:1.0.1" - checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 + checksum: 10/5d6949693d58cb2e636a84f3ee1c6e7b2f9c16cb1d42d0ecb386d8c025c69e327205aa1c69e2868cc06a01e5e20681fbba55a4e0ed0cce913d60334024eae798 languageName: node linkType: hard "uuid@npm:2.0.1": version: 2.0.1 resolution: "uuid@npm:2.0.1" - checksum: e129e494e33cededdfc2cefbd63da966344b873bbfd3373a311b0acc2e7ab53d68b2515879444898867d84b863e44939e852484b9f3a54c4fd86d985a7dadb8d + checksum: 10/a5772e9231dd1e4fb111915f8ffe59f499bae7c20dfde09ac457a7a62b12abd6112d082496bdd209277cba1ac4e7a2bc83b8748ae0ca8fc74401b1df31f126e0 languageName: node linkType: hard @@ -13227,7 +13227,7 @@ __metadata: resolution: "uuid@npm:3.4.0" bin: uuid: ./bin/uuid - checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f + checksum: 10/4f2b86432b04cc7c73a0dd1bcf11f1fc18349d65d2e4e32dd0fc658909329a1e0cc9244aa93f34c0cccfdd5ae1af60a149251a5f420ec3ac4223a3dab198fb2e languageName: node linkType: hard @@ -13236,7 +13236,7 @@ __metadata: resolution: "uuid@npm:7.0.3" bin: uuid: dist/bin/uuid - checksum: f5b7b5cc28accac68d5c083fd51cca64896639ebd4cca88c6cfb363801aaa83aa439c86dfc8446ea250a7a98d17afd2ad9e88d9d4958c79a412eccb93bae29de + checksum: 10/b2a4d30ecd6581015175487426558aafd7f7b4013a2e30802c128cc28cad9abe46ecd36c02f7fbcde7908fd4672334818d56a441c0871963d6bd89d911bef2ea languageName: node linkType: hard @@ -13245,7 +13245,7 @@ __metadata: resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df + checksum: 10/9a5f7aa1d6f56dd1e8d5f2478f855f25c645e64e26e347a98e98d95781d5ed20062d6cca2eecb58ba7c84bc3910be95c0451ef4161906abaab44f9cb68ffbdd1 languageName: node linkType: hard @@ -13254,14 +13254,14 @@ __metadata: resolution: "uuid@npm:9.0.0" bin: uuid: dist/bin/uuid - checksum: 8dd2c83c43ddc7e1c71e36b60aea40030a6505139af6bee0f382ebcd1a56f6cd3028f7f06ffb07f8cf6ced320b76aea275284b224b002b289f89fe89c389b028 + checksum: 10/23857699a616d1b48224bc2b8440eae6e57d25463c3a0200e514ba8279dfa3bde7e92ea056122237839cfa32045e57d8f8f4a30e581d720fd72935572853ae2e languageName: node linkType: hard "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 78089ad549e21bcdbfca10c08850022b22024cdcc2da9b168bcf5a73a6ed7bf01a9cebb9eac28e03cd23a684d81e0502797e88f3ccd27a32aeab1cfc44c39da0 + checksum: 10/88d3423a52b6aaf1836be779cab12f7016d47ad8430dffba6edf766695e6d90ad4adaa3d8eeb512cc05924f3e246c4a4ca51e089dccf4402caa536b5e5be8961 languageName: node linkType: hard @@ -13269,24 +13269,24 @@ __metadata: version: 9.1.0 resolution: "v8-to-istanbul@npm:9.1.0" dependencies: - "@jridgewell/trace-mapping": ^0.3.12 - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - checksum: 2069d59ee46cf8d83b4adfd8a5c1a90834caffa9f675e4360f1157ffc8578ef0f763c8f32d128334424159bb6b01f3876acd39cd13297b2769405a9da241f8d1 + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^1.6.0" + checksum: 10/95811ff2f17a31432c3fc7b3027b7e8c2c6ca5e60a7811c5050ce51920ab2b80df29feb04c52235bbfdaa9a6809acd5a5dd9668292e98c708617c19e087c3f68 languageName: node linkType: hard "varint@npm:^5.0.0": version: 5.0.2 resolution: "varint@npm:5.0.2" - checksum: e1a66bf9a6cea96d1f13259170d4d41b845833acf3a9df990ea1e760d279bd70d5b1f4c002a50197efd2168a2fd43eb0b808444600fd4d23651e8d42fe90eb05 + checksum: 10/e1a66bf9a6cea96d1f13259170d4d41b845833acf3a9df990ea1e760d279bd70d5b1f4c002a50197efd2168a2fd43eb0b808444600fd4d23651e8d42fe90eb05 languageName: node linkType: hard "vary@npm:^1, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + checksum: 10/31389debef15a480849b8331b220782230b9815a8e0dbb7b9a8369559aed2e9a7800cd904d4371ea74f4c3527db456dc8e7ac5befce5f0d289014dbdf47b2242 languageName: node linkType: hard @@ -13294,10 +13294,10 @@ __metadata: version: 1.10.0 resolution: "verror@npm:1.10.0" dependencies: - assert-plus: ^1.0.0 - core-util-is: 1.0.2 - extsprintf: ^1.2.0 - checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea + assert-plus: "npm:^1.0.0" + core-util-is: "npm:1.0.2" + extsprintf: "npm:^1.2.0" + checksum: 10/da548149dd9c130a8a2587c9ee71ea30128d1526925707e2d01ed9c5c45c9e9f86733c66a328247cdd5f7c1516fb25b0f959ba754bfbe15072aa99ff96468a29 languageName: node linkType: hard @@ -13305,11 +13305,11 @@ __metadata: version: 2.2.0 resolution: "walk-sync@npm:2.2.0" dependencies: - "@types/minimatch": ^3.0.3 - ensure-posix-path: ^1.1.0 - matcher-collection: ^2.0.0 - minimatch: ^3.0.4 - checksum: e579b574f769977a739607d4feba40ded8931ff641f26964ea5a10a280d648d1c1aca260e9ab60288f16d69500ff33687d3ba5fa4dbd427090123189f0f0c9b6 + "@types/minimatch": "npm:^3.0.3" + ensure-posix-path: "npm:^1.1.0" + matcher-collection: "npm:^2.0.0" + minimatch: "npm:^3.0.4" + checksum: 10/e579b574f769977a739607d4feba40ded8931ff641f26964ea5a10a280d648d1c1aca260e9ab60288f16d69500ff33687d3ba5fa4dbd427090123189f0f0c9b6 languageName: node linkType: hard @@ -13317,15 +13317,15 @@ __metadata: version: 1.0.8 resolution: "walker@npm:1.0.8" dependencies: - makeerror: 1.0.12 - checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c + makeerror: "npm:1.0.12" + checksum: 10/ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c languageName: node linkType: hard "wasmbuilder@npm:0.0.16": version: 0.0.16 resolution: "wasmbuilder@npm:0.0.16" - checksum: a9c8ef4a0a770f71865dc7a75bc22e5204227ff6d70bed90e57f7df5939a013d4177947ea4c2c3fdfe6761b92d975908ea846c463ee635d1c95e1a3c434b7ee1 + checksum: 10/c2326ef199302e80876216f31f729c6a5aa7eb54f35a85c669bb55a8c7d3f23327caeb282d3f898f3787adc60233f297edf28f897bb128efbaa8156aac7edb0b languageName: node linkType: hard @@ -13333,15 +13333,15 @@ __metadata: version: 0.2.0 resolution: "wasmcurves@npm:0.2.0" dependencies: - wasmbuilder: 0.0.16 - checksum: 0769ca2d0c2f99619436f86dcab16294d94cc0c8a114b0c5e6ed71df49625a6ad35000011fee57471b7647838eeb75f631e74b200996ac2513e8ca0c47e5b8d0 + wasmbuilder: "npm:0.0.16" + checksum: 10/38a8e500ba4faa6fc928bc28eb01e65936648ebcf07fb32acb3effe551bfa006ff853eb77280eeeb7093983ce0eb6870c40bbefb42a30768b825f69f12925fe3 languageName: node linkType: hard "web-worker@npm:^1.2.0": version: 1.2.0 resolution: "web-worker@npm:1.2.0" - checksum: 1bb28348ddcf9b2e7c62c5fd02e49a84098795856cd905456de957271bba288e9618941cf69d8960f0a7ae81f5dfb74b427c0634be47ec69e3e955c4ec5213be + checksum: 10/61a9d046504891ea25754eae08053a4f62a52798a5612039da9df92aca6c52c47eb0e2e35dbbe4c7ba1ba9622ad5783479ddd2e391ae6aed1f99c9b278309c53 languageName: node linkType: hard @@ -13349,10 +13349,10 @@ __metadata: version: 1.10.0 resolution: "web3-bzz@npm:1.10.0" dependencies: - "@types/node": ^12.12.6 - got: 12.1.0 - swarm-js: ^0.1.40 - checksum: a4b6766e23ca4b2d37b0390aaf0c7f8a1246e90be843dc7183a04a1960d60998fc9267234aba9989e7e87db837dac58d4dee027071ecce29344611e20f3b9ffc + "@types/node": "npm:^12.12.6" + got: "npm:12.1.0" + swarm-js: "npm:^0.1.40" + checksum: 10/3cfc6eedc5ba963d6580833e242a2dd6adf6076502cef31f02e3e5a0bb85243b6e1bcf63bb4d194f315ffca5bcf432441c9f2915aa1fea03224c860966b8c628 languageName: node linkType: hard @@ -13360,9 +13360,9 @@ __metadata: version: 1.10.0 resolution: "web3-core-helpers@npm:1.10.0" dependencies: - web3-eth-iban: 1.10.0 - web3-utils: 1.10.0 - checksum: 3f8b8ed5e3f56c5760452e5d8850d77607cd7046392c7df78a0903611dcbf875acc9bff04bbc397cd967ce27d45b61de19dcf47fada0c958f54a5d69181a40a6 + web3-eth-iban: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/0af64b9467df7b7d738c28d97ddcdc9d0800838daea25c1197efec5b4e2c50d010b95c1c55ed210e4c5c9a056bb2c1621825623a8d9332ebc93f77c908a0dc80 languageName: node linkType: hard @@ -13370,12 +13370,12 @@ __metadata: version: 1.10.0 resolution: "web3-core-method@npm:1.10.0" dependencies: - "@ethersproject/transactions": ^5.6.2 - web3-core-helpers: 1.10.0 - web3-core-promievent: 1.10.0 - web3-core-subscriptions: 1.10.0 - web3-utils: 1.10.0 - checksum: 29c42c92f0f6d895245c6d3dba4adffd822787b09bee0d9953a5d50365ae1ab0559085e9d6104e2dfb00b372fbf02ff1d6292c9a9e565ada1a5c531754d654cd + "@ethersproject/transactions": "npm:^5.6.2" + web3-core-helpers: "npm:1.10.0" + web3-core-promievent: "npm:1.10.0" + web3-core-subscriptions: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/a5d9783bd73e0f3e05ec3b7013bcf103303af9f211bed471f791db418b21f12028a5f07509be3d8dabe30f32789dd8529c743363bc4cc90eb16e7a6b8df5c80e languageName: node linkType: hard @@ -13383,8 +13383,8 @@ __metadata: version: 1.10.0 resolution: "web3-core-promievent@npm:1.10.0" dependencies: - eventemitter3: 4.0.4 - checksum: 68e9f40f78d92ce1ee9808d04a28a89d20ab4dc36af5ba8405f132044cbb01825f76f35249a9599f9568a95d5e7c9e4a09ada6d4dc2e27e0c1b32c9232c8c973 + eventemitter3: "npm:4.0.4" + checksum: 10/68e9f40f78d92ce1ee9808d04a28a89d20ab4dc36af5ba8405f132044cbb01825f76f35249a9599f9568a95d5e7c9e4a09ada6d4dc2e27e0c1b32c9232c8c973 languageName: node linkType: hard @@ -13392,12 +13392,12 @@ __metadata: version: 1.10.0 resolution: "web3-core-requestmanager@npm:1.10.0" dependencies: - util: ^0.12.5 - web3-core-helpers: 1.10.0 - web3-providers-http: 1.10.0 - web3-providers-ipc: 1.10.0 - web3-providers-ws: 1.10.0 - checksum: ce63b521b70b4e159510abf9d70e09d0c704b924a83951b350bb1d8f56b03dae21d3ea709a118019d272f754940ad6f6772002e7a8692bf733126fee80c84226 + util: "npm:^0.12.5" + web3-core-helpers: "npm:1.10.0" + web3-providers-http: "npm:1.10.0" + web3-providers-ipc: "npm:1.10.0" + web3-providers-ws: "npm:1.10.0" + checksum: 10/6be2ef8996987d8781d8b2f4d6dca3312acb3359de67d864733392b8220965466a220a8170dad8d87025d708822f7713bfb0c775f27c889c4f8e3a1974b5076b languageName: node linkType: hard @@ -13405,9 +13405,9 @@ __metadata: version: 1.10.0 resolution: "web3-core-subscriptions@npm:1.10.0" dependencies: - eventemitter3: 4.0.4 - web3-core-helpers: 1.10.0 - checksum: baca40f4d34da03bf4e6d64a13d9498a3ebfa37544869921671340d83581c87efbe3830998ae99db776fa22f0cdb529f9bb1fe7d516de1f9ce7b9da1c3a63859 + eventemitter3: "npm:4.0.4" + web3-core-helpers: "npm:1.10.0" + checksum: 10/009b85acfa19154bc73f48a55ac80c527cd2815556ab70f8fffc86e007e82b8b702e8ad6512c99fa209e69a7e76fcda5fd326132a553cea3991e1f09225b25a0 languageName: node linkType: hard @@ -13415,14 +13415,14 @@ __metadata: version: 1.10.0 resolution: "web3-core@npm:1.10.0" dependencies: - "@types/bn.js": ^5.1.1 - "@types/node": ^12.12.6 - bignumber.js: ^9.0.0 - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-core-requestmanager: 1.10.0 - web3-utils: 1.10.0 - checksum: 075b6dbf743e8cfad2aa1b9d603a45f0f30998c778af22cd0090d455a027e0658c398721a2a270c218dc2a561cbfd5cdbfe5ca14a6c2f5cd4afc8743e05a2e60 + "@types/bn.js": "npm:^5.1.1" + "@types/node": "npm:^12.12.6" + bignumber.js: "npm:^9.0.0" + web3-core-helpers: "npm:1.10.0" + web3-core-method: "npm:1.10.0" + web3-core-requestmanager: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/dcef60d5c51a1a6c5f1d8b82c22a1358b6d751d117362792f468cd0918814ede2614d972fb7b10e39bb65b9e9d8ed7a54996cd8f1db84ddf04cf328ce0259d76 languageName: node linkType: hard @@ -13430,9 +13430,9 @@ __metadata: version: 1.10.0 resolution: "web3-eth-abi@npm:1.10.0" dependencies: - "@ethersproject/abi": ^5.6.3 - web3-utils: 1.10.0 - checksum: 465a4c19d6d8b41592871cb82e64fc0847093614d9f377939a731a691262a7e01398d8fe9e37f63e8d654707841a532c1161582ddaf87c52a66412a0285805c5 + "@ethersproject/abi": "npm:^5.6.3" + web3-utils: "npm:1.10.0" + checksum: 10/f0839e797d0ad1271ed94650b9850df7630110b7ebc68028f7d7d18906160d90155f56dddaa6c5571b63cafd71ce9b0f84cf35d9e1b50f85c3c93a2469260a98 languageName: node linkType: hard @@ -13440,17 +13440,17 @@ __metadata: version: 1.10.0 resolution: "web3-eth-accounts@npm:1.10.0" dependencies: - "@ethereumjs/common": 2.5.0 - "@ethereumjs/tx": 3.3.2 - eth-lib: 0.2.8 - ethereumjs-util: ^7.1.5 - scrypt-js: ^3.0.1 - uuid: ^9.0.0 - web3-core: 1.10.0 - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-utils: 1.10.0 - checksum: 93821129133a30596e3008af31beb2f26d74157f56e5a669e22565dc991f13747d3d9150202860f93709a8a2a6ec80eaf12bee78f4e03d5ab60e28d7ee68d888 + "@ethereumjs/common": "npm:2.5.0" + "@ethereumjs/tx": "npm:3.3.2" + eth-lib: "npm:0.2.8" + ethereumjs-util: "npm:^7.1.5" + scrypt-js: "npm:^3.0.1" + uuid: "npm:^9.0.0" + web3-core: "npm:1.10.0" + web3-core-helpers: "npm:1.10.0" + web3-core-method: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/f97f81292f950f2f98ff01136f49b65f4f2468551cfce87169b4820b4f92afec5c3d5a1223c6aba6a46d872c854f56a3911fe36f7f902c0ac1fe43c17125802d languageName: node linkType: hard @@ -13458,15 +13458,15 @@ __metadata: version: 1.10.0 resolution: "web3-eth-contract@npm:1.10.0" dependencies: - "@types/bn.js": ^5.1.1 - web3-core: 1.10.0 - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-core-promievent: 1.10.0 - web3-core-subscriptions: 1.10.0 - web3-eth-abi: 1.10.0 - web3-utils: 1.10.0 - checksum: 7a0c24686a128dc08e4d532866feaab28f4d59d95c89a00779e37e956116e90fac27efca0d4911b845739f2fd54cfa1f455c5cdf7e88c27d6e553d5bff86f381 + "@types/bn.js": "npm:^5.1.1" + web3-core: "npm:1.10.0" + web3-core-helpers: "npm:1.10.0" + web3-core-method: "npm:1.10.0" + web3-core-promievent: "npm:1.10.0" + web3-core-subscriptions: "npm:1.10.0" + web3-eth-abi: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/eadb91ec20875567732a670b6dcc74fb8192c3b0cdd1bb3055133c74444ec46e4dbfedf3533afbb67996bad23b558b90fbd95c7bb79203f33f35e9369b78cb4d languageName: node linkType: hard @@ -13474,15 +13474,15 @@ __metadata: version: 1.10.0 resolution: "web3-eth-ens@npm:1.10.0" dependencies: - content-hash: ^2.5.2 - eth-ens-namehash: 2.0.8 - web3-core: 1.10.0 - web3-core-helpers: 1.10.0 - web3-core-promievent: 1.10.0 - web3-eth-abi: 1.10.0 - web3-eth-contract: 1.10.0 - web3-utils: 1.10.0 - checksum: 31c1c6c4303ab6a0036362d5bbc5c55c173cc12823a9ccea8df6609e11ae49374944a15c7810f4f425b65ab2f5062960ebb8efe55cdc22aa3232eca2607a0922 + content-hash: "npm:^2.5.2" + eth-ens-namehash: "npm:2.0.8" + web3-core: "npm:1.10.0" + web3-core-helpers: "npm:1.10.0" + web3-core-promievent: "npm:1.10.0" + web3-eth-abi: "npm:1.10.0" + web3-eth-contract: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/56a53f1e330caecbcafd7c2fbad8a3fb84354c40df86236d7e8953a532e7b970cb6ac70ef995a1c6d9f0af227f902cb90a066d933db20d95b565e000bf7f6b4f languageName: node linkType: hard @@ -13490,9 +13490,9 @@ __metadata: version: 1.10.0 resolution: "web3-eth-iban@npm:1.10.0" dependencies: - bn.js: ^5.2.1 - web3-utils: 1.10.0 - checksum: ca0921f0a232a343a538f6376e55ef3e29e952fba613ecda09dde82149e8088581d8f93da2ed2d8b7e008abdf6610eecc0f4f25efba0ecf412156fd70e9869c0 + bn.js: "npm:^5.2.1" + web3-utils: "npm:1.10.0" + checksum: 10/02e0a1b071b7cda1c03d2940d93f585724b8348d5d65a949f174f8bd48aeff8d6cfc700123150bf39265122667c46e2542e671c54e4bacd53f9895d31109a4c7 languageName: node linkType: hard @@ -13500,13 +13500,13 @@ __metadata: version: 1.10.0 resolution: "web3-eth-personal@npm:1.10.0" dependencies: - "@types/node": ^12.12.6 - web3-core: 1.10.0 - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-net: 1.10.0 - web3-utils: 1.10.0 - checksum: e6c1f540d763e691d81042ec4d0a27b95345bd3ae338b8dffa36bb1a34ae34ec0193c3f0a9ff324fca2918de0d66b022750ee007cf2c3a65241028e852195356 + "@types/node": "npm:^12.12.6" + web3-core: "npm:1.10.0" + web3-core-helpers: "npm:1.10.0" + web3-core-method: "npm:1.10.0" + web3-net: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/abf9f2fbc4f7723be01f778a60511eb3303172f60f66f7d9cf0ce5bca6f0278ec27e3094bb2ef043f2f4025e44ccd44dba793b3e26294dfb2f38cfee27888daa languageName: node linkType: hard @@ -13514,19 +13514,19 @@ __metadata: version: 1.10.0 resolution: "web3-eth@npm:1.10.0" dependencies: - web3-core: 1.10.0 - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-core-subscriptions: 1.10.0 - web3-eth-abi: 1.10.0 - web3-eth-accounts: 1.10.0 - web3-eth-contract: 1.10.0 - web3-eth-ens: 1.10.0 - web3-eth-iban: 1.10.0 - web3-eth-personal: 1.10.0 - web3-net: 1.10.0 - web3-utils: 1.10.0 - checksum: d82332a20508667cf69d216530baa541c69fc44046bb7c57f0f85ba09c0eeaab753146388c66d0313673d0ea93be9325817e34cc69d7f4ddf9e01c43a130a2fe + web3-core: "npm:1.10.0" + web3-core-helpers: "npm:1.10.0" + web3-core-method: "npm:1.10.0" + web3-core-subscriptions: "npm:1.10.0" + web3-eth-abi: "npm:1.10.0" + web3-eth-accounts: "npm:1.10.0" + web3-eth-contract: "npm:1.10.0" + web3-eth-ens: "npm:1.10.0" + web3-eth-iban: "npm:1.10.0" + web3-eth-personal: "npm:1.10.0" + web3-net: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/9e254707af47ea9d701b9decd0576c76c6f27b5122da3a1570e6674b9ba4a9a5ad9f52562c03b312a24c73d0478f6de548823ce24e8013293d3d3a7f7a88596a languageName: node linkType: hard @@ -13534,10 +13534,10 @@ __metadata: version: 1.10.0 resolution: "web3-net@npm:1.10.0" dependencies: - web3-core: 1.10.0 - web3-core-method: 1.10.0 - web3-utils: 1.10.0 - checksum: 5183d897ccf539adafa60e8372871f8d8ecf4c46a0943aeee1d5f78a54c8faddfcb2406269ab422e57ef871c29496dba1bffbe044693b559a3bcd7957af87363 + web3-core: "npm:1.10.0" + web3-core-method: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/5183d897ccf539adafa60e8372871f8d8ecf4c46a0943aeee1d5f78a54c8faddfcb2406269ab422e57ef871c29496dba1bffbe044693b559a3bcd7957af87363 languageName: node linkType: hard @@ -13545,11 +13545,11 @@ __metadata: version: 1.10.0 resolution: "web3-providers-http@npm:1.10.0" dependencies: - abortcontroller-polyfill: ^1.7.3 - cross-fetch: ^3.1.4 - es6-promise: ^4.2.8 - web3-core-helpers: 1.10.0 - checksum: 2fe7c3485626e5e7cb3dd54d05e74f35aec306afe25ae35047e4db1ad75a01a4490d8abf8caa2648400c597d8a252d8cca9950977af2dc242b0ba1f95ab2d2c2 + abortcontroller-polyfill: "npm:^1.7.3" + cross-fetch: "npm:^3.1.4" + es6-promise: "npm:^4.2.8" + web3-core-helpers: "npm:1.10.0" + checksum: 10/4a1742056f4f3b548d5ed3bc763470d1c49b00586eeb11ed6c0ff4ce3397b6fec69259dec48b2bb5f8b64f2bf81b275e720e4a488a0d3510aab234273b537ff7 languageName: node linkType: hard @@ -13557,9 +13557,9 @@ __metadata: version: 1.10.0 resolution: "web3-providers-ipc@npm:1.10.0" dependencies: - oboe: 2.1.5 - web3-core-helpers: 1.10.0 - checksum: 103cb6b26ced5c79f76178ae4339e867f09128a8bf5041553966dbc23fb63a4de638a619cadf1f4c4fdff4f352cd63bce54f1fe2eb582fc18cea11ea64067a71 + oboe: "npm:2.1.5" + web3-core-helpers: "npm:1.10.0" + checksum: 10/7e1f42ceb8fb945589fbb2c85464d26e49df4649fdbbec578b2fa8114484b334f8fa47a585f4ee86efc2c9a3dc3971a0ccc829e3297d00c73ba4a3c291f81963 languageName: node linkType: hard @@ -13567,10 +13567,10 @@ __metadata: version: 1.10.0 resolution: "web3-providers-ws@npm:1.10.0" dependencies: - eventemitter3: 4.0.4 - web3-core-helpers: 1.10.0 - websocket: ^1.0.32 - checksum: 0784334a9ad61c209468335bfed4f656e23b4aab8bddf834de29895fde79309bffe90bfbc65b975c6ea4870ef4521b90469aabeb3124b99d905d1a52ca7bcbe3 + eventemitter3: "npm:4.0.4" + web3-core-helpers: "npm:1.10.0" + websocket: "npm:^1.0.32" + checksum: 10/6a0f765b929592c4f45b6286002f56d65bb972c5ecffb5c911442bfd8062df400726b54cd26777a5ab43f57ac861163f55e06b1867c0b45d8a8fea2ebf25aeaa languageName: node linkType: hard @@ -13578,11 +13578,11 @@ __metadata: version: 1.10.0 resolution: "web3-shh@npm:1.10.0" dependencies: - web3-core: 1.10.0 - web3-core-method: 1.10.0 - web3-core-subscriptions: 1.10.0 - web3-net: 1.10.0 - checksum: 7f4b39ba4b4f6107cb21d00d11821eb68af40d7e59e8fedf385c318954f9d9288bd075014322752e27a1d663a4c40d28bbd46ddb4e336519db9e96c9b0d3821d + web3-core: "npm:1.10.0" + web3-core-method: "npm:1.10.0" + web3-core-subscriptions: "npm:1.10.0" + web3-net: "npm:1.10.0" + checksum: 10/d51b29a2c953855b2ace74c53a18fe24399ff34533750710096d249a164725cd64a686fc90a5b1e4209c85a3824d6ec02c5d4615dd3ca66c020e8d4a18dba1bf languageName: node linkType: hard @@ -13590,14 +13590,14 @@ __metadata: version: 1.10.0 resolution: "web3-utils@npm:1.10.0" dependencies: - bn.js: ^5.2.1 - ethereum-bloom-filters: ^1.0.6 - ethereumjs-util: ^7.1.0 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: ^2.1.0 - utf8: 3.0.0 - checksum: c6b7662359c0513b5cbfe02cdcb312ce9152778bb19d94d413d44f74cfaa93b7de97190ab6ba11af25a40855c949d2427dcb751929c6d0f257da268c55a3ba2a + bn.js: "npm:^5.2.1" + ethereum-bloom-filters: "npm:^1.0.6" + ethereumjs-util: "npm:^7.1.0" + ethjs-unit: "npm:0.1.6" + number-to-bn: "npm:1.7.0" + randombytes: "npm:^2.1.0" + utf8: "npm:3.0.0" + checksum: 10/8766d5bafafe37a0c647c79ea1adf5782e90b8db71133a92e5e492d04af3be65c33562a22f5a29a303c034d1fa755d08a71bd83e3a3e236101bd0e13e75b31da languageName: node linkType: hard @@ -13605,21 +13605,21 @@ __metadata: version: 1.10.0 resolution: "web3@npm:1.10.0" dependencies: - web3-bzz: 1.10.0 - web3-core: 1.10.0 - web3-eth: 1.10.0 - web3-eth-personal: 1.10.0 - web3-net: 1.10.0 - web3-shh: 1.10.0 - web3-utils: 1.10.0 - checksum: 21cce929b71b8de6844eadd6bcf611dfb91f16f2e8b89bec3f3d18b2e2548b4a2a629886962935cc15fac0ce74c9a00d9ca6b53f4be6a81bd68d17689eb134a9 + web3-bzz: "npm:1.10.0" + web3-core: "npm:1.10.0" + web3-eth: "npm:1.10.0" + web3-eth-personal: "npm:1.10.0" + web3-net: "npm:1.10.0" + web3-shh: "npm:1.10.0" + web3-utils: "npm:1.10.0" + checksum: 10/9c8349a46d01bc1b91483a953f6e9078b3a15af451a3092c0ac663cb05f6acb1be6ea4ce82646af27373889bdc9ab94c82ec9c6544d11ab7eec3d911a94d929b languageName: node linkType: hard "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c + checksum: 10/b65b9f8d6854572a84a5c69615152b63371395f0c5dcd6729c45789052296df54314db2bc3e977df41705eacb8bc79c247cee139a63fa695192f95816ed528ad languageName: node linkType: hard @@ -13627,13 +13627,13 @@ __metadata: version: 1.0.34 resolution: "websocket@npm:1.0.34" dependencies: - bufferutil: ^4.0.1 - debug: ^2.2.0 - es5-ext: ^0.10.50 - typedarray-to-buffer: ^3.1.5 - utf-8-validate: ^5.0.2 - yaeti: ^0.0.6 - checksum: 8a0ce6d79cc1334bb6ea0d607f0092f3d32700b4dd19e4d5540f2a85f3b50e1f8110da0e4716737056584dde70bbebcb40bbd94bbb437d7468c71abfbfa077d8 + bufferutil: "npm:^4.0.1" + debug: "npm:^2.2.0" + es5-ext: "npm:^0.10.50" + typedarray-to-buffer: "npm:^3.1.5" + utf-8-validate: "npm:^5.0.2" + yaeti: "npm:^0.0.6" + checksum: 10/b72e3dcc3fa92b4a4511f0df89b25feed6ab06979cb9e522d2736f09855f4bf7588d826773b9405fcf3f05698200eb55ba9da7ef333584653d4912a5d3b13c18 languageName: node linkType: hard @@ -13641,9 +13641,9 @@ __metadata: version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10/f95adbc1e80820828b45cc671d97da7cd5e4ef9deb426c31bcd5ab00dc7103042291613b3ef3caec0a2335ed09e0d5ed026c940755dbb6d404e2b27f940fdf07 languageName: node linkType: hard @@ -13651,19 +13651,19 @@ __metadata: version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10/9c7ca7855255f25ac47f4ce8b59c4cc33629e713fd7a165c9d77a2bb47bf3d9655a5664660c70337a3221cf96742f3589fae15a3a33639908d33e29aa2941efb languageName: node linkType: hard "which-module@npm:^2.0.0": version: 2.0.0 resolution: "which-module@npm:2.0.0" - checksum: 809f7fd3dfcb2cdbe0180b60d68100c88785084f8f9492b0998c051d7a8efe56784492609d3f09ac161635b78ea29219eb1418a98c15ce87d085bce905705c9c + checksum: 10/e3e46c9c84475bff773b9e5bbf48ffa1749bc45669c56ffc874ae4a520627a259e10f16ca67c1a1338edce7a002af86c40a036dcb13ad45c18246939997fa006 languageName: node linkType: hard @@ -13671,13 +13671,13 @@ __metadata: version: 1.1.9 resolution: "which-typed-array@npm:1.1.9" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef + available-typed-arrays: "npm:^1.0.5" + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.0" + is-typed-array: "npm:^1.1.10" + checksum: 10/90ef760a09dcffc479138a6bc77fd2933a81a41d531f4886ae212f6edb54a0645a43a6c24de2c096aea910430035ac56b3d22a06f3d64e5163fa178d0f24e08e languageName: node linkType: hard @@ -13685,10 +13685,10 @@ __metadata: version: 1.3.1 resolution: "which@npm:1.3.1" dependencies: - isexe: ^2.0.0 + isexe: "npm:^2.0.0" bin: which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 + checksum: 10/549dcf1752f3ee7fbb64f5af2eead4b9a2f482108b7de3e85c781d6c26d8cf6a52d37cfbe0642a155fa6470483fe892661a859c03157f24c669cf115f3bbab5e languageName: node linkType: hard @@ -13696,10 +13696,10 @@ __metadata: version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: - isexe: ^2.0.0 + isexe: "npm:^2.0.0" bin: node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + checksum: 10/4782f8a1d6b8fc12c65e968fea49f59752bf6302dc43036c3bf87da718a80710f61a062516e9764c70008b487929a73546125570acea95c5b5dcc8ac3052c70f languageName: node linkType: hard @@ -13707,8 +13707,8 @@ __metadata: version: 1.1.3 resolution: "wide-align@npm:1.1.3" dependencies: - string-width: ^1.0.2 || 2 - checksum: d09c8012652a9e6cab3e82338d1874a4d7db2ad1bd19ab43eb744acf0b9b5632ec406bdbbbb970a8f4771a7d5ef49824d038ba70aa884e7723f5b090ab87134d + string-width: "npm:^1.0.2 || 2" + checksum: 10/187642e0bbaf36d7ef95e85fec9cabe281a29bebfbeb218024fedbef3f066374e99fbf8391a57f2e40612dca4fa460feeeeb526bb17de7d9d0654b6b4bd1be2e languageName: node linkType: hard @@ -13716,8 +13716,8 @@ __metadata: version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + string-width: "npm:^1.0.2 || 2 || 3 || 4" + checksum: 10/d5f8027b9a8255a493a94e4ec1b74a27bff6679d5ffe29316a3215e4712945c84ef73ca4045c7e20ae7d0c72f5f57f296e04a4928e773d4276a2f1222e4c2e99 languageName: node linkType: hard @@ -13725,10 +13725,10 @@ __metadata: version: 4.5.0 resolution: "winston-transport@npm:4.5.0" dependencies: - logform: ^2.3.2 - readable-stream: ^3.6.0 - triple-beam: ^1.3.0 - checksum: a56e5678a80b88a73e77ed998fc6e19d0db19c989a356b137ec236782f2bf58ae4511b11c29163f99391fa4dc12102c7bc5738dcb6543f28877fa2819adc3ee9 + logform: "npm:^2.3.2" + readable-stream: "npm:^3.6.0" + triple-beam: "npm:^1.3.0" + checksum: 10/3184b7f29fa97aac5b75ff680100656116aff8d164c09bc7459c9b7cb1ce47d02254caf96c2293791ec175c0e76e5ff59b5ed1374733e0b46248cf4f68a182fc languageName: node linkType: hard @@ -13736,18 +13736,18 @@ __metadata: version: 3.10.0 resolution: "winston@npm:3.10.0" dependencies: - "@colors/colors": 1.5.0 - "@dabh/diagnostics": ^2.0.2 - async: ^3.2.3 - is-stream: ^2.0.0 - logform: ^2.4.0 - one-time: ^1.0.0 - readable-stream: ^3.4.0 - safe-stable-stringify: ^2.3.1 - stack-trace: 0.0.x - triple-beam: ^1.3.0 - winston-transport: ^4.5.0 - checksum: 47df0361220d12b46d1b3c98a1c380a3718321739d527a182ce7984fc20715e5b0b55db0bcd3fd076d1b1d3261903b890b053851cfd4bc028bda7951fa8ca2e0 + "@colors/colors": "npm:1.5.0" + "@dabh/diagnostics": "npm:^2.0.2" + async: "npm:^3.2.3" + is-stream: "npm:^2.0.0" + logform: "npm:^2.4.0" + one-time: "npm:^1.0.0" + readable-stream: "npm:^3.4.0" + safe-stable-stringify: "npm:^2.3.1" + stack-trace: "npm:0.0.x" + triple-beam: "npm:^1.3.0" + winston-transport: "npm:^4.5.0" + checksum: 10/3fe855a9b8185f5c75d485bf4b6889c0c4885e85155b6736f783b08319c201fdae11e876ef87c1d333f9a213a4f7fc413fc8c42c720fefb76c59b3abd4ff6406 languageName: node linkType: hard @@ -13755,16 +13755,16 @@ __metadata: version: 4.0.1 resolution: "wordwrapjs@npm:4.0.1" dependencies: - reduce-flatten: ^2.0.0 - typical: ^5.2.0 - checksum: 3d927f3c95d0ad990968da54c0ad8cde2801d8e91006cd7474c26e6b742cc8557250ce495c9732b2f9db1f903601cb74ec282e0f122ee0d02d7abe81e150eea8 + reduce-flatten: "npm:^2.0.0" + typical: "npm:^5.2.0" + checksum: 10/4182c48c9d3eab0932fb9f9f202e3f1d4d28ff6db3fd2e1654ec8606677d8e0ab80110f0f8e2e236ee2b52631cbc5fccf3097e9287e3ace20cbc1613a784befc languageName: node linkType: hard "workerpool@npm:6.2.1": version: 6.2.1 resolution: "workerpool@npm:6.2.1" - checksum: c2c6eebbc5225f10f758d599a5c016fa04798bcc44e4c1dffb34050cd361d7be2e97891aa44419e7afe647b1f767b1dc0b85a5e046c409d890163f655028b09d + checksum: 10/3e637f76320cab92eaeffa4fbefb351db02e20aa29245d8ee05fa7c088780ef7b4446bfafff2668a22fd94b7d9d97c7020117036ac77a76370ecea278b9a9b91 languageName: node linkType: hard @@ -13772,10 +13772,10 @@ __metadata: version: 5.1.0 resolution: "wrap-ansi@npm:5.1.0" dependencies: - ansi-styles: ^3.2.0 - string-width: ^3.0.0 - strip-ansi: ^5.0.0 - checksum: 9b48c862220e541eb0daa22661b38b947973fc57054e91be5b0f2dcc77741a6875ccab4ebe970a394b4682c8dfc17e888266a105fb8b0a9b23c19245e781ceae + ansi-styles: "npm:^3.2.0" + string-width: "npm:^3.0.0" + strip-ansi: "npm:^5.0.0" + checksum: 10/f02bbbd13f40169f3d69b8c95126c1d2a340e6f149d04125527c3d501d74a304a434f4329a83bfdc3b9fdb82403e9ae0cdd7b83a99f0da0d5a7e544f6b709914 languageName: node linkType: hard @@ -13783,10 +13783,10 @@ __metadata: version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10/0d64f2d438e0b555e693b95aee7b2689a12c3be5ac458192a1ce28f542a6e9e59ddfecc37520910c2c88eb1f82a5411260566dba5064e8f9895e76e169e76187 languageName: node linkType: hard @@ -13794,17 +13794,17 @@ __metadata: version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10/cebdaeca3a6880da410f75209e68cd05428580de5ad24535f22696d7d9cab134d1f8498599f344c3cf0fb37c1715807a183778d8c648d6cc0cb5ff2bb4236540 languageName: node linkType: hard "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + checksum: 10/159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 languageName: node linkType: hard @@ -13812,9 +13812,9 @@ __metadata: version: 4.0.2 resolution: "write-file-atomic@npm:4.0.2" dependencies: - imurmurhash: ^0.1.4 - signal-exit: ^3.0.7 - checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10/3be1f5508a46c190619d5386b1ac8f3af3dbe951ed0f7b0b4a0961eed6fc626bd84b50cf4be768dabc0a05b672f5d0c5ee7f42daa557b14415d18c3a13c7d246 languageName: node linkType: hard @@ -13829,7 +13829,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 3a990b32ed08c72070d5e8913e14dfcd831919205be52a3ff0b4cdd998c8d554f167c9df3841605cde8b11d607768cacab3e823c58c96a5c08c987e093eb767a + checksum: 10/150e3f917b7cde568d833a5ea6ccc4132e59c38d04218afcf2b6c7b845752bd011a9e0dc1303c8694d3c402a0bdec5893661a390b71ff88f0fc81a4e4e66b09c languageName: node linkType: hard @@ -13837,10 +13837,10 @@ __metadata: version: 3.3.3 resolution: "ws@npm:3.3.3" dependencies: - async-limiter: ~1.0.0 - safe-buffer: ~5.1.0 - ultron: ~1.1.0 - checksum: 20b7bf34bb88715b9e2d435b76088d770e063641e7ee697b07543815fabdb752335261c507a973955e823229d0af8549f39cc669825e5c8404aa0422615c81d9 + async-limiter: "npm:~1.0.0" + safe-buffer: "npm:~5.1.0" + ultron: "npm:~1.1.0" + checksum: 10/4b4a7e5d11025e399d82a7471bfb4818d563c892f5d953c2de937d262bd8e8acc8b340220001c01f8392574fccbc2df153d6031e285b8b38441187ea0c2cfd72 languageName: node linkType: hard @@ -13855,7 +13855,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 + checksum: 10/171e35012934bd8788150a7f46f963e50bac43a4dc524ee714c20f258693ac4d3ba2abadb00838fdac42a47af9e958c7ae7e6f4bc56db047ba897b8a2268cf7c languageName: node linkType: hard @@ -13870,7 +13870,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 9e310be2b0ff69e1f87d8c6d093ecd17a1ed4c37f281d17c35e8c30e2bd116401775b3d503249651374e6e0e1e9905db62fff096b694371c77561aee06bc3466 + checksum: 10/5464af51b1e42294d3cbb22af995f791eac1f65a1524e0442936c105057ea06dace15a061f043db41ab632f45df09612835e00992cf66805aadb08edbfd34370 languageName: node linkType: hard @@ -13878,8 +13878,8 @@ __metadata: version: 0.1.3 resolution: "xhr-request-promise@npm:0.1.3" dependencies: - xhr-request: ^1.1.0 - checksum: 2e127c0de063db0aa704b8d5b805fd34f0f07cac21284a88c81f96727eb71af7d2dfa3ad43e96ed3e851e05a1bd88933048ec183378b48594dfbead1c9043aee + xhr-request: "npm:^1.1.0" + checksum: 10/49ec3474884858faa55349894b1879c872422a24485097c8b71ba9046027d27f1d54eb61dfdb9d72e78892c7371d22d9cc6a4e101b6767bb4df89a0b6d739f85 languageName: node linkType: hard @@ -13887,14 +13887,14 @@ __metadata: version: 1.1.0 resolution: "xhr-request@npm:1.1.0" dependencies: - buffer-to-arraybuffer: ^0.0.5 - object-assign: ^4.1.1 - query-string: ^5.0.1 - simple-get: ^2.7.0 - timed-out: ^4.0.1 - url-set-query: ^1.0.0 - xhr: ^2.0.4 - checksum: fd8186f33e8696dabcd1ad2983f8125366f4cd799c6bf30aa8d942ac481a7e685a5ee8c38eeee6fca715a7084b432a3a326991375557dc4505c928d3f7b0f0a8 + buffer-to-arraybuffer: "npm:^0.0.5" + object-assign: "npm:^4.1.1" + query-string: "npm:^5.0.1" + simple-get: "npm:^2.7.0" + timed-out: "npm:^4.0.1" + url-set-query: "npm:^1.0.0" + xhr: "npm:^2.0.4" + checksum: 10/531c5e1e47d2e680c1ae1296af7fa375d752cd83c3fa1f9bd9e82fc4fb305ce8e7aaf266256e82bbd34e2a4891ec535bcc4e9f8db2691ab64bb3b6ff40296b9a languageName: node linkType: hard @@ -13902,18 +13902,18 @@ __metadata: version: 2.6.0 resolution: "xhr@npm:2.6.0" dependencies: - global: ~4.4.0 - is-function: ^1.0.1 - parse-headers: ^2.0.0 - xtend: ^4.0.0 - checksum: a1db277e37737caf3ed363d2a33ce4b4ea5b5fc190b663a6f70bc252799185b840ccaa166eaeeea4841c9c60b87741f0a24e29cbcf6708dd425986d4df186d2f + global: "npm:~4.4.0" + is-function: "npm:^1.0.1" + parse-headers: "npm:^2.0.0" + xtend: "npm:^4.0.0" + checksum: 10/31f34aba708955008c87bcd21482be6afc7ff8adc28090e633b1d3f8d3e8e93150bac47b262738b046d7729023a884b655d55cf34e9d14d5850a1275ab49fb37 languageName: node linkType: hard "xmlhttprequest@npm:1.8.0": version: 1.8.0 resolution: "xmlhttprequest@npm:1.8.0" - checksum: c891cf0d7884b4f5cce835aa01f1965727cd352cbd2d7a2e0605bf11ec99ae2198364cca54656ec8b2581a5704dee6c2bf9911922a0ff2a71b613455d32e81b7 + checksum: 10/4f2cc2029f863d425ba8d6ef717de7ee44cd44ceae97df45c122343ecbcd4418559fbb8bdc3fa3678ea8cb24fb31a143ed0e8f7bb302c13185bc4486d81d8399 languageName: node linkType: hard @@ -13921,51 +13921,51 @@ __metadata: version: 11.14.0 resolution: "xstream@npm:11.14.0" dependencies: - globalthis: ^1.0.1 - symbol-observable: ^2.0.3 - checksum: eb96b5f9cd7e6a30d18688f337b8d1c658c85bb08754f2af4247275e25c0605c8435ad8125e04ad7d606c1b760fab4679841906f92718f35f8ce327074e1375a + globalthis: "npm:^1.0.1" + symbol-observable: "npm:^2.0.3" + checksum: 10/935b1f2b4dd79ef77de3fb0153af03ffbbc93fed0c2e0f1afcf3771f462e1c3126430ce6767f9ca1d374b2ced4beb8d3d6c05fb4c0cfd92a0f208b068fb87779 languageName: node linkType: hard "xtend@npm:^4.0.0, xtend@npm:^4.0.1, xtend@npm:^4.0.2, xtend@npm:~4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2" - checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a + checksum: 10/ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a languageName: node linkType: hard "y18n@npm:^4.0.0": version: 4.0.3 resolution: "y18n@npm:4.0.3" - checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 + checksum: 10/392870b2a100bbc643bc035fe3a89cef5591b719c7bdc8721bcdb3d27ab39fa4870acdca67b0ee096e146d769f311d68eda6b8195a6d970f227795061923013f languageName: node linkType: hard "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" - checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 + checksum: 10/5f1b5f95e3775de4514edbb142398a2c37849ccfaf04a015be5d75521e9629d3be29bd4432d23c57f37e5b61ade592fb0197022e9993f81a06a5afbdcda9346d languageName: node linkType: hard "yaeti@npm:^0.0.6": version: 0.0.6 resolution: "yaeti@npm:0.0.6" - checksum: 6db12c152f7c363b80071086a3ebf5032e03332604eeda988872be50d6c8469e1f13316175544fa320f72edad696c2d83843ad0ff370659045c1a68bcecfcfea + checksum: 10/6db12c152f7c363b80071086a3ebf5032e03332604eeda988872be50d6c8469e1f13316175544fa320f72edad696c2d83843ad0ff370659045c1a68bcecfcfea languageName: node linkType: hard "yallist@npm:4.0.0, yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + checksum: 10/4cb02b42b8a93b5cf50caf5d8e9beb409400a8a4d85e83bb0685c1457e9ac0b7a00819e9f5991ac25ffabb56a78e2f017c1acc010b3a1babfe6de690ba531abd languageName: node linkType: hard "yallist@npm:^3.0.0, yallist@npm:^3.0.2, yallist@npm:^3.1.1": version: 3.1.1 resolution: "yallist@npm:3.1.1" - checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d + checksum: 10/9af0a4329c3c6b779ac4736c69fae4190ac03029fa27c1aef4e6bcc92119b73dea6fe5db5fe881fb0ce2a0e9539a42cdf60c7c21eda04d1a0b8c082e38509efb languageName: node linkType: hard @@ -13973,16 +13973,16 @@ __metadata: version: 13.1.2 resolution: "yargs-parser@npm:13.1.2" dependencies: - camelcase: ^5.0.0 - decamelize: ^1.2.0 - checksum: c8bb6f44d39a4acd94462e96d4e85469df865de6f4326e0ab1ac23ae4a835e5dd2ddfe588317ebf80c3a7e37e741bd5cb0dc8d92bcc5812baefb7df7c885e86b + camelcase: "npm:^5.0.0" + decamelize: "npm:^1.2.0" + checksum: 10/89a84fbb32827832a1d34f596f5efe98027c398af731728304a920c2f9ba03071c694418723df16882ebb646ddb72a8fb1c9567552afcbc2f268e86c4faea5a8 languageName: node linkType: hard "yargs-parser@npm:20.2.4": version: 20.2.4 resolution: "yargs-parser@npm:20.2.4" - checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 + checksum: 10/db8f251ae40e24782d5c089ed86883ba3c0ce7f3c174002a67ec500802f928df9d505fea5d04829769221ce20b0f69f6fb1138fbb2e2fb102e3e9d426d20edab languageName: node linkType: hard @@ -13990,23 +13990,23 @@ __metadata: version: 18.1.3 resolution: "yargs-parser@npm:18.1.3" dependencies: - camelcase: ^5.0.0 - decamelize: ^1.2.0 - checksum: 60e8c7d1b85814594d3719300ecad4e6ae3796748b0926137bfec1f3042581b8646d67e83c6fc80a692ef08b8390f21ddcacb9464476c39bbdf52e34961dd4d9 + camelcase: "npm:^5.0.0" + decamelize: "npm:^1.2.0" + checksum: 10/235bcbad5b7ca13e5abc54df61d42f230857c6f83223a38e4ed7b824681875b7f8b6ed52139d88a3ad007050f28dc0324b3c805deac7db22ae3b4815dae0e1bf languageName: node linkType: hard "yargs-parser@npm:^20.2.2": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 + checksum: 10/0188f430a0f496551d09df6719a9132a3469e47fe2747208b1dd0ab2bb0c512a95d0b081628bbca5400fb20dbf2fabe63d22badb346cecadffdd948b049f3fcc languageName: node linkType: hard "yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" - checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + checksum: 10/9dc2c217ea3bf8d858041252d43e074f7166b53f3d010a8c711275e09cd3d62a002969a39858b92bbda2a6a63a585c7127014534a560b9c69ed2d923d113406e languageName: node linkType: hard @@ -14014,10 +14014,10 @@ __metadata: version: 1.6.0 resolution: "yargs-unparser@npm:1.6.0" dependencies: - flat: ^4.1.0 - lodash: ^4.17.15 - yargs: ^13.3.0 - checksum: ca662bb94af53d816d47f2162f0a1d135783f09de9fd47645a5cb18dd25532b0b710432b680d2c065ff45de122ba4a96433c41595fa7bfcc08eb12e889db95c1 + flat: "npm:^4.1.0" + lodash: "npm:^4.17.15" + yargs: "npm:^13.3.0" + checksum: 10/ca662bb94af53d816d47f2162f0a1d135783f09de9fd47645a5cb18dd25532b0b710432b680d2c065ff45de122ba4a96433c41595fa7bfcc08eb12e889db95c1 languageName: node linkType: hard @@ -14025,11 +14025,11 @@ __metadata: version: 2.0.0 resolution: "yargs-unparser@npm:2.0.0" dependencies: - camelcase: ^6.0.0 - decamelize: ^4.0.0 - flat: ^5.0.2 - is-plain-obj: ^2.1.0 - checksum: 68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 + camelcase: "npm:^6.0.0" + decamelize: "npm:^4.0.0" + flat: "npm:^5.0.2" + is-plain-obj: "npm:^2.1.0" + checksum: 10/68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 languageName: node linkType: hard @@ -14037,17 +14037,17 @@ __metadata: version: 13.3.2 resolution: "yargs@npm:13.3.2" dependencies: - cliui: ^5.0.0 - find-up: ^3.0.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^3.0.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^13.1.2 - checksum: 75c13e837eb2bb25717957ba58d277e864efc0cca7f945c98bdf6477e6ec2f9be6afa9ed8a876b251a21423500c148d7b91e88dee7adea6029bdec97af1ef3e8 + cliui: "npm:^5.0.0" + find-up: "npm:^3.0.0" + get-caller-file: "npm:^2.0.1" + require-directory: "npm:^2.1.1" + require-main-filename: "npm:^2.0.0" + set-blocking: "npm:^2.0.0" + string-width: "npm:^3.0.0" + which-module: "npm:^2.0.0" + y18n: "npm:^4.0.0" + yargs-parser: "npm:^13.1.2" + checksum: 10/608ba2e62ac2c7c4572b9c6f7a2d3ef76e2deaad8c8082788ed29ae3ef33e9f68e087f07eb804ed5641de2bc4eab977405d3833b1d11ae8dbbaf5847584d96be languageName: node linkType: hard @@ -14055,14 +14055,14 @@ __metadata: version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.0 - y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.0" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^20.2.2" + checksum: 10/807fa21211d2117135d557f95fcd3c3d390530cda2eca0c840f1d95f0f40209dcfeb5ec18c785a1f3425896e623e3b2681e8bb7b6600060eda1c3f4804e7957e languageName: node linkType: hard @@ -14070,14 +14070,14 @@ __metadata: version: 17.4.1 resolution: "yargs@npm:17.4.1" dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.3 - y18n: ^5.0.5 - yargs-parser: ^21.0.0 - checksum: e9012322870d7e4e912a6ae1f63b203e365f911c0cf158be92c36edefddfb3bd38ce17eb9ef0d18858a4777f047c50589ea22dacb44bd949169ba37dc6d34bee + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.0.0" + checksum: 10/576f9260bba736bced54a3aa539c7f164f33302983dc05bd9d2efb58a77b81a211d9dd674bee5cc2d8d21e6f3c4cfaff810819a0a44be38079412dd9f6df4f6c languageName: node linkType: hard @@ -14085,18 +14085,18 @@ __metadata: version: 15.4.1 resolution: "yargs@npm:15.4.1" dependencies: - cliui: ^6.0.0 - decamelize: ^1.2.0 - find-up: ^4.1.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^4.2.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^18.1.2 - checksum: 40b974f508d8aed28598087720e086ecd32a5fd3e945e95ea4457da04ee9bdb8bdd17fd91acff36dc5b7f0595a735929c514c40c402416bbb87c03f6fb782373 + cliui: "npm:^6.0.0" + decamelize: "npm:^1.2.0" + find-up: "npm:^4.1.0" + get-caller-file: "npm:^2.0.1" + require-directory: "npm:^2.1.1" + require-main-filename: "npm:^2.0.0" + set-blocking: "npm:^2.0.0" + string-width: "npm:^4.2.0" + which-module: "npm:^2.0.0" + y18n: "npm:^4.0.0" + yargs-parser: "npm:^18.1.2" + checksum: 10/bbcc82222996c0982905b668644ca363eebe6ffd6a572fbb52f0c0e8146661d8ce5af2a7df546968779bb03d1e4186f3ad3d55dfaadd1c4f0d5187c0e3a5ba16 languageName: node linkType: hard @@ -14104,27 +14104,27 @@ __metadata: version: 17.7.1 resolution: "yargs@npm:17.7.1" dependencies: - cliui: ^8.0.1 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.3 - y18n: ^5.0.5 - yargs-parser: ^21.1.1 - checksum: 3d8a43c336a4942bc68080768664aca85c7bd406f018bad362fd255c41c8f4e650277f42fd65d543fce99e084124ddafee7bbfc1a5c6a8fda4cec78609dcf8d4 + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10/68beb0446b89fa0a087874d6eb8b3aa1e83c3718218fa0bc55bdb9cdc49068ad15c4a96553dbbdeeae4d9eae922a779bd1102952c44e75e80b41c61f27090cb5 languageName: node linkType: hard "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1" - checksum: 2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 + checksum: 10/2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 languageName: node linkType: hard "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 + checksum: 10/f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 languageName: node linkType: hard From 3bc9c3f6e35734c65162cba83439b8583ae8f2a6 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Thu, 8 Feb 2024 15:23:24 +0200 Subject: [PATCH 11/59] build(yarn|vscode): Enable yarn vscode sdk See this for more info: https://yarnpkg.com/getting-started/editor-sdks --- .gitignore | 4 +++- .vscode/extensions.json | 6 ++++++ .vscode/settings.json | 9 +++++++++ .yarn/sdks/typescript/package.json | 10 ++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .yarn/sdks/typescript/package.json diff --git a/.gitignore b/.gitignore index 7f6caa00a..e1401bb00 100644 --- a/.gitignore +++ b/.gitignore @@ -124,7 +124,9 @@ dist .tern-port # VSCode -.vscode +.vscode/* +!.vscode/extensions.json +!.vscode/settings.json ## Stores VSCode versions used for testing VSCode extensions .vscode-test diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..bedb7ca3a --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "arcanis.vscode-zipfs", + "esbenp.prettier-vscode" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..9d6d5e157 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "search.exclude": { + "**/.yarn": true, + "**/.pnp.*": true + }, + "prettier.prettierPath": ".yarn/sdks/prettier/index.js", + "typescript.tsdk": ".yarn/sdks/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true +} diff --git a/.yarn/sdks/typescript/package.json b/.yarn/sdks/typescript/package.json new file mode 100644 index 000000000..d32f3913d --- /dev/null +++ b/.yarn/sdks/typescript/package.json @@ -0,0 +1,10 @@ +{ + "name": "typescript", + "version": "5.2.2-sdk", + "main": "./lib/typescript.js", + "type": "commonjs", + "bin": { + "tsc": "./bin/tsc", + "tsserver": "./bin/tsserver" + } +} From f754af19a7e9a18508be00ea521866997b322ce5 Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Thu, 14 Sep 2023 17:54:07 +0300 Subject: [PATCH 12/59] feat(yarn): Add `yarn-plugin-nixify` plugin --- .yarn/plugins/yarn-plugin-nixify.cjs | 1 + .yarnrc.yml | 5 + yarn-project.nix | 147 +++++++++++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 .yarn/plugins/yarn-plugin-nixify.cjs create mode 100644 yarn-project.nix diff --git a/.yarn/plugins/yarn-plugin-nixify.cjs b/.yarn/plugins/yarn-plugin-nixify.cjs new file mode 100644 index 000000000..132ca811d --- /dev/null +++ b/.yarn/plugins/yarn-plugin-nixify.cjs @@ -0,0 +1 @@ +module.exports={name:"yarn-plugin-nixify",factory:function(e){var t;return(()=>{"use strict";var n={d:(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};n.r(r),n.d(r,{default:()=>E});const a=e("@yarnpkg/core"),o=e("clipanion");class i extends o.Command{constructor(...e){super(...e),this.locator=o.Option.String({required:!1})}async execute(){const e=await a.Configuration.find(this.context.cwd,this.context.plugins),{project:t}=await a.Project.find(e,this.context.cwd),n=await a.Cache.find(e),r=e.makeFetcher();return(await a.StreamReport.start({configuration:e,stdout:this.context.stdout},(async e=>{if(this.locator){const{locatorHash:o}=a.structUtils.parseLocator(this.locator,!0),i=t.originalPackages.get(o);if(!i)return void e.reportError(0,`Invalid locator: ${this.locator}`);await r.fetch(i,{checksums:t.storedChecksums,project:t,cache:n,fetcher:r,report:e})}else await e.startTimerPromise("Resolution step",(async()=>{await t.resolveEverything({report:e,lockfileOnly:!0})})),await e.startTimerPromise("Fetch step",(async()=>{await t.fetchEverything({cache:n,report:e,fetcher:r})}))}))).exitCode()}}i.paths=[["nixify","fetch"]];const s=e("@yarnpkg/fslib"),c=e("crypto");class l extends o.Command{constructor(...e){super(...e),this.locator=o.Option.String(),this.source=o.Option.String(),this.installLocation=o.Option.String()}async execute(){const e=await a.Configuration.find(this.context.cwd,this.context.plugins),{project:t}=await a.Project.find(e,this.context.cwd);return await t.restoreInstallState({restoreResolutions:!1}),(await a.StreamReport.start({configuration:e,stdout:this.context.stdout},(async n=>{await t.resolveEverything({report:n,lockfileOnly:!0});const r=a.structUtils.parseLocator(this.locator,!0),o=t.storedPackages.get(r.locatorHash);if(!o)return void n.reportError(0,`Invalid locator: ${this.locator}`);const i=s.ppath.join(t.cwd,this.installLocation);await s.xfs.mkdirpPromise(s.ppath.dirname(i)),await a.execUtils.execvp("cp",["-R",this.source,i],{cwd:t.cwd,strict:!0}),await a.execUtils.execvp("chmod",["-R","u+w",i],{cwd:t.cwd,strict:!0});const l=(0,c.createHash)("sha512");l.update(process.versions.node),e.triggerHook((e=>e.globalHashGeneration),t,(e=>{l.update("\0"),l.update(e)}));const d=l.digest("hex"),p=new Map,h=e=>{let n=p.get(e.locatorHash);if(void 0!==n)return n;const r=t.storedPackages.get(e.locatorHash);if(void 0===r)throw new Error("Assertion failed: The package should have been registered");const o=(0,c.createHash)("sha512");o.update(e.locatorHash),p.set(e.locatorHash,"");for(const e of r.dependencies.values()){const n=t.storedResolutions.get(e.descriptorHash);if(void 0===n)throw new Error(`Assertion failed: The resolution (${a.structUtils.prettyDescriptor(t.configuration,e)}) should have been registered`);const r=t.storedPackages.get(n);if(void 0===r)throw new Error("Assertion failed: The package should have been registered");o.update(h(r))}return n=o.digest("hex"),p.set(e.locatorHash,n),n},u=(0,c.createHash)("sha512").update(d).update(h(o)).update(i).digest("hex");t.storedBuildState.set(o.locatorHash,u),await t.persistInstallStateFile()}))).exitCode()}}l.paths=[["nixify","inject-build"]];const d=e("@yarnpkg/plugin-pnp"),p=JSON.stringify,h=(e,t,n=!1)=>t.split("\n").map((t=>t||n?e+t:t)).join("\n"),u=(e,t)=>{let n=e;for(const[e,r]of Object.entries(t))if("string"==typeof r&&(n=n.replace(new RegExp(`@@${e}@@`,"g"),r)),"boolean"==typeof r)for(;;){const t=n.split("\n"),a=t.indexOf(`#@@ IF ${e}`),o=t.indexOf(`#@@ ENDIF ${e}`);if(-1===a||o{if(!n)return;const o=s.npath.toPortablePath(this.binDir);for(const[r,a]of n.manifest.bin){const n=s.ppath.join(o,r),i=s.ppath.join(t.cwd,s.npath.toPortablePath(a));await this.writeWrapper(n,i,{configuration:e,project:t})}if(e.get("installNixBinariesForDependencies")){await t.resolveEverything({report:r,lockfileOnly:!0});const n=await a.scriptUtils.getPackageAccessibleBinaries(t.topLevelWorkspace.anchoredLocator,{project:t});for(const[r,[a,i]]of n.entries()){const n=s.ppath.join(o,r);await this.writeWrapper(n,s.npath.toPortablePath(i),{configuration:e,project:t})}}}))).exitCode()}async writeWrapper(e,t,{configuration:n,project:r}){let a;switch(n.get("nodeLinker")){case"pnp":{const e=(0,d.getPnpPath)(r),n=[];await s.xfs.existsPromise(e.cjs)&&n.push(`--require "${s.npath.fromPortablePath(e.cjs)}"`),await s.xfs.existsPromise(e.esmLoader)&&n.push(`--experimental-loader "${(0,f.pathToFileURL)(s.npath.fromPortablePath(e.esmLoader)).href}"`),a=u("#!/bin/sh\nexport NODE_OPTIONS='@@NODE_OPTIONS@@'\nexec '@@NODE_PATH@@' '@@BINARY_PATH@@' \"$@\"\n",{NODE_PATH:process.execPath,NODE_OPTIONS:n.join(" "),BINARY_PATH:t});break}case"node-modules":a=u("#!/bin/sh\nexec '@@NODE_PATH@@' '@@BINARY_PATH@@' \"$@\"\n",{NODE_PATH:process.execPath,BINARY_PATH:t});break;default:throw Error("Assertion failed: Invalid nodeLinker")}await s.xfs.writeFilePromise(e,a),await s.xfs.chmodPromise(e,493)}}g.paths=[["nixify","install-bin"]];const m=e("os"),y=e("@yarnpkg/plugin-patch"),b=(e,t)=>(0,c.createHash)(e).update(t).digest(),x=(e,t,{storePath:n="/nix/store",recursive:r=!1}={})=>{const[a,o]=t.split("-"),i=Buffer.from(o,"base64").toString("hex"),c=b("sha256",`fixed:out:${r?"r:":""}${a}:${i}:`).toString("hex"),l=(e=>{let t="",n=[...e].reverse().map((e=>e.toString(2).padStart(8,"0"))).join("");for(;n;)t+="0123456789abcdfghijklmnpqrsvwxyz"[parseInt(n.slice(0,5),2)],n=n.slice(5);return t})(((e,t)=>{const n=Buffer.alloc(20);for(let t=0;te.replace(/^\.+/,"").replace(/[^a-zA-Z0-9+._?=-]+/g,"-").slice(0,207)||"unknown",w=(e,t="sha512")=>t+"-"+Buffer.from(e,"hex").toString("base64"),k=e=>Buffer.from(e.split("-")[1],"base64").toString("hex"),I=2**32-1,P=(e,...t)=>{let n=0;const r=t.map((e=>{const t=Buffer.from(e);if(t.byteLength>I)throw Error(`NAR string too long: ${t.byteLength}`);return n+=8+8*Math.ceil(t.byteLength/8),t})),a=Buffer.alloc(n);let o=0;for(const e of r)a.writeUInt32LE(e.byteLength,o),e.copy(a,o+8),o+=8+8*Math.ceil(e.byteLength/8);e.write(a)},N=async(e,t,n)=>{if(t>I)throw Error(`NAR string too long: ${t}`);const r=Buffer.alloc(8);r.writeUInt32LE(t),e.write(r);for await(const t of n)e.write(t);const a=8-t%8;8!==a&&e.write(Buffer.alloc(a))},$=a.YarnVersion?.startsWith("3.")||!1,E={commands:[i,l,g],hooks:{afterAllInstalled:async(e,t)=>{!1!==t.persistProject&&e.configuration.get("enableNixify")&&await(async(e,t)=>{const{configuration:n,cwd:r}=e,{cache:o,report:i}=t,l=await s.xfs.realpathPromise(s.npath.toPortablePath((0,m.tmpdir)()));if(e.cwd.startsWith(l))return void i.reportInfo(0,`Skipping Nixify, because ${e.cwd} appears to be a temporary directory`);const d=n.get("nixExprPath"),f=n.get("yarnPath");let g;if(null===f){const e=await a.hashUtils.checksumFile(process.argv[1]);g=["fetchurl {",` url = "https://repo.yarnpkg.com/${a.YarnVersion}/packages/yarnpkg-cli/bin/yarn.js";`,` hash = "${w(e)}";`,"}"].join("\n ")}else f.startsWith(r)?g="./"+s.ppath.relative(s.ppath.dirname(d),f):(g=p(f),i.reportWarning(0,`The Yarn path ${f} is outside the project - it may not be reachable by the Nix build`));const b=n.get("cacheFolder");let I;if(b.startsWith(r))I=p(s.ppath.relative(r,b));else{if($||!n.get("enableGlobalCache"))throw Error(`The cache folder ${b} is outside the project, this is currently not supported`);I='".yarn/cache"'}const E=new Set;for(const e of n.sources.values())for(const t of e.split(", "))t.startsWith("<")||E.add(t);for(const e of E)s.ppath.resolve(r,e).startsWith(r)||i.reportWarning(0,`The config file ${e} is outside the project - it may not be reachable by the Nix build`);const D="./"+s.ppath.relative(s.ppath.dirname(d),s.ppath.resolve(r,"yarn.lock")),_=new Map,S=new Set(await s.xfs.readdirPromise(o.cwd)),L={unstablePackages:e.conditionalLocators};for(const t of e.storedPackages.values()){const{locatorHash:n}=t,r=e.storedChecksums.get(n),a=$?o.getLocatorPath(t,r||null,L):o.getLocatorPath(t,r||null);if(!a)continue;if(!S.has(s.ppath.basename(a)))continue;const i=r?o.getChecksumFilename(t,r):o.getVersionFilename(t);_.set(i,{pkg:t,checksum:r,cachePath:a})}const O=new Map,A=n.get("individualNixPackaging");let j="",T="";if(A){for(const[e,{pkg:t,checksum:n,cachePath:r}]of _.entries()){const o=a.structUtils.stringifyLocator(t),i=n?n.split("/").pop():await a.hashUtils.checksumFile(r);O.set(o,{cachePath:r,filename:e,hash:w(i)})}j="cacheEntries = {\n";for(const e of[...O.keys()].sort()){const t=O.get(e);j+=`${p(e)} = { ${[`filename = ${p(t.filename)};`,`hash = "${t.hash}";`].join(" ")} };\n`}j+="};"}else{const e=(0,c.createHash)("sha512");P(e,"nix-archive-1","(","type","directory");for(const t of[..._.keys()].sort()){const{cachePath:n}=_.get(t),{size:r}=await s.xfs.statPromise(n);P(e,"entry","(","name",t,"node","(","type","regular","contents"),await N(e,r,s.xfs.createReadStream(n)),P(e,")",")")}P(e,")"),e.end();for await(const t of e)T=w(t)}const C=n.get("isolatedNixBuilds");let R=new Set,F=[],B=[];const U=n.get("nodeLinker"),H=n.get("pnpUnpluggedFolder"),M=(t,n=new Set)=>{const r=a.structUtils.stringifyLocator(t);if(O.has(r)&&n.add(r),a.structUtils.isVirtualLocator(t)){const r=e.storedPackages.get(a.structUtils.devirtualizeLocator(t).locatorHash);if(!r)throw Error("Assertion failed: The locator should have been registered");M(r,n)}if(t.reference.startsWith("patch:")){const r=e.storedPackages.get(y.patchUtils.parseLocator(t).sourceLocator.locatorHash);if(!r)throw Error("Assertion failed: The locator should have been registered");M(r,n)}for(const r of t.dependencies.values()){const t=e.storedResolutions.get(r.descriptorHash);if(!t)throw Error("Assertion failed: The descriptor should have been registered");const a=e.storedPackages.get(t);if(!a)throw Error("Assertion failed: The locator should have been registered");M(a,n)}return n};for(const t of e.storedBuildState.keys()){const n=e.storedPackages.get(t);if(!n)throw Error("Assertion failed: The locator should have been registered");if(!C.includes(n.name))continue;let r;if("pnp"!==U)throw Error(`The nodeLinker ${U} is not supported for isolated Nix builds`);r=s.ppath.relative(e.cwd,s.ppath.join(H,a.structUtils.slugifyLocator(n),a.structUtils.getIdentVendorPath(n)));let o=n;if(a.structUtils.isVirtualLocator(o)){const{locatorHash:t}=a.structUtils.devirtualizeLocator(o),n=e.storedPackages.get(t);if(!n)throw Error("Assertion failed: The locator should have been registered");o=n}const i=a.structUtils.stringifyLocator(o),c=a.structUtils.stringifyLocator(n),l=`isolated.${p(i)}`;if(!R.has(o)){R.add(o);const e=[`pname = ${p(n.name)};`,`version = ${p(n.version)};`,`reference = ${p(o.reference)};`];if(A){const t=[...M(n)].sort().map((e=>`${p(e)}\n`)).join("");t&&e.push(`locators = [\n${t}];`)}const t=`override${V=n.name,V.split(/[^a-zA-Z0-9]+/g).filter((e=>e)).map((e=>{return(t=e).slice(0,1).toUpperCase()+t.slice(1);var t})).join("")}Attrs`;B.push(`${l} = optionalOverride (args.${t} or null) (mkIsolatedBuild { ${e.join(" ")} });`)}0===F.length&&F.push("# Copy in isolated builds."),F.push(`echo 'injecting build for ${n.name}'`,"yarn nixify inject-build \\",` ${p(c)} \\`,` \${${l}} \\`,` ${p(r)}`)}var V;if(F.length>0&&F.push("echo 'running yarn install'"),null==t.mode||0===C.length){const t=e.topLevelWorkspace.manifest.name,o=t?a.structUtils.stringifyIdent(t):"workspace",c=u("# This file is generated by running \"yarn install\" inside your project.\n# Manual changes might be lost - proceed with caution!\n\n{ lib, stdenv, nodejs, git, cacert, fetchurl, writeShellScript, writeShellScriptBin }:\n{ src, overrideAttrs ? null, ... } @ args:\n\nlet\n\n yarnBin = @@YARN_BIN@@;\n\n cacheFolder = @@CACHE_FOLDER@@;\n lockfile = @@LOCKFILE@@;\n\n # Call overrideAttrs on a derivation if a function is provided.\n optionalOverride = fn: drv:\n if fn == null then drv else drv.overrideAttrs fn;\n\n # Simple stub that provides the global yarn command.\n yarn = writeShellScriptBin \"yarn\" ''\n exec '${nodejs}/bin/node' '${yarnBin}' \"$@\"\n '';\n\n # Common attributes between Yarn derivations.\n drvCommon = {\n # Make sure the build uses the right Node.js version everywhere.\n buildInputs = [ nodejs yarn ];\n # All dependencies should already be cached.\n yarn_enable_network = \"0\";\n # Tell node-gyp to use the provided Node.js headers for native code builds.\n npm_config_nodedir = nodejs;\n };\n\n # Comman variables that we set in a Nix build, but not in a Nix shell.\n buildVars = ''\n # Make Yarn produce friendlier logging for automated builds.\n export CI=1\n # Tell node-pre-gyp to never fetch binaries / always build from source.\n export npm_config_build_from_source=true\n # Disable Nixify plugin to save on some unnecessary processing.\n export yarn_enable_nixify=false\n '';\n\n#@@ IF COMBINED_DRV\n cacheDrv = stdenv.mkDerivation {\n name = \"yarn-cache\";\n buildInputs = [ yarn git cacert ];\n buildCommand = ''\n cp --reflink=auto --recursive '${src}' ./src\n cd ./src/\n ${buildVars}\n HOME=\"$TMP\" yarn_enable_global_cache=false yarn_cache_folder=\"$out\" \\\n yarn nixify fetch\n rm $out/.gitignore\n '';\n outputHashMode = \"recursive\";\n outputHash = \"@@COMBINED_HASH@@\";\n };\n#@@ ENDIF COMBINED_DRV\n#@@ IF INDIVIDUAL_DRVS\n # Create derivations for fetching dependencies.\n cacheDrvs = let\n in lib.mapAttrs (locator: { filename, hash }: stdenv.mkDerivation {\n name = lib.strings.sanitizeDerivationName locator;\n buildInputs = [ yarn git cacert ];\n buildCommand = ''\n cd '${src}'\n ${buildVars}\n HOME=\"$TMP\" yarn_enable_global_cache=false yarn_cache_folder=\"$TMP\" \\\n yarn nixify fetch ${locator}\n # Because we change the cache dir, Yarn may generate a different name.\n mv \"$TMP/$(sed 's/-[^-]*\\.[^-]*$//' <<< \"$outputFilename\")\"-* $out\n '';\n outputFilename = filename;\n outputHash = hash;\n }) cacheEntries;\n\n # Create a shell snippet to copy dependencies from a list of derivations.\n mkCacheBuilderForDrvs = drvs:\n writeShellScript \"collect-yarn-cache\" (lib.concatMapStrings (drv: ''\n cp --reflink=auto ${drv} '${drv.outputFilename}'\n '') drvs);\n#@@ ENDIF INDIVIDUAL_DRVS\n\n#@@ IF NEED_ISOLATED_BUILD_SUPPRORT\n#@@ IF INDIVIDUAL_DRVS\n # Create a shell snippet to copy dependencies from a list of locators.\n mkCacheBuilderForLocators = let\n pickCacheDrvs = map (locator: cacheDrvs.${locator});\n in locators:\n mkCacheBuilderForDrvs (pickCacheDrvs locators);\n#@@ ENDIF INDIVIDUAL_DRVS\n\n # Create a derivation that builds a module in isolation.\n mkIsolatedBuild = { pname, version, reference, locators ? [] }: stdenv.mkDerivation (drvCommon // {\n inherit pname version;\n dontUnpack = true;\n\n configurePhase = ''\n ${buildVars}\n unset yarn_enable_nixify # plugin is not present\n '';\n\n buildPhase = ''\n mkdir -p .yarn/cache\n#@@ IF COMBINED_DRV\n cp --reflink=auto --recursive ${cacheDrv}/* .yarn/cache/\n#@@ ENDIF COMBINED_DRV\n#@@ IF INDIVIDUAL_DRVS\n pushd .yarn/cache > /dev/null\n source ${mkCacheBuilderForLocators locators}\n popd > /dev/null\n#@@ ENDIF INDIVIDUAL_DRVS\n\n echo '{ \"dependencies\": { \"${pname}\": \"${reference}\" } }' > package.json\n install -m 0600 ${lockfile} ./yarn.lock\n export yarn_global_folder=\"$TMP\"\n export yarn_enable_global_cache=false\n export yarn_enable_immutable_installs=false\n yarn\n '';\n\n installPhase = ''\n unplugged=( .yarn/unplugged/${pname}-*/node_modules/* )\n if [[ ! -e \"''${unplugged[@]}\" ]]; then\n echo >&2 \"Could not find the unplugged path for ${pname}\"\n exit 1\n fi\n\n mv \"$unplugged\" $out\n '';\n });\n#@@ ENDIF NEED_ISOLATED_BUILD_SUPPRORT\n\n # Main project derivation.\n project = stdenv.mkDerivation (drvCommon // {\n inherit src;\n name = @@PROJECT_NAME@@;\n\n configurePhase = ''\n ${buildVars}\n\n # Copy over the Yarn cache.\n rm -fr '${cacheFolder}'\n mkdir -p '${cacheFolder}'\n#@@ IF COMBINED_DRV\n cp --reflink=auto --recursive ${cacheDrv}/* '${cacheFolder}/'\n#@@ ENDIF COMBINED_DRV\n#@@ IF INDIVIDUAL_DRVS\n pushd '${cacheFolder}' > /dev/null\n source ${mkCacheBuilderForDrvs (lib.attrValues cacheDrvs)}\n popd > /dev/null\n#@@ ENDIF INDIVIDUAL_DRVS\n\n # Yarn may need a writable home directory.\n export yarn_global_folder=\"$TMP\"\n\n # Ensure global cache is disabled. Cache must be part of our output.\n touch .yarnrc.yml\n sed -i -e '/^enableGlobalCache/d' .yarnrc.yml\n echo 'enableGlobalCache: false' >> .yarnrc.yml\n\n # Some node-gyp calls may call out to npm, which could fail due to an\n # read-only home dir.\n export HOME=\"$TMP\"\n\n # running preConfigure after the cache is populated allows for\n # preConfigure to contain substituteInPlace for dependencies as well as the\n # main project. This is necessary for native bindings that maybe have\n # hardcoded values.\n runHook preConfigure\n\n@@ISOLATED_INTEGRATION@@\n\n # Run normal Yarn install to complete dependency installation.\n yarn install --immutable --immutable-cache\n\n runHook postConfigure\n '';\n\n buildPhase = ''\n runHook preBuild\n runHook postBuild\n '';\n\n installPhase = ''\n runHook preInstall\n\n # Move the package contents to the output directory.\n if grep -q '\"workspaces\"' package.json; then\n # We can't use `yarn pack` in a workspace setup, because it only\n # packages the outer workspace.\n mkdir -p \"$out/libexec\"\n mv $PWD \"$out/libexec/$name\"\n else\n # - If the package.json has a `files` field, only files matching those patterns are copied\n # - Otherwise all files are copied.\n yarn pack --out package.tgz\n mkdir -p \"$out/libexec/$name\"\n tar xzf package.tgz --directory \"$out/libexec/$name\" --strip-components=1\n\n cp --reflink=auto .yarnrc* \"$out/libexec/$name\"\n cp --reflink=auto ${lockfile} \"$out/libexec/$name/yarn.lock\"\n cp --reflink=auto --recursive .yarn \"$out/libexec/$name\"\n\n # Copy the Yarn linker output into the package.\n#@@ IF USES_PNP_LINKER\n cp --reflink=auto .pnp.* \"$out/libexec/$name\"\n#@@ ENDIF USES_PNP_LINKER\n#@@ IF USES_NM_LINKER\n cp --reflink=auto --recursive node_modules \"$out/libexec/$name\"\n#@@ ENDIF USES_NM_LINKER\n fi\n\n cd \"$out/libexec/$name\"\n\n # Invoke a plugin internal command to setup binaries.\n mkdir -p \"$out/bin\"\n yarn nixify install-bin $out/bin\n\n#@@ IF USES_NM_LINKER\n # A package with node_modules doesn't need the cache\n yarn cache clean\n#@@ ENDIF USES_NM_LINKER\n\n runHook postInstall\n '';\n\n passthru = {\n inherit nodejs;\n yarn-freestanding = yarn;\n yarn = writeShellScriptBin \"yarn\" ''\n exec '${yarn}/bin/yarn' --cwd '${overriddenProject}/libexec/${overriddenProject.name}' \"$@\"\n '';\n };\n });\n\n overriddenProject = optionalOverride overrideAttrs project;\n\n@@CACHE_ENTRIES@@\n@@ISOLATED@@\nin overriddenProject\n",{PROJECT_NAME:p(o),YARN_BIN:g,LOCKFILE:D,INDIVIDUAL_DRVS:A,COMBINED_DRV:!A,COMBINED_HASH:T,CACHE_FOLDER:I,CACHE_ENTRIES:j,ISOLATED:B.join("\n"),ISOLATED_INTEGRATION:h(" ",F.join("\n")),NEED_ISOLATED_BUILD_SUPPRORT:F.length>0,USES_PNP_LINKER:"pnp"===n.get("nodeLinker"),USES_NM_LINKER:"node-modules"===n.get("nodeLinker")}).replace(/\n\n\n+/g,"\n\n");if(await s.xfs.writeFilePromise(d,c),n.get("generateDefaultNix")){const e=s.ppath.join(r,"default.nix"),t=s.ppath.join(r,"flake.nix");s.xfs.existsSync(e)||s.xfs.existsSync(t)||(await s.xfs.writeFilePromise(e,"# This is a minimal `default.nix` by yarn-plugin-nixify. You can customize it\n# as needed, it will not be overwritten by the plugin.\n\n{ pkgs ? import { } }:\n\npkgs.callPackage ./yarn-project.nix { } { src = ./.; }\n"),i.reportInfo(0,"A minimal default.nix was created. You may want to customize it."))}}n.get("enableNixPreload")&&s.xfs.existsSync(s.npath.toPortablePath("/nix/store"))&&await s.xfs.mktempPromise((async t=>{const n=["--add-fixed","sha512"],r=[];if(A)for(const[e,{cachePath:n,hash:a}]of O.entries()){const o=v(e),i=x(o,a);if(!s.xfs.existsSync(i)){const e=s.ppath.join(t,k(a).slice(0,7));await s.xfs.mkdirPromise(e);const i=s.ppath.join(e,o);await s.xfs.copyFilePromise(n,i),r.push(i)}}else{n.unshift("--recursive");const e=x("yarn-cache",T,{recursive:!0});if(!s.xfs.existsSync(e)){const e=s.ppath.join(t,"yarn-cache");await s.xfs.mkdirPromise(e);for(const[t,{cachePath:n}]of _.entries()){const r=s.ppath.join(e,t);await s.xfs.copyFilePromise(n,r)}r.push(e)}}try{const t=r.length;for(;0!==r.length;){const t=r.splice(0,100);await a.execUtils.execvp("nix-store",[...n,...t],{cwd:e.cwd,strict:!0})}0!==t&&i.reportInfo(0,A?`Preloaded ${t} packages into the Nix store`:"Preloaded cache into the Nix store")}catch(e){if("ENOENT"!==e.code)throw e}}))})(e,t)}},configuration:{enableNixify:{description:"If false, disables the Nixify plugin hook that generates Nix expressions",type:a.SettingsType.BOOLEAN,default:!0},nixExprPath:{description:"Path of the file where the project Nix expression will be written to",type:a.SettingsType.ABSOLUTE_PATH,default:"./yarn-project.nix"},generateDefaultNix:{description:"If true, a default.nix will be generated if it does not exist",type:a.SettingsType.BOOLEAN,default:!0},enableNixPreload:{description:"If true, cached packages will be preloaded into the Nix store",type:a.SettingsType.BOOLEAN,default:!0},individualNixPackaging:{description:"If true, generate one Nix derivation per package. If false, use a single derivation for the entire cache folder.",type:a.SettingsType.BOOLEAN,default:!1},isolatedNixBuilds:{description:"Dependencies with a build step that can be built in an isolated derivation",type:a.SettingsType.STRING,default:[],isArray:!0},installNixBinariesForDependencies:{description:"If true, the Nix output 'bin' directory will also contain executables for binaries defined by dependencies",type:a.SettingsType.BOOLEAN,default:!1}}};t=r})(),t}}; \ No newline at end of file diff --git a/.yarnrc.yml b/.yarnrc.yml index fcd7eeeb9..7d1bcff8f 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -10,4 +10,9 @@ logFilters: nodeLinker: node-modules +plugins: + - checksum: 262555f70f393385c7b94658bf64e3c673a90cb79b6e3da036c5ff89e2b0133a033c620632b88e1252356926322922deb809aee91bb1c6d1ce0f2d8a4c917480 + path: .yarn/plugins/yarn-plugin-nixify.cjs + spec: "https://raw.githubusercontent.com/stephank/yarn-plugin-nixify/main/dist/yarn-plugin-nixify.js" + yarnPath: .yarn/releases/yarn-4.1.0.cjs diff --git a/yarn-project.nix b/yarn-project.nix new file mode 100644 index 000000000..e96d5aaf8 --- /dev/null +++ b/yarn-project.nix @@ -0,0 +1,147 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +{ lib, stdenv, nodejs, git, cacert, fetchurl, writeShellScript, writeShellScriptBin }: +{ src, overrideAttrs ? null, ... } @ args: + +let + + yarnBin = ./.yarn/releases/yarn-4.1.0.cjs; + + cacheFolder = ".yarn/cache"; + lockfile = ./yarn.lock; + + # Call overrideAttrs on a derivation if a function is provided. + optionalOverride = fn: drv: + if fn == null then drv else drv.overrideAttrs fn; + + # Simple stub that provides the global yarn command. + yarn = writeShellScriptBin "yarn" '' + exec '${nodejs}/bin/node' '${yarnBin}' "$@" + ''; + + # Common attributes between Yarn derivations. + drvCommon = { + # Make sure the build uses the right Node.js version everywhere. + buildInputs = [ nodejs yarn ]; + # All dependencies should already be cached. + yarn_enable_network = "0"; + # Tell node-gyp to use the provided Node.js headers for native code builds. + npm_config_nodedir = nodejs; + }; + + # Comman variables that we set in a Nix build, but not in a Nix shell. + buildVars = '' + # Make Yarn produce friendlier logging for automated builds. + export CI=1 + # Tell node-pre-gyp to never fetch binaries / always build from source. + export npm_config_build_from_source=true + # Disable Nixify plugin to save on some unnecessary processing. + export yarn_enable_nixify=false + ''; + + cacheDrv = stdenv.mkDerivation { + name = "yarn-cache"; + buildInputs = [ yarn git cacert ]; + buildCommand = '' + cp --reflink=auto --recursive '${src}' ./src + cd ./src/ + ${buildVars} + HOME="$TMP" yarn_enable_global_cache=false yarn_cache_folder="$out" \ + yarn nixify fetch + rm $out/.gitignore + ''; + outputHashMode = "recursive"; + outputHash = "sha512-Y+BBNVJw5v02qtAx1ee+Gw19MXKJWMMHyxi8yJUf2x8Dd8+KzI0cMGrooNWFjrYK/N7Cwe42I+m2IXt5TUyVSA=="; + }; + + # Main project derivation. + project = stdenv.mkDerivation (drvCommon // { + inherit src; + name = "DendrETH"; + + configurePhase = '' + ${buildVars} + + # Copy over the Yarn cache. + rm -fr '${cacheFolder}' + mkdir -p '${cacheFolder}' + cp --reflink=auto --recursive ${cacheDrv}/* '${cacheFolder}/' + + # Yarn may need a writable home directory. + export yarn_global_folder="$TMP" + + # Ensure global cache is disabled. Cache must be part of our output. + touch .yarnrc.yml + sed -i -e '/^enableGlobalCache/d' .yarnrc.yml + echo 'enableGlobalCache: false' >> .yarnrc.yml + + # Some node-gyp calls may call out to npm, which could fail due to an + # read-only home dir. + export HOME="$TMP" + + # running preConfigure after the cache is populated allows for + # preConfigure to contain substituteInPlace for dependencies as well as the + # main project. This is necessary for native bindings that maybe have + # hardcoded values. + runHook preConfigure + + # Run normal Yarn install to complete dependency installation. + yarn install --immutable --immutable-cache + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + # Move the package contents to the output directory. + if grep -q '"workspaces"' package.json; then + # We can't use `yarn pack` in a workspace setup, because it only + # packages the outer workspace. + mkdir -p "$out/libexec" + mv $PWD "$out/libexec/$name" + else + # - If the package.json has a `files` field, only files matching those patterns are copied + # - Otherwise all files are copied. + yarn pack --out package.tgz + mkdir -p "$out/libexec/$name" + tar xzf package.tgz --directory "$out/libexec/$name" --strip-components=1 + + cp --reflink=auto .yarnrc* "$out/libexec/$name" + cp --reflink=auto ${lockfile} "$out/libexec/$name/yarn.lock" + cp --reflink=auto --recursive .yarn "$out/libexec/$name" + + # Copy the Yarn linker output into the package. + cp --reflink=auto --recursive node_modules "$out/libexec/$name" + fi + + cd "$out/libexec/$name" + + # Invoke a plugin internal command to setup binaries. + mkdir -p "$out/bin" + yarn nixify install-bin $out/bin + + # A package with node_modules doesn't need the cache + yarn cache clean + + runHook postInstall + ''; + + passthru = { + inherit nodejs; + yarn-freestanding = yarn; + yarn = writeShellScriptBin "yarn" '' + exec '${yarn}/bin/yarn' --cwd '${overriddenProject}/libexec/${overriddenProject.name}' "$@" + ''; + }; + }); + + overriddenProject = optionalOverride overrideAttrs project; + +in overriddenProject From 8595d67c7525486bb5d150160b4a8dab524a20b4 Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Thu, 14 Sep 2023 18:02:30 +0300 Subject: [PATCH 13/59] feat(plonky2): Add `balance-verifier` packages --- balance-verifier/default.nix | 76 ++++++++++++++++++++++++++++++++++++ flake.nix | 18 ++------- 2 files changed, 80 insertions(+), 14 deletions(-) create mode 100644 balance-verifier/default.nix diff --git a/balance-verifier/default.nix b/balance-verifier/default.nix new file mode 100644 index 000000000..820b1e3d2 --- /dev/null +++ b/balance-verifier/default.nix @@ -0,0 +1,76 @@ +{inputs, ...}: { + perSystem = { + lib, + inputs', + system, + ... + }: let + inherit (inputs.mcl-blockchain.inputs) crane; + inherit (inputs'.mcl-blockchain.legacyPackages) nix2container pkgs-with-rust-overlay; + pkgs = pkgs-with-rust-overlay; + inherit (pkgs) callPackage rust-bin runCommandLocal writeScript; + inherit (lib) getExe; + + rust-nightly = rust-bin.nightly."2023-06-12".default; + + craneLib = (crane.mkLib pkgs).overrideToolchain rust-nightly; + + circuits-executable = exeName: let + all = callPackage ../libs/nix/circuits_executables { + inherit craneLib; + }; + in + runCommandLocal exeName { + meta.programName = exeName; + } '' + install -Dm755 ${all}/bin/${exeName} -t $out/bin + ''; + + balance-verifier-circuit-builder = circuits-executable "balance_verification_circuit_data_generation"; + balance-verifier = circuits-executable "balance_verification"; + commitment-mapper = circuits-executable "commitment_mapper"; + + balance-verification-circuit = level: + runCommandLocal "balance-verification-circuit-per-level-${level}" {} '' + ${getExe balance-verifier-circuit-builder} ${lib.optionalString (level != "all") "--level ${level}"} + mkdir -p $out/bin + mv *.plonky2_targets *.plonky2_circuit $out/bin + ''; + + allLevels = builtins.map builtins.toString (lib.lists.range 0 38); + balance-verifier-circuit-per-level = lib.genAttrs (allLevels ++ ["all"]) balance-verification-circuit; + + buildImage = level: let + levelBefore = toString (lib.toInt level - 1); + in + nix2container.buildImage { + name = "balance-verifier-for-level-${level}"; + tag = "latest"; + copyToRoot = pkgs.buildEnv { + name = "root"; + paths = [balance-verifier balance-verifier-circuit-per-level."${level}" pkgs.bash pkgs.coreutils (lib.optionalString (level != "0") balance-verifier-circuit-per-level."${levelBefore}")]; + pathsToLink = ["/bin"]; + }; + config = { + entrypoint = ["/bin/${balance-verifier.meta.programName}"]; + workingdir = "/bin"; + }; + }; + + balance-verifier-circuit-per-level-docker = lib.genAttrs allLevels buildImage; + + balance-verifier-all-images = + writeScript "balance-verifier-all-images" + ( + lib.concatMapStringsSep + "\n" + (level: getExe (buildImage level).copyToDockerDaemon) + allLevels + ); + in { + legacyPackages = { + inherit balance-verifier-circuit-per-level balance-verifier-circuit-per-level-docker; + inherit balance-verifier commitment-mapper balance-verifier-all-images; + }; + }; +} diff --git a/flake.nix b/flake.nix index 315ad2a50..18f57237c 100644 --- a/flake.nix +++ b/flake.nix @@ -36,6 +36,7 @@ ... }: flake-parts.lib.mkFlake {inherit inputs;} { + imports = [./balance-verifier]; systems = [ "x86_64-linux" "aarch64-linux" @@ -44,25 +45,13 @@ ]; perSystem = { config, + lib, system, pkgs, inputs', ... }: let - inherit (inputs'.mcl-blockchain.legacyPackages) nix2container rust-stable pkgs-with-rust-overlay; - - crane = mcl-blockchain.inputs.crane; - - rust-nightly = pkgs-with-rust-overlay.rust-bin.nightly."2023-06-12".default.override { - extensions = ["rust-src"]; - targets = ["wasm32-wasi" "wasm32-unknown-unknown"]; - }; - - craneLib-nightly = (crane.mkLib pkgs).overrideToolchain rust-nightly; - - circuits_executables = pkgs.callPackage ./libs/nix/circuits_executables { - craneLib = craneLib-nightly; - }; + inherit (inputs'.mcl-blockchain.legacyPackages) nix2container rust-stable rust-nightly; docker-images = import ./libs/nix/docker-images.nix {inherit pkgs nix2container;}; in { @@ -79,6 +68,7 @@ "wasm3-0.5.0" ]; }; + packages = { inherit (docker-images) docker-image-yarn; From e0fb1672e7902df748f3ff4cc4b1a3e80fd2b960 Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Mon, 21 Aug 2023 11:22:31 +0300 Subject: [PATCH 14/59] feat(plonky2): Add `get_balances_inputs` package --- balance-verifier/default.nix | 5 +++++ .../get_balances_input/get_balances_input.ts | 0 beacon-light-client/plonky2/tsconfig.json | 3 --- libs/nix/get_balances_input/default.nix | 15 +++++++++++++++ package.json | 6 +++++- tsconfig.json | 2 +- yarn.lock | 2 ++ 7 files changed, 28 insertions(+), 5 deletions(-) mode change 100644 => 100755 beacon-light-client/plonky2/get_balances_input/get_balances_input.ts create mode 100644 libs/nix/get_balances_input/default.nix diff --git a/balance-verifier/default.nix b/balance-verifier/default.nix index 820b1e3d2..8c963c8ed 100644 --- a/balance-verifier/default.nix +++ b/balance-verifier/default.nix @@ -67,10 +67,15 @@ (level: getExe (buildImage level).copyToDockerDaemon) allLevels ); + + get_balances_input = callPackage ../libs/nix/get_balances_input {}; in { legacyPackages = { inherit balance-verifier-circuit-per-level balance-verifier-circuit-per-level-docker; inherit balance-verifier commitment-mapper balance-verifier-all-images; }; + packages = { + inherit get_balances_input; + }; }; } diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts old mode 100644 new mode 100755 diff --git a/beacon-light-client/plonky2/tsconfig.json b/beacon-light-client/plonky2/tsconfig.json index 4dba5a3f5..39c290523 100644 --- a/beacon-light-client/plonky2/tsconfig.json +++ b/beacon-light-client/plonky2/tsconfig.json @@ -1,8 +1,5 @@ { "extends": "../../tsconfig.json", - "files": [ - "./hardhat.config.ts" - ], "compilerOptions": { "moduleResolution": "nodenext", } diff --git a/libs/nix/get_balances_input/default.nix b/libs/nix/get_balances_input/default.nix new file mode 100644 index 000000000..1fe9cecd8 --- /dev/null +++ b/libs/nix/get_balances_input/default.nix @@ -0,0 +1,15 @@ +{pkgs ? import {}}: let + project = + pkgs.callPackage ../../../yarn-project.nix { + nodejs = pkgs.nodejs-18_x; + } { + src = pkgs.lib.cleanSource ../../..; + }; +in + project.overrideAttrs (oldAttrs: { + name = "get-balances-input"; + buildInputs = oldAttrs.buildInputs ++ [pkgs.python3]; + buildPhase = '' + yarn build-plonky-2 + ''; + }) diff --git a/package.json b/package.json index e85409bec..e4978c221 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,8 @@ "format:check": "prettier --check . && alejandra -q --exclude ./node_modules --check .", "format:write": "prettier --write . && alejandra -q --exclude ./node_modules .", "test": "jest --verbose --silent -i", - "test-emcc": "USE_EMCC=1 jest --verbose --silent" + "test-emcc": "USE_EMCC=1 jest --verbose --silent", + "build-plonky-2": "tsc -p beacon-light-client/plonky2/tsconfig.json" }, "dependencies": { "@chainsafe/bls": "^6.0.3", @@ -83,5 +84,8 @@ "uuid": "^9.0.0", "winston": "^3.10.0", "yargs": "^17.7.1" + }, + "bin": { + "get-balances-input": "dist/beacon-light-client/plonky2/get_balances_input/get_balances_input.js" } } diff --git a/tsconfig.json b/tsconfig.json index 401e5fe92..11dcb7a70 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -47,7 +47,7 @@ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ + "outDir": "./dist", /* Specify an output folder for all emitted files. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/yarn.lock b/yarn.lock index bb4e20b60..358c03492 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3327,6 +3327,8 @@ __metadata: uuid: "npm:^9.0.0" winston: "npm:^3.10.0" yargs: "npm:^17.7.1" + bin: + get-balances-input: dist/beacon-light-client/plonky2/get_balances_input/get_balances_input.js languageName: unknown linkType: soft From 2d662cefa5895a231187f0542ad0443113e04101 Mon Sep 17 00:00:00 2001 From: Martin Nikov Date: Wed, 20 Sep 2023 13:39:15 +0300 Subject: [PATCH 15/59] feat(balance-verifier): Add `final-layer` package --- balance-verifier/default.nix | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/balance-verifier/default.nix b/balance-verifier/default.nix index 8c963c8ed..bebc29c63 100644 --- a/balance-verifier/default.nix +++ b/balance-verifier/default.nix @@ -29,6 +29,7 @@ balance-verifier-circuit-builder = circuits-executable "balance_verification_circuit_data_generation"; balance-verifier = circuits-executable "balance_verification"; commitment-mapper = circuits-executable "commitment_mapper"; + final-layer = circuits-executable "final_layer"; balance-verification-circuit = level: runCommandLocal "balance-verification-circuit-per-level-${level}" {} '' @@ -57,6 +58,20 @@ }; }; + final-layer-image = nix2container.buildImage { + name = "final-layer"; + tag = "latest"; + copyToRoot = pkgs.buildEnv { + name = "root"; + paths = [final-layer]; + pathsToLink = ["/bin"]; + }; + config = { + entrypoint = ["/bin/${final-layer.meta.programName}"]; + workingdir = "/bin"; + }; + }; + balance-verifier-circuit-per-level-docker = lib.genAttrs allLevels buildImage; balance-verifier-all-images = @@ -72,7 +87,7 @@ in { legacyPackages = { inherit balance-verifier-circuit-per-level balance-verifier-circuit-per-level-docker; - inherit balance-verifier commitment-mapper balance-verifier-all-images; + inherit balance-verifier commitment-mapper balance-verifier-all-images final-layer final-layer-image; }; packages = { inherit get_balances_input; From f9f75bae926845a2a2933f212821b3ec59575338 Mon Sep 17 00:00:00 2001 From: monyarm Date: Fri, 3 Nov 2023 16:43:26 +0200 Subject: [PATCH 16/59] WIP --- balance-verifier/default.nix | 8 ++--- flake.nix | 3 +- shell.nix | 64 +++++++++++++++++++++--------------- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/balance-verifier/default.nix b/balance-verifier/default.nix index bebc29c63..c0689f479 100644 --- a/balance-verifier/default.nix +++ b/balance-verifier/default.nix @@ -8,7 +8,7 @@ inherit (inputs.mcl-blockchain.inputs) crane; inherit (inputs'.mcl-blockchain.legacyPackages) nix2container pkgs-with-rust-overlay; pkgs = pkgs-with-rust-overlay; - inherit (pkgs) callPackage rust-bin runCommandLocal writeScript; + inherit (pkgs) callPackage rust-bin runCommandLocal writeScriptBin; inherit (lib) getExe; rust-nightly = rust-bin.nightly."2023-06-12".default; @@ -38,7 +38,7 @@ mv *.plonky2_targets *.plonky2_circuit $out/bin ''; - allLevels = builtins.map builtins.toString (lib.lists.range 0 38); + allLevels = builtins.map builtins.toString (lib.lists.range 0 37); balance-verifier-circuit-per-level = lib.genAttrs (allLevels ++ ["all"]) balance-verification-circuit; buildImage = level: let @@ -75,7 +75,7 @@ balance-verifier-circuit-per-level-docker = lib.genAttrs allLevels buildImage; balance-verifier-all-images = - writeScript "balance-verifier-all-images" + writeScriptBin "balance-verifier-all-images" ( lib.concatMapStringsSep "\n" @@ -90,7 +90,7 @@ inherit balance-verifier commitment-mapper balance-verifier-all-images final-layer final-layer-image; }; packages = { - inherit get_balances_input; + inherit get_balances_input balance-verifier-circuit-builder; }; }; } diff --git a/flake.nix b/flake.nix index 18f57237c..2535b9067 100644 --- a/flake.nix +++ b/flake.nix @@ -36,7 +36,7 @@ ... }: flake-parts.lib.mkFlake {inherit inputs;} { - imports = [./balance-verifier]; + imports = [./balance-verifier ./shell.nix]; systems = [ "x86_64-linux" "aarch64-linux" @@ -76,7 +76,6 @@ // pkgs.lib.optionalAttrs (pkgs.hostPlatform.isLinux && pkgs.hostPlatform.isx86_64) { inherit (docker-images) docker-image-all; }; - devShells.default = import ./shell.nix {inherit pkgs rust-stable rust-nightly;}; devShells.light-client = import ./libs/nix/shell-with-light-client.nix {inherit pkgs rust-stable;}; }; }; diff --git a/shell.nix b/shell.nix index 5ba3807f7..fe5db427c 100644 --- a/shell.nix +++ b/shell.nix @@ -1,33 +1,43 @@ -{ - pkgs, - rust-stable, - rust-nightly, -}: -with pkgs; let - shell-pkgs = import ./libs/nix/common-shell-pkgs.nix {inherit pkgs rust-stable;}; -in - mkShell { - packages = [rust-nightly] ++ shell-pkgs; +{inputs, ...}: { + perSystem = { + lib, + inputs', + pkgs, + system, + ... + }: let + inherit (inputs'.mcl-blockchain.legacyPackages) pkgs-with-rust-overlay rust-stable; + inherit (pkgs-with-rust-overlay) rust-bin; - nativeBuildInputs = [pkg-config openssl]; + rust-nightly = rust-bin.nightly."2023-06-12".default; + in { + devShells.default = with pkgs; let + shell-pkgs = import ./libs/nix/common-shell-pkgs.nix {inherit pkgs rust-stable;}; + in + mkShell { + packages = [rust-nightly] ++ shell-pkgs; - shellHook = '' - set -e + nativeBuildInputs = [pkg-config openssl]; - export NODE_OPTIONS="--experimental-vm-modules" - export PATH="$PATH:$PWD/node_modules/.bin"; - export CC=clang - export LOCAL_NIM_LIB="$PWD/vendor/nim/lib" - export LOCAL_HARDHAT_PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" + shellHook = '' + set -e - if [ -f .env ]; then - set -a - source .env - set +a - fi + export NODE_OPTIONS="--experimental-vm-modules" + export PATH="$PATH:$PWD/node_modules/.bin"; + export CC=clang + export LOCAL_NIM_LIB="$PWD/vendor/nim/lib" + export LOCAL_HARDHAT_PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" - # scripts/check-user-env-file-contents.sh + if [ -f .env ]; then + set -a + source .env + set +a + fi - figlet "DendrETH" - ''; - } + # scripts/check-user-env-file-contents.sh + + figlet "DendrETH" + ''; + }; + }; +} From 5714812cc572d7260611490eee3a292732192312 Mon Sep 17 00:00:00 2001 From: monyarm Date: Mon, 20 Nov 2023 16:06:34 +0200 Subject: [PATCH 17/59] partially working docker-compose --- .yarn/sdks/integrations.yml | 5 + .yarn/sdks/prettier/bin-prettier.js | 20 ++ .yarn/sdks/prettier/index.js | 20 ++ .yarn/sdks/prettier/package.json | 7 + .yarn/sdks/typescript/bin/tsc | 20 ++ .yarn/sdks/typescript/bin/tsserver | 20 ++ .yarn/sdks/typescript/lib/tsc.js | 20 ++ .yarn/sdks/typescript/lib/tsserver.js | 225 ++++++++++++++++++ .yarn/sdks/typescript/lib/tsserverlibrary.js | 225 ++++++++++++++++++ .yarn/sdks/typescript/lib/typescript.js | 20 ++ .yarnrc.yml | 4 +- balance-verifier/default.nix | 53 ++++- .../bin/commitment_mapper.rs | 3 +- beacon-light-client/plonky2/tsconfig.json | 1 + docker-compose.yaml | 61 +++++ libs/nix/get_balances_input/default.nix | 26 +- libs/nix/get_changed_validators/default.nix | 39 +++ package.json | 6 +- relay/package.json | 4 + yarn-project.nix | 133 ++++++++++- yarn.lock | 122 +++++++++- 21 files changed, 1020 insertions(+), 14 deletions(-) create mode 100644 .yarn/sdks/integrations.yml create mode 100755 .yarn/sdks/prettier/bin-prettier.js create mode 100644 .yarn/sdks/prettier/index.js create mode 100644 .yarn/sdks/prettier/package.json create mode 100755 .yarn/sdks/typescript/bin/tsc create mode 100755 .yarn/sdks/typescript/bin/tsserver create mode 100644 .yarn/sdks/typescript/lib/tsc.js create mode 100644 .yarn/sdks/typescript/lib/tsserver.js create mode 100644 .yarn/sdks/typescript/lib/tsserverlibrary.js create mode 100644 .yarn/sdks/typescript/lib/typescript.js create mode 100644 docker-compose.yaml create mode 100644 libs/nix/get_changed_validators/default.nix diff --git a/.yarn/sdks/integrations.yml b/.yarn/sdks/integrations.yml new file mode 100644 index 000000000..aa9d0d0ad --- /dev/null +++ b/.yarn/sdks/integrations.yml @@ -0,0 +1,5 @@ +# This file is automatically generated by @yarnpkg/sdks. +# Manual changes might be lost! + +integrations: + - vscode diff --git a/.yarn/sdks/prettier/bin-prettier.js b/.yarn/sdks/prettier/bin-prettier.js new file mode 100755 index 000000000..73f04cac6 --- /dev/null +++ b/.yarn/sdks/prettier/bin-prettier.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier/bin-prettier.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real prettier/bin-prettier.js your application uses +module.exports = absRequire(`prettier/bin-prettier.js`); diff --git a/.yarn/sdks/prettier/index.js b/.yarn/sdks/prettier/index.js new file mode 100644 index 000000000..8758e367a --- /dev/null +++ b/.yarn/sdks/prettier/index.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier + require(absPnpApiPath).setup(); + } +} + +// Defer to the real prettier your application uses +module.exports = absRequire(`prettier`); diff --git a/.yarn/sdks/prettier/package.json b/.yarn/sdks/prettier/package.json new file mode 100644 index 000000000..5f7f3ed24 --- /dev/null +++ b/.yarn/sdks/prettier/package.json @@ -0,0 +1,7 @@ +{ + "name": "prettier", + "version": "2.8.4-sdk", + "main": "./index.js", + "type": "commonjs", + "bin": "./bin-prettier.js" +} diff --git a/.yarn/sdks/typescript/bin/tsc b/.yarn/sdks/typescript/bin/tsc new file mode 100755 index 000000000..454b950b7 --- /dev/null +++ b/.yarn/sdks/typescript/bin/tsc @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsc + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/bin/tsc your application uses +module.exports = absRequire(`typescript/bin/tsc`); diff --git a/.yarn/sdks/typescript/bin/tsserver b/.yarn/sdks/typescript/bin/tsserver new file mode 100755 index 000000000..d7a605684 --- /dev/null +++ b/.yarn/sdks/typescript/bin/tsserver @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsserver + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/bin/tsserver your application uses +module.exports = absRequire(`typescript/bin/tsserver`); diff --git a/.yarn/sdks/typescript/lib/tsc.js b/.yarn/sdks/typescript/lib/tsc.js new file mode 100644 index 000000000..2f62fc96c --- /dev/null +++ b/.yarn/sdks/typescript/lib/tsc.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsc.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/tsc.js your application uses +module.exports = absRequire(`typescript/lib/tsc.js`); diff --git a/.yarn/sdks/typescript/lib/tsserver.js b/.yarn/sdks/typescript/lib/tsserver.js new file mode 100644 index 000000000..bbb1e4650 --- /dev/null +++ b/.yarn/sdks/typescript/lib/tsserver.js @@ -0,0 +1,225 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +const moduleWrapper = tsserver => { + if (!process.versions.pnp) { + return tsserver; + } + + const {isAbsolute} = require(`path`); + const pnpApi = require(`pnpapi`); + + const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//); + const isPortal = str => str.startsWith("portal:/"); + const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`); + + const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { + return `${locator.name}@${locator.reference}`; + })); + + // VSCode sends the zip paths to TS using the "zip://" prefix, that TS + // doesn't understand. This layer makes sure to remove the protocol + // before forwarding it to TS, and to add it back on all returned paths. + + function toEditorPath(str) { + // We add the `zip:` prefix to both `.zip/` paths and virtual paths + if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) { + // We also take the opportunity to turn virtual paths into physical ones; + // this makes it much easier to work with workspaces that list peer + // dependencies, since otherwise Ctrl+Click would bring us to the virtual + // file instances instead of the real ones. + // + // We only do this to modules owned by the the dependency tree roots. + // This avoids breaking the resolution when jumping inside a vendor + // with peer dep (otherwise jumping into react-dom would show resolution + // errors on react). + // + const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str; + if (resolved) { + const locator = pnpApi.findPackageLocator(resolved); + if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) { + str = resolved; + } + } + + str = normalize(str); + + if (str.match(/\.zip\//)) { + switch (hostInfo) { + // Absolute VSCode `Uri.fsPath`s need to start with a slash. + // VSCode only adds it automatically for supported schemes, + // so we have to do it manually for the `zip` scheme. + // The path needs to start with a caret otherwise VSCode doesn't handle the protocol + // + // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 + // + // 2021-10-08: VSCode changed the format in 1.61. + // Before | ^zip:/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + // 2022-04-06: VSCode changed the format in 1.66. + // Before | ^/zip//c:/foo/bar.zip/package.json + // After | ^/zip/c:/foo/bar.zip/package.json + // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + case `vscode <1.61`: { + str = `^zip:${str}`; + } break; + + case `vscode <1.66`: { + str = `^/zip/${str}`; + } break; + + case `vscode <1.68`: { + str = `^/zip${str}`; + } break; + + case `vscode`: { + str = `^/zip/${str}`; + } break; + + // To make "go to definition" work, + // We have to resolve the actual file system path from virtual path + // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) + case `coc-nvim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = resolve(`zipfile:${str}`); + } break; + + // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server) + // We have to resolve the actual file system path from virtual path, + // everything else is up to neovim + case `neovim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = `zipfile://${str}`; + } break; + + default: { + str = `zip:${str}`; + } break; + } + } else { + str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); + } + } + + return str; + } + + function fromEditorPath(str) { + switch (hostInfo) { + case `coc-nvim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for coc-nvim is in format of //zipfile://.yarn/... + // So in order to convert it back, we use .* to match all the thing + // before `zipfile:` + return process.platform === `win32` + ? str.replace(/^.*zipfile:\//, ``) + : str.replace(/^.*zipfile:/, ``); + } break; + + case `neovim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for neovim is in format of zipfile:////.yarn/... + return str.replace(/^zipfile:\/\//, ``); + } break; + + case `vscode`: + default: { + return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`) + } break; + } + } + + // Force enable 'allowLocalPluginLoads' + // TypeScript tries to resolve plugins using a path relative to itself + // which doesn't work when using the global cache + // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238 + // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but + // TypeScript already does local loads and if this code is running the user trusts the workspace + // https://github.com/microsoft/vscode/issues/45856 + const ConfiguredProject = tsserver.server.ConfiguredProject; + const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype; + ConfiguredProject.prototype.enablePluginsWithOptions = function() { + this.projectService.allowLocalPluginLoads = true; + return originalEnablePluginsWithOptions.apply(this, arguments); + }; + + // And here is the point where we hijack the VSCode <-> TS communications + // by adding ourselves in the middle. We locate everything that looks + // like an absolute path of ours and normalize it. + + const Session = tsserver.server.Session; + const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; + let hostInfo = `unknown`; + + Object.assign(Session.prototype, { + onMessage(/** @type {string | object} */ message) { + const isStringMessage = typeof message === 'string'; + const parsedMessage = isStringMessage ? JSON.parse(message) : message; + + if ( + parsedMessage != null && + typeof parsedMessage === `object` && + parsedMessage.arguments && + typeof parsedMessage.arguments.hostInfo === `string` + ) { + hostInfo = parsedMessage.arguments.hostInfo; + if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) { + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(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-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += ` <1.61`; + } else if (minor < 66) { + hostInfo += ` <1.66`; + } else if (minor < 68) { + hostInfo += ` <1.68`; + } + } + } + } + + const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => { + return typeof value === 'string' ? fromEditorPath(value) : value; + }); + + return originalOnMessage.call( + this, + isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON) + ); + }, + + send(/** @type {any} */ msg) { + return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { + return typeof value === `string` ? toEditorPath(value) : value; + }))); + } + }); + + return tsserver; +}; + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsserver.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/tsserver.js your application uses +module.exports = moduleWrapper(absRequire(`typescript/lib/tsserver.js`)); diff --git a/.yarn/sdks/typescript/lib/tsserverlibrary.js b/.yarn/sdks/typescript/lib/tsserverlibrary.js new file mode 100644 index 000000000..a68f028fe --- /dev/null +++ b/.yarn/sdks/typescript/lib/tsserverlibrary.js @@ -0,0 +1,225 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +const moduleWrapper = tsserver => { + if (!process.versions.pnp) { + return tsserver; + } + + const {isAbsolute} = require(`path`); + const pnpApi = require(`pnpapi`); + + const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//); + const isPortal = str => str.startsWith("portal:/"); + const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`); + + const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { + return `${locator.name}@${locator.reference}`; + })); + + // VSCode sends the zip paths to TS using the "zip://" prefix, that TS + // doesn't understand. This layer makes sure to remove the protocol + // before forwarding it to TS, and to add it back on all returned paths. + + function toEditorPath(str) { + // We add the `zip:` prefix to both `.zip/` paths and virtual paths + if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) { + // We also take the opportunity to turn virtual paths into physical ones; + // this makes it much easier to work with workspaces that list peer + // dependencies, since otherwise Ctrl+Click would bring us to the virtual + // file instances instead of the real ones. + // + // We only do this to modules owned by the the dependency tree roots. + // This avoids breaking the resolution when jumping inside a vendor + // with peer dep (otherwise jumping into react-dom would show resolution + // errors on react). + // + const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str; + if (resolved) { + const locator = pnpApi.findPackageLocator(resolved); + if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) { + str = resolved; + } + } + + str = normalize(str); + + if (str.match(/\.zip\//)) { + switch (hostInfo) { + // Absolute VSCode `Uri.fsPath`s need to start with a slash. + // VSCode only adds it automatically for supported schemes, + // so we have to do it manually for the `zip` scheme. + // The path needs to start with a caret otherwise VSCode doesn't handle the protocol + // + // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 + // + // 2021-10-08: VSCode changed the format in 1.61. + // Before | ^zip:/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + // 2022-04-06: VSCode changed the format in 1.66. + // Before | ^/zip//c:/foo/bar.zip/package.json + // After | ^/zip/c:/foo/bar.zip/package.json + // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + case `vscode <1.61`: { + str = `^zip:${str}`; + } break; + + case `vscode <1.66`: { + str = `^/zip/${str}`; + } break; + + case `vscode <1.68`: { + str = `^/zip${str}`; + } break; + + case `vscode`: { + str = `^/zip/${str}`; + } break; + + // To make "go to definition" work, + // We have to resolve the actual file system path from virtual path + // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) + case `coc-nvim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = resolve(`zipfile:${str}`); + } break; + + // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server) + // We have to resolve the actual file system path from virtual path, + // everything else is up to neovim + case `neovim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = `zipfile://${str}`; + } break; + + default: { + str = `zip:${str}`; + } break; + } + } else { + str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); + } + } + + return str; + } + + function fromEditorPath(str) { + switch (hostInfo) { + case `coc-nvim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for coc-nvim is in format of //zipfile://.yarn/... + // So in order to convert it back, we use .* to match all the thing + // before `zipfile:` + return process.platform === `win32` + ? str.replace(/^.*zipfile:\//, ``) + : str.replace(/^.*zipfile:/, ``); + } break; + + case `neovim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for neovim is in format of zipfile:////.yarn/... + return str.replace(/^zipfile:\/\//, ``); + } break; + + case `vscode`: + default: { + return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`) + } break; + } + } + + // Force enable 'allowLocalPluginLoads' + // TypeScript tries to resolve plugins using a path relative to itself + // which doesn't work when using the global cache + // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238 + // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but + // TypeScript already does local loads and if this code is running the user trusts the workspace + // https://github.com/microsoft/vscode/issues/45856 + const ConfiguredProject = tsserver.server.ConfiguredProject; + const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype; + ConfiguredProject.prototype.enablePluginsWithOptions = function() { + this.projectService.allowLocalPluginLoads = true; + return originalEnablePluginsWithOptions.apply(this, arguments); + }; + + // And here is the point where we hijack the VSCode <-> TS communications + // by adding ourselves in the middle. We locate everything that looks + // like an absolute path of ours and normalize it. + + const Session = tsserver.server.Session; + const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; + let hostInfo = `unknown`; + + Object.assign(Session.prototype, { + onMessage(/** @type {string | object} */ message) { + const isStringMessage = typeof message === 'string'; + const parsedMessage = isStringMessage ? JSON.parse(message) : message; + + if ( + parsedMessage != null && + typeof parsedMessage === `object` && + parsedMessage.arguments && + typeof parsedMessage.arguments.hostInfo === `string` + ) { + hostInfo = parsedMessage.arguments.hostInfo; + if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) { + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(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-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += ` <1.61`; + } else if (minor < 66) { + hostInfo += ` <1.66`; + } else if (minor < 68) { + hostInfo += ` <1.68`; + } + } + } + } + + const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => { + return typeof value === 'string' ? fromEditorPath(value) : value; + }); + + return originalOnMessage.call( + this, + isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON) + ); + }, + + send(/** @type {any} */ msg) { + return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { + return typeof value === `string` ? toEditorPath(value) : value; + }))); + } + }); + + return tsserver; +}; + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsserverlibrary.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/tsserverlibrary.js your application uses +module.exports = moduleWrapper(absRequire(`typescript/lib/tsserverlibrary.js`)); diff --git a/.yarn/sdks/typescript/lib/typescript.js b/.yarn/sdks/typescript/lib/typescript.js new file mode 100644 index 000000000..b5f4db25b --- /dev/null +++ b/.yarn/sdks/typescript/lib/typescript.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript your application uses +module.exports = absRequire(`typescript`); diff --git a/.yarnrc.yml b/.yarnrc.yml index 7d1bcff8f..8b76735e6 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -8,7 +8,9 @@ logFilters: - code: YN0007 level: discard -nodeLinker: node-modules +# nodeLinker: node-modules +nodeLinker: pnp +isolatedNixBuilds: ["classic-level", "sqlite3", "bcrypt", "bcrypto", "leveldown", "redis-commander", "secp256k1", "blake-hash", "@chainsafe/blst", "keccak", "@trufflesuite/bigint-buffer", "msgpackr-extract", "bufferutil", "bufferutil", "utf-8-validate", "leveldown"] plugins: - checksum: 262555f70f393385c7b94658bf64e3c673a90cb79b6e3da036c5ff89e2b0133a033c620632b88e1252356926322922deb809aee91bb1c6d1ce0f2d8a4c917480 diff --git a/balance-verifier/default.nix b/balance-verifier/default.nix index c0689f479..24794460e 100644 --- a/balance-verifier/default.nix +++ b/balance-verifier/default.nix @@ -29,6 +29,7 @@ balance-verifier-circuit-builder = circuits-executable "balance_verification_circuit_data_generation"; balance-verifier = circuits-executable "balance_verification"; commitment-mapper = circuits-executable "commitment_mapper"; + commitment-mapper-builder = circuits-executable "commitment_mapper_circuit_data_generation"; final-layer = circuits-executable "final_layer"; balance-verification-circuit = level: @@ -38,6 +39,12 @@ mv *.plonky2_targets *.plonky2_circuit $out/bin ''; + commitment-mapper-data = runCommandLocal "commitment-mapper-data" {} '' + ${getExe commitment-mapper-builder} + mkdir -p $out/bin + mv *.plonky2_targets *.plonky2_circuit $out/bin + ''; + allLevels = builtins.map builtins.toString (lib.lists.range 0 37); balance-verifier-circuit-per-level = lib.genAttrs (allLevels ++ ["all"]) balance-verification-circuit; @@ -58,6 +65,33 @@ }; }; + buildToolImage = tool: + nix2container.buildImage { + name = "${builtins.replaceStrings ["-"] ["_"] tool.name}"; + tag = "latest"; + copyToRoot = pkgs.buildEnv { + name = "root"; + paths = [tool]; + pathsToLink = ["/bin"]; + }; + config = { + workingdir = "/bin"; + }; + }; + + commitment-mapper-image = nix2container.buildImage { + name = "commitment_mapper"; + tag = "latest"; + copyToRoot = pkgs.buildEnv { + name = "root"; + paths = [commitment-mapper commitment-mapper-data]; + pathsToLink = ["/bin"]; + }; + config = { + workingdir = "/bin"; + }; + }; + final-layer-image = nix2container.buildImage { name = "final-layer"; tag = "latest"; @@ -83,14 +117,25 @@ allLevels ); - get_balances_input = callPackage ../libs/nix/get_balances_input {}; + get-balances-input = callPackage ../libs/nix/get_balances_input {}; + get-changed-validators = callPackage ../libs/nix/get_changed_validators {}; + misc-images = + writeScriptBin "misc-images" + ( + lib.concatMapStringsSep + "\n" + (image: getExe image.copyToDockerDaemon) + ((map buildToolImage [get-balances-input get-changed-validators]) + ++ [commitment-mapper-image]) + ); in { legacyPackages = { - inherit balance-verifier-circuit-per-level balance-verifier-circuit-per-level-docker; - inherit balance-verifier commitment-mapper balance-verifier-all-images final-layer final-layer-image; + inherit balance-verifier-circuit-per-level balance-verifier-circuit-per-level-docker commitment-mapper-data; + inherit balance-verifier commitment-mapper balance-verifier-all-images final-layer final-layer-image commitment-mapper-image; + inherit misc-images; }; packages = { - inherit get_balances_input balance-verifier-circuit-builder; + inherit get-balances-input get-changed-validators balance-verifier-circuit-builder; }; }; } diff --git a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs index ef08fb58b..ca55abb6c 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs @@ -90,7 +90,8 @@ async fn async_main() -> Result<()> { .unwrap() .parse::() .unwrap(); - + println!("{}", matches + .value_of("lease_for").unwrap()); let lease_for = matches .value_of("lease_for") .unwrap() diff --git a/beacon-light-client/plonky2/tsconfig.json b/beacon-light-client/plonky2/tsconfig.json index 39c290523..3c062da00 100644 --- a/beacon-light-client/plonky2/tsconfig.json +++ b/beacon-light-client/plonky2/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "module": "NodeNext", "moduleResolution": "nodenext", } } diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 000000000..7ce345023 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,61 @@ +services: + redis: + image: redis + environment: + - COMPOSE_PROJECT_NAME + command: redis-server --appendonly yes --port 6379 + ports: + - "6379" + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + interval: 1s + timeout: 3s + retries: 5 + get_changed_validators: + image: get_changed_validators + environment: + - COMPOSE_PROJECT_NAME + command: get-changed-validators --redis-host redis --redis-port 6379 --take 32 + ports: + - "6379" + depends_on: + redis: + condition: service_healthy + commitment_mapper: + image: commitment_mapper + environment: + - COMPOSE_PROJECT_NAME + working_dir: /bin + command: commitment_mapper --redis redis://redis:6379 + depends_on: + redis: + condition: service_healthy + ports: + - "6379" + get_balances_input: + image: get_balances_input + environment: + - COMPOSE_PROJECT_NAME + command: get-balances-input --redis-host redis --redis-port 6379 --take 32 + depends_on: + redis: + condition: service_healthy + ports: + - "6379" + balance_verifier_level_5: + image: balance-verifier-for-level-5 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 5 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + ports: + - "6379" \ No newline at end of file diff --git a/libs/nix/get_balances_input/default.nix b/libs/nix/get_balances_input/default.nix index 1fe9cecd8..0725101c5 100644 --- a/libs/nix/get_balances_input/default.nix +++ b/libs/nix/get_balances_input/default.nix @@ -4,11 +4,35 @@ nodejs = pkgs.nodejs-18_x; } { src = pkgs.lib.cleanSource ../../..; + overrideBcryptoAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideBufferutilAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideClassicLevelAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideMsgpackrExtractAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideUtf8ValidateAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideLeveldownAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideBcryptAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideGetBalancesInputAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; }; in project.overrideAttrs (oldAttrs: { name = "get-balances-input"; - buildInputs = oldAttrs.buildInputs ++ [pkgs.python3]; + buildInputs = oldAttrs.buildInputs ++ [pkgs.python3 pkgs.sqlite]; buildPhase = '' yarn build-plonky-2 ''; diff --git a/libs/nix/get_changed_validators/default.nix b/libs/nix/get_changed_validators/default.nix new file mode 100644 index 000000000..485335758 --- /dev/null +++ b/libs/nix/get_changed_validators/default.nix @@ -0,0 +1,39 @@ +{pkgs ? import {}}: let + project = + pkgs.callPackage ../../../yarn-project.nix { + nodejs = pkgs.nodejs-18_x; + } { + src = pkgs.lib.cleanSource ../../..; + overrideBcryptoAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideBufferutilAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideClassicLevelAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideMsgpackrExtractAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideUtf8ValidateAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideLeveldownAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideBcryptAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + overrideGetBalancesInputAttrs = old: { + buildInputs = old.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + }; + }; +in + project.overrideAttrs (oldAttrs: { + name = "get-changed-validators"; + buildInputs = oldAttrs.buildInputs ++ [pkgs.python3 pkgs.sqlite]; + buildPhase = '' + yarn build-plonky-2 + ''; + }) diff --git a/package.json b/package.json index e4978c221..a96f25599 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "dependencies": { "@chainsafe/bls": "^6.0.3", "@chainsafe/blst": "^0.2.4", + "@chainsafe/persistent-merkle-tree": "^0.6.1", "@chainsafe/ssz": "^0.9.2", "@cosmjs/cosmwasm-stargate": "^0.30.0", "@cosmjs/proto-signing": "^0.30.0", @@ -72,9 +73,11 @@ "crypto-js": "^4.1.1", "dotenv": "^16.0.2", "ethers": "^5.7.0", + "express": "^4.18.2", "ffjavascript": "^0.2.59", "hardhat": "^2.10.2", "hardhat-gas-reporter": "^1.0.8", + "ioredis": "^5.3.2", "prom-client": "^14.2.0", "r1csfile": "^0.0.40", "redis": "^4.6.5", @@ -86,6 +89,7 @@ "yargs": "^17.7.1" }, "bin": { - "get-balances-input": "dist/beacon-light-client/plonky2/get_balances_input/get_balances_input.js" + "get-balances-input": "dist/beacon-light-client/plonky2/get_balances_input/get_balances_input.js", + "get-changed-validators": "dist/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.js" } } diff --git a/relay/package.json b/relay/package.json index 848187b3a..e7c1efd56 100644 --- a/relay/package.json +++ b/relay/package.json @@ -11,8 +11,12 @@ "author": "", "license": "ISC", "dependencies": { + "@chainsafe/persistent-merkle-tree": "^0.6.1", + "@chainsafe/ssz": "^0.14.0", "@effect/schema": "^0.33.0", + "@lodestar/types": "^1.11.3", "discord.js": "^14.12.1", + "redis": "^4.6.10", "ts-node": "^10.9.1", "web3": "^1.10.0", "winston": "^3.10.0", diff --git a/yarn-project.nix b/yarn-project.nix index e96d5aaf8..054cdccd3 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -52,9 +52,42 @@ let rm $out/.gitignore ''; outputHashMode = "recursive"; - outputHash = "sha512-Y+BBNVJw5v02qtAx1ee+Gw19MXKJWMMHyxi8yJUf2x8Dd8+KzI0cMGrooNWFjrYK/N7Cwe42I+m2IXt5TUyVSA=="; + outputHash = "sha512-YU2dbXFg1rDVCA2216Be9Tdr213BsT53h2ZOgUZ68Y1x/fTiqYaoN1tLKp8049b0hbDh+8YKxUF3X5NIlO851g=="; }; + # Create a derivation that builds a module in isolation. + mkIsolatedBuild = { pname, version, reference, locators ? [] }: stdenv.mkDerivation (drvCommon // { + inherit pname version; + dontUnpack = true; + + configurePhase = '' + ${buildVars} + unset yarn_enable_nixify # plugin is not present + ''; + + buildPhase = '' + mkdir -p .yarn/cache + cp --reflink=auto --recursive ${cacheDrv}/* .yarn/cache/ + + echo '{ "dependencies": { "${pname}": "${reference}" } }' > package.json + install -m 0600 ${lockfile} ./yarn.lock + export yarn_global_folder="$TMP" + export yarn_enable_global_cache=false + export yarn_enable_immutable_installs=false + yarn + ''; + + installPhase = '' + unplugged=( .yarn/unplugged/${pname}-*/node_modules/* ) + if [[ ! -e "''${unplugged[@]}" ]]; then + echo >&2 "Could not find the unplugged path for ${pname}" + exit 1 + fi + + mv "$unplugged" $out + ''; + }); + # Main project derivation. project = stdenv.mkDerivation (drvCommon // { inherit src; @@ -86,6 +119,84 @@ let # hardcoded values. runHook preConfigure + # Copy in isolated builds. + echo 'injecting build for msgpackr-extract' + yarn nixify inject-build \ + "msgpackr-extract@npm:3.0.0" \ + ${isolated."msgpackr-extract@npm:3.0.0"} \ + ".yarn/unplugged/msgpackr-extract-npm-3.0.0-cdff11f83e/node_modules/msgpackr-extract" + echo 'injecting build for blake-hash' + yarn nixify inject-build \ + "blake-hash@npm:2.0.0" \ + ${isolated."blake-hash@npm:2.0.0"} \ + ".yarn/unplugged/blake-hash-npm-2.0.0-c63b9a2c2d/node_modules/blake-hash" + echo 'injecting build for bcrypt' + yarn nixify inject-build \ + "bcrypt@npm:5.0.1" \ + ${isolated."bcrypt@npm:5.0.1"} \ + ".yarn/unplugged/bcrypt-npm-5.0.1-6815be1cfe/node_modules/bcrypt" + echo 'injecting build for bcrypto' + yarn nixify inject-build \ + "bcrypto@npm:5.4.0" \ + ${isolated."bcrypto@npm:5.4.0"} \ + ".yarn/unplugged/bcrypto-npm-5.4.0-8d9b86dfa6/node_modules/bcrypto" + echo 'injecting build for keccak' + yarn nixify inject-build \ + "keccak@npm:3.0.3" \ + ${isolated."keccak@npm:3.0.3"} \ + ".yarn/unplugged/keccak-npm-3.0.3-0a04b1d590/node_modules/keccak" + echo 'injecting build for secp256k1' + yarn nixify inject-build \ + "secp256k1@npm:4.0.3" \ + ${isolated."secp256k1@npm:4.0.3"} \ + ".yarn/unplugged/secp256k1-npm-4.0.3-b4e9ce065b/node_modules/secp256k1" + echo 'injecting build for classic-level' + yarn nixify inject-build \ + "classic-level@npm:1.2.0" \ + ${isolated."classic-level@npm:1.2.0"} \ + ".yarn/unplugged/classic-level-npm-1.2.0-399f00877c/node_modules/classic-level" + echo 'injecting build for keccak' + yarn nixify inject-build \ + "keccak@npm:3.0.1" \ + ${isolated."keccak@npm:3.0.1"} \ + ".yarn/unplugged/keccak-npm-3.0.1-9f0a714d5c/node_modules/keccak" + echo 'injecting build for bufferutil' + yarn nixify inject-build \ + "bufferutil@npm:4.0.5" \ + ${isolated."bufferutil@npm:4.0.5"} \ + ".yarn/unplugged/bufferutil-npm-4.0.5-88cc521694/node_modules/bufferutil" + echo 'injecting build for keccak' + yarn nixify inject-build \ + "keccak@npm:3.0.2" \ + ${isolated."keccak@npm:3.0.2"} \ + ".yarn/unplugged/keccak-npm-3.0.2-6e9dec8765/node_modules/keccak" + echo 'injecting build for leveldown' + yarn nixify inject-build \ + "leveldown@npm:6.1.0" \ + ${isolated."leveldown@npm:6.1.0"} \ + ".yarn/unplugged/leveldown-npm-6.1.0-c2d7a4250d/node_modules/leveldown" + echo 'injecting build for utf-8-validate' + yarn nixify inject-build \ + "utf-8-validate@npm:5.0.7" \ + ${isolated."utf-8-validate@npm:5.0.7"} \ + ".yarn/unplugged/utf-8-validate-npm-5.0.7-88d731f8ad/node_modules/utf-8-validate" + echo 'injecting build for bufferutil' + yarn nixify inject-build \ + "bufferutil@npm:4.0.7" \ + ${isolated."bufferutil@npm:4.0.7"} \ + ".yarn/unplugged/bufferutil-npm-4.0.7-77a45bb7a3/node_modules/bufferutil" + echo 'injecting build for utf-8-validate' + yarn nixify inject-build \ + "utf-8-validate@npm:5.0.10" \ + ${isolated."utf-8-validate@npm:5.0.10"} \ + ".yarn/unplugged/utf-8-validate-npm-5.0.10-93e9b6f750/node_modules/utf-8-validate" + echo 'injecting build for redis-commander' + yarn nixify inject-build \ + "redis-commander@npm:0.8.0" \ + ${isolated."redis-commander@npm:0.8.0"} \ + ".yarn/unplugged/redis-commander-npm-0.8.0-4f9397694b/node_modules/redis-commander" + echo 'running yarn install' + # Run normal Yarn install to complete dependency installation. yarn install --immutable --immutable-cache @@ -118,7 +229,7 @@ let cp --reflink=auto --recursive .yarn "$out/libexec/$name" # Copy the Yarn linker output into the package. - cp --reflink=auto --recursive node_modules "$out/libexec/$name" + cp --reflink=auto .pnp.* "$out/libexec/$name" fi cd "$out/libexec/$name" @@ -127,9 +238,6 @@ let mkdir -p "$out/bin" yarn nixify install-bin $out/bin - # A package with node_modules doesn't need the cache - yarn cache clean - runHook postInstall ''; @@ -144,4 +252,19 @@ let overriddenProject = optionalOverride overrideAttrs project; +isolated."msgpackr-extract@npm:3.0.0" = optionalOverride (args.overrideMsgpackrExtractAttrs or null) (mkIsolatedBuild { pname = "msgpackr-extract"; version = "3.0.0"; reference = "npm:3.0.0"; }); +isolated."blake-hash@npm:2.0.0" = optionalOverride (args.overrideBlakeHashAttrs or null) (mkIsolatedBuild { pname = "blake-hash"; version = "2.0.0"; reference = "npm:2.0.0"; }); +isolated."bcrypt@npm:5.0.1" = optionalOverride (args.overrideBcryptAttrs or null) (mkIsolatedBuild { pname = "bcrypt"; version = "5.0.1"; reference = "npm:5.0.1"; }); +isolated."bcrypto@npm:5.4.0" = optionalOverride (args.overrideBcryptoAttrs or null) (mkIsolatedBuild { pname = "bcrypto"; version = "5.4.0"; reference = "npm:5.4.0"; }); +isolated."keccak@npm:3.0.3" = optionalOverride (args.overrideKeccakAttrs or null) (mkIsolatedBuild { pname = "keccak"; version = "3.0.3"; reference = "npm:3.0.3"; }); +isolated."secp256k1@npm:4.0.3" = optionalOverride (args.overrideSecp256k1Attrs or null) (mkIsolatedBuild { pname = "secp256k1"; version = "4.0.3"; reference = "npm:4.0.3"; }); +isolated."classic-level@npm:1.2.0" = optionalOverride (args.overrideClassicLevelAttrs or null) (mkIsolatedBuild { pname = "classic-level"; version = "1.2.0"; reference = "npm:1.2.0"; }); +isolated."keccak@npm:3.0.1" = optionalOverride (args.overrideKeccakAttrs or null) (mkIsolatedBuild { pname = "keccak"; version = "3.0.1"; reference = "npm:3.0.1"; }); +isolated."bufferutil@npm:4.0.5" = optionalOverride (args.overrideBufferutilAttrs or null) (mkIsolatedBuild { pname = "bufferutil"; version = "4.0.5"; reference = "npm:4.0.5"; }); +isolated."keccak@npm:3.0.2" = optionalOverride (args.overrideKeccakAttrs or null) (mkIsolatedBuild { pname = "keccak"; version = "3.0.2"; reference = "npm:3.0.2"; }); +isolated."leveldown@npm:6.1.0" = optionalOverride (args.overrideLeveldownAttrs or null) (mkIsolatedBuild { pname = "leveldown"; version = "6.1.0"; reference = "npm:6.1.0"; }); +isolated."utf-8-validate@npm:5.0.7" = optionalOverride (args.overrideUtf8ValidateAttrs or null) (mkIsolatedBuild { pname = "utf-8-validate"; version = "5.0.7"; reference = "npm:5.0.7"; }); +isolated."bufferutil@npm:4.0.7" = optionalOverride (args.overrideBufferutilAttrs or null) (mkIsolatedBuild { pname = "bufferutil"; version = "4.0.7"; reference = "npm:4.0.7"; }); +isolated."utf-8-validate@npm:5.0.10" = optionalOverride (args.overrideUtf8ValidateAttrs or null) (mkIsolatedBuild { pname = "utf-8-validate"; version = "5.0.10"; reference = "npm:5.0.10"; }); +isolated."redis-commander@npm:0.8.0" = optionalOverride (args.overrideRedisCommanderAttrs or null) (mkIsolatedBuild { pname = "redis-commander"; version = "0.8.0"; reference = "npm:0.8.0"; }); in overriddenProject diff --git a/yarn.lock b/yarn.lock index 358c03492..641da4847 100644 --- a/yarn.lock +++ b/yarn.lock @@ -441,6 +441,13 @@ __metadata: languageName: node linkType: hard +"@chainsafe/as-sha256@npm:^0.4.1": + version: 0.4.1 + resolution: "@chainsafe/as-sha256@npm:0.4.1" + checksum: 10/6337e7a1bb1d36d1629ecfd0d3fc53e5fda20a684ebe3ca4bcbc0783b3df19a11d8cc81d0df761506a2e1e36c87c9f4a5da897efe47b5d6f2d236058eaace5a8 + languageName: node + linkType: hard + "@chainsafe/bls-hd-key@npm:^0.2.0": version: 0.2.1 resolution: "@chainsafe/bls-hd-key@npm:0.2.1" @@ -550,6 +557,26 @@ __metadata: languageName: node linkType: hard +"@chainsafe/persistent-merkle-tree@npm:^0.6.1": + version: 0.6.1 + resolution: "@chainsafe/persistent-merkle-tree@npm:0.6.1" + dependencies: + "@chainsafe/as-sha256": "npm:^0.4.1" + "@noble/hashes": "npm:^1.3.0" + checksum: 10/637583aa6f6ac1ce0d4e00bbe526f3594c000ad1d18f590e8ceca4283e700b0ae1f96289cc55f25c7849437c9244ef586ea8fbbac0ffb100a92c80fdcc1e8f13 + languageName: node + linkType: hard + +"@chainsafe/ssz@npm:^0.14.0": + version: 0.14.3 + resolution: "@chainsafe/ssz@npm:0.14.3" + dependencies: + "@chainsafe/as-sha256": "npm:^0.4.1" + "@chainsafe/persistent-merkle-tree": "npm:^0.6.1" + checksum: 10/a69cfb2499c1cb377fcd6669ba1f63fc7d3b0d5909e2e0b0b2553a8cb894cb064549fed5f7f7dd2136262686a2439675868a64668066120d28c935c0b74203e9 + languageName: node + linkType: hard + "@chainsafe/ssz@npm:^0.8.20": version: 0.8.20 resolution: "@chainsafe/ssz@npm:0.8.20" @@ -1912,6 +1939,13 @@ __metadata: languageName: node linkType: hard +"@lodestar/params@npm:^1.15.1": + version: 1.15.1 + resolution: "@lodestar/params@npm:1.15.1" + checksum: 10/ed0b70878de069830fc42f5968ac6660cf9cd433ecb311d963d99ed676db1c1fbf3e2391d0fa4f96a6d78d8bfbeeea6130fd1b5c52eadd097924560a9473789f + languageName: node + linkType: hard + "@lodestar/params@npm:^1.4.1": version: 1.11.3 resolution: "@lodestar/params@npm:1.11.3" @@ -1936,6 +1970,16 @@ __metadata: languageName: node linkType: hard +"@lodestar/types@npm:^1.11.3": + version: 1.15.1 + resolution: "@lodestar/types@npm:1.15.1" + dependencies: + "@chainsafe/ssz": "npm:^0.14.0" + "@lodestar/params": "npm:^1.15.1" + checksum: 10/c58e74e7f65bae7f47102ebca70d93c5130301f22e9ec7a58bb2184c4e7ec58c35603ec755cc9156ae38759ddfa198481e3219a2389fe9bfe2c4b8bbd52ea9c5 + languageName: node + linkType: hard + "@lodestar/types@npm:^1.4.1": version: 1.4.3 resolution: "@lodestar/types@npm:1.4.3" @@ -2063,6 +2107,13 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:^1.3.0": + version: 1.3.3 + resolution: "@noble/hashes@npm:1.3.3" + checksum: 10/1025ddde4d24630e95c0818e63d2d54ee131b980fe113312d17ed7468bc18f54486ac86c907685759f8a7e13c2f9b9e83ec7b67d1cc20836f36b5e4a65bb102d + languageName: node + linkType: hard + "@noble/secp256k1@npm:1.7.1, @noble/secp256k1@npm:~1.7.0": version: 1.7.1 resolution: "@noble/secp256k1@npm:1.7.1" @@ -2519,6 +2570,17 @@ __metadata: languageName: node linkType: hard +"@redis/client@npm:1.5.14": + version: 1.5.14 + resolution: "@redis/client@npm:1.5.14" + dependencies: + cluster-key-slot: "npm:1.1.2" + generic-pool: "npm:3.9.0" + yallist: "npm:4.0.0" + checksum: 10/aab53eff9456e0a5e0ef78ce16db3eca4b837274b8285c5d66ced549573dbacf75972935806911274d6dd906a53d982ef9b1a6f11a8efe4a18efa94ec9c2a4b3 + languageName: node + linkType: hard + "@redis/client@npm:1.5.6": version: 1.5.6 resolution: "@redis/client@npm:1.5.6" @@ -2539,6 +2601,15 @@ __metadata: languageName: node linkType: hard +"@redis/graph@npm:1.1.1": + version: 1.1.1 + resolution: "@redis/graph@npm:1.1.1" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 10/96b8ee9bec124947465848b56a014805f9639e09704e03c75a92072a319599ac9dcd4f9ace22970a7f72131a241166ad31db4dc6931b34808d22a5ca94649ba5 + languageName: node + linkType: hard + "@redis/json@npm:1.0.4": version: 1.0.4 resolution: "@redis/json@npm:1.0.4" @@ -2548,6 +2619,15 @@ __metadata: languageName: node linkType: hard +"@redis/json@npm:1.0.6": + version: 1.0.6 + resolution: "@redis/json@npm:1.0.6" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 10/bedd8b6fd152ed480f993c6372288f210a9c0e60bb39c02861d5ce2cb5452119229435572cd94886cdbde5fbae014471fc179dff1dbc86f045782e0358af1b0f + languageName: node + linkType: hard + "@redis/search@npm:1.1.2": version: 1.1.2 resolution: "@redis/search@npm:1.1.2" @@ -2557,6 +2637,15 @@ __metadata: languageName: node linkType: hard +"@redis/search@npm:1.1.6": + version: 1.1.6 + resolution: "@redis/search@npm:1.1.6" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 10/7a2543012fc2c88ff4c6a6c9c1b537b472d5af340c2717f968562ef2ead713b02dd22cfadc5d5e16c0d32279a4c04bee974e0f20de416a3561a1221b3dccc790 + languageName: node + linkType: hard + "@redis/time-series@npm:1.0.4": version: 1.0.4 resolution: "@redis/time-series@npm:1.0.4" @@ -2566,6 +2655,15 @@ __metadata: languageName: node linkType: hard +"@redis/time-series@npm:1.0.5": + version: 1.0.5 + resolution: "@redis/time-series@npm:1.0.5" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 10/be735fe7497b157ef8291fed157342a9a5017884488fa519b271745cfb9500a498d6f8e4bee6d34b58892d65f8ef7a3f4c458d083fb19892b4d3633d0d6c7db6 + languageName: node + linkType: hard + "@resolver-engine/core@npm:^0.3.3": version: 0.3.3 resolution: "@resolver-engine/core@npm:0.3.3" @@ -3289,6 +3387,7 @@ __metadata: dependencies: "@chainsafe/bls": "npm:^6.0.3" "@chainsafe/blst": "npm:^0.2.4" + "@chainsafe/persistent-merkle-tree": "npm:^0.6.1" "@chainsafe/ssz": "npm:^0.9.2" "@cosmjs/cosmwasm-stargate": "npm:^0.30.0" "@cosmjs/proto-signing": "npm:^0.30.0" @@ -3309,10 +3408,12 @@ __metadata: crypto-js: "npm:^4.1.1" dotenv: "npm:^16.0.2" ethers: "npm:^5.7.0" + express: "npm:^4.18.2" ffjavascript: "npm:^0.2.59" glob: "npm:^8.0.3" hardhat: "npm:^2.10.2" hardhat-gas-reporter: "npm:^1.0.8" + ioredis: "npm:^5.3.2" jest: "npm:^29.7.0" prettier: "npm:^2.6.2" prom-client: "npm:^14.2.0" @@ -3329,6 +3430,7 @@ __metadata: yargs: "npm:^17.7.1" bin: get-balances-input: dist/beacon-light-client/plonky2/get_balances_input/get_balances_input.js + get-changed-validators: dist/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.js languageName: unknown linkType: soft @@ -3336,8 +3438,12 @@ __metadata: version: 0.0.0-use.local resolution: "Relay@workspace:relay" dependencies: + "@chainsafe/persistent-merkle-tree": "npm:^0.6.1" + "@chainsafe/ssz": "npm:^0.14.0" "@effect/schema": "npm:^0.33.0" + "@lodestar/types": "npm:^1.11.3" discord.js: "npm:^14.12.1" + redis: "npm:^4.6.10" ts-node: "npm:^10.9.1" web3: "npm:^1.10.0" winston: "npm:^3.10.0" @@ -6410,7 +6516,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.14.0": +"express@npm:^4.14.0, express@npm:^4.18.2": version: 4.18.2 resolution: "express@npm:4.18.2" dependencies: @@ -11331,6 +11437,20 @@ __metadata: languageName: node linkType: hard +"redis@npm:^4.6.10": + version: 4.6.13 + resolution: "redis@npm:4.6.13" + dependencies: + "@redis/bloom": "npm:1.2.0" + "@redis/client": "npm:1.5.14" + "@redis/graph": "npm:1.1.1" + "@redis/json": "npm:1.0.6" + "@redis/search": "npm:1.1.6" + "@redis/time-series": "npm:1.0.5" + checksum: 10/cc66182b8fa78c2a63b5300b15fa6fbf8908773d78bc5ca3960018f465595b51dfecaebe8c848111a3b723530f17bdaa1c186f73875cd9ba351f32d2e5e14d5f + languageName: node + linkType: hard + "redis@npm:^4.6.5": version: 4.6.5 resolution: "redis@npm:4.6.5" From f443bba4281edceb6de56e191a91b2514e1af961 Mon Sep 17 00:00:00 2001 From: monyarm Date: Fri, 24 Nov 2023 13:46:04 +0200 Subject: [PATCH 18/59] balance_verification all levels --- docker-compose.yaml | 703 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 703 insertions(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index 7ce345023..f24e240d6 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -42,6 +42,99 @@ services: condition: service_healthy ports: - "6379" + balance_verifier_level_0: + image: balance-verifier-for-level-0 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 0 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + ports: + - "6379" + balance_verifier_level_1: + image: balance-verifier-for-level-1 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 1 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_0: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_2: + image: balance-verifier-for-level-2 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 2 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_1: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_3: + image: balance-verifier-for-level-3 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 3 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_2: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_4: + image: balance-verifier-for-level-4 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 4 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_3: + condition: service_completed_successfully + ports: + - "6379" balance_verifier_level_5: image: balance-verifier-for-level-5 environment: @@ -57,5 +150,615 @@ services: condition: service_completed_successfully commitment_mapper: condition: service_started + balance_verifier_level_4: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_6: + image: balance-verifier-for-level-6 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 6 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_5: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_7: + image: balance-verifier-for-level-7 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 7 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_6: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_8: + image: balance-verifier-for-level-8 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 8 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_7: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_9: + image: balance-verifier-for-level-9 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 9 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_8: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_10: + image: balance-verifier-for-level-10 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 10 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_9: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_11: + image: balance-verifier-for-level-11 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 11 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_10: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_12: + image: balance-verifier-for-level-12 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 12 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_11: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_13: + image: balance-verifier-for-level-13 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 13 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_12: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_14: + image: balance-verifier-for-level-14 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 14 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_13: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_15: + image: balance-verifier-for-level-15 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 15 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_14: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_16: + image: balance-verifier-for-level-16 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 16 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_15: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_17: + image: balance-verifier-for-level-17 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 17 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_16: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_18: + image: balance-verifier-for-level-18 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 18 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_17: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_19: + image: balance-verifier-for-level-19 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 19 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_18: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_20: + image: balance-verifier-for-level-20 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 20 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_19: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_21: + image: balance-verifier-for-level-21 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 21 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_20: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_22: + image: balance-verifier-for-level-22 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 22 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_21: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_23: + image: balance-verifier-for-level-23 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 23 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_22: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_24: + image: balance-verifier-for-level-24 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 24 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_23: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_25: + image: balance-verifier-for-level-25 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 25 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_24: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_26: + image: balance-verifier-for-level-26 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 26 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_25: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_27: + image: balance-verifier-for-level-27 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 27 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_26: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_28: + image: balance-verifier-for-level-21 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 28 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_27: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_29: + image: balance-verifier-for-level-29 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 29 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_28: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_30: + image: balance-verifier-for-level-30 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 30 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_29: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_31: + image: balance-verifier-for-level-31 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 31 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_30: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_32: + image: balance-verifier-for-level-32 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 32 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_31: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_33: + image: balance-verifier-for-level-31 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 33 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_32: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_34: + image: balance-verifier-for-level-34 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 34 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_33: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_35: + image: balance-verifier-for-level-35 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 35 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_34: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_36: + image: balance-verifier-for-level-36 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 36 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_35: + condition: service_completed_successfully + ports: + - "6379" + balance_verifier_level_37: + image: balance-verifier-for-level-37 + environment: + - COMPOSE_PROJECT_NAME + entrypoint: '' + command: balance_verification --redis redis://redis:6379 --level 37 + depends_on: + redis: + condition: service_healthy + get_changed_validators: + condition: service_started + get_balances_input: + condition: service_completed_successfully + commitment_mapper: + condition: service_started + balance_verifier_level_36: + condition: service_completed_successfully ports: - "6379" \ No newline at end of file From d2d0d4e02b3f28487c62133ae13c8b6d5561ab22 Mon Sep 17 00:00:00 2001 From: monyarm Date: Fri, 8 Dec 2023 12:14:03 +0200 Subject: [PATCH 19/59] Start of terraform config --- example.tf | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 example.tf diff --git a/example.tf b/example.tf new file mode 100644 index 000000000..b6c0354a1 --- /dev/null +++ b/example.tf @@ -0,0 +1,48 @@ +terraform { + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "=3.0.0" + } + docker = { + source = "kreuzwerker/docker" + version = "=3.0.2" + } + } +} + +provider "azurerm" { + skip_provider_registration = true # This is only required when the User, Service Principal, or Identity running Terraform lacks the permissions to register Azure Resource Providers. + features {} +} + +provider "docker" { + host = "unix:///var/run/docker.sock" + registry_auth { + address = azurerm_container_registry.example.login_server + username = azurerm_container_registry.example.admin_username + password = azurerm_container_registry.example.admin_password + } +} + +resource "azurerm_resource_group" "example" { + name = "test-registry" + location = "West Europe" +} + +resource "azurerm_container_registry" "example" { + name = "containerRegistry1" + resource_group_name = azurerm_resource_group.example.name + location = azurerm_resource_group.example.location + sku = "Standard" + admin_enabled = false +} + +# resource "docker_tag" "example" { +# source_image = "get_changed_validators" +# target_image = "${azurerm_container_registry.example.name}.azurecr.io/get_changed_validators" +# } + +# resource "docker_image" "example" { +# name = docker_tag.example.target_image +# } From 6438bf9353caada81e9545bf4f002cf8ea6f1272 Mon Sep 17 00:00:00 2001 From: monyarm Date: Thu, 14 Dec 2023 18:25:02 +0200 Subject: [PATCH 20/59] Mock mode --- .gitattributes | 2 + .../plonky2/circuits_executables/Cargo.lock | 92 ++++++++++++++++++ .../plonky2/circuits_executables/Cargo.toml | 2 + .../bin/balance_verification.rs | 48 ++++++++- .../bin/commitment_mapper.rs | 53 ++++++++-- .../mock_data/inner_proof_mapper.mock | Bin 0 -> 214436 bytes .../mock_data/inner_proof_verified.mock | Bin 0 -> 214532 bytes .../mock_data/proof_mapper.mock | Bin 0 -> 234812 bytes .../mock_data/proof_verified.mock | Bin 0 -> 204016 bytes .../get_balances_input/get_balances_input.ts | 12 ++- .../mock_data/beaconState.bin | 3 + .../get_changed_validators.ts | 44 ++++++++- docker-compose.yaml | 82 ++++++++-------- libs/nix/get_balances_input/default.nix | 3 + 14 files changed, 279 insertions(+), 62 deletions(-) create mode 100644 beacon-light-client/plonky2/circuits_executables/mock_data/inner_proof_mapper.mock create mode 100644 beacon-light-client/plonky2/circuits_executables/mock_data/inner_proof_verified.mock create mode 100644 beacon-light-client/plonky2/circuits_executables/mock_data/proof_mapper.mock create mode 100644 beacon-light-client/plonky2/circuits_executables/mock_data/proof_verified.mock create mode 100644 beacon-light-client/plonky2/get_balances_input/mock_data/beaconState.bin diff --git a/.gitattributes b/.gitattributes index af3ad1281..b2060d899 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,3 +2,5 @@ /.yarn/releases/* binary /.yarn/plugins/**/* binary /.pnp.* binary linguist-generated + +beacon-light-client/plonky2/get_balances_input/mock_data/beaconState.bin filter=lfs diff=lfs merge=lfs -text diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.lock b/beacon-light-client/plonky2/circuits_executables/Cargo.lock index 0e7c6ecdf..03f513766 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.lock +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.lock @@ -29,6 +29,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + [[package]] name = "anyhow" version = "1.0.72" @@ -191,6 +200,15 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "binary-stream" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4ef03ef225ea9a0b680a5926a58cb45d8eb56abf23d8a8b5c5dbc61235e2dac" +dependencies = [ + "thiserror", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -286,11 +304,13 @@ dependencies = [ "clap", "futures-lite", "jemallocator", + "jsonm", "num", "plonky2", "redis", "redis-work-queue", "serde", + "serde-binary", "serde_json", ] @@ -782,6 +802,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonm" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef5e879b2495af9898cd6bb696fe5aa6380b345971c4758da7923179739ac9b" +dependencies = [ + "regex", + "serde", + "serde_json", +] + [[package]] name = "keccak-hash" version = "0.8.0" @@ -1209,6 +1240,35 @@ dependencies = [ "uuid", ] +[[package]] +name = "regex" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + [[package]] name = "rustc-demangle" version = "0.1.23" @@ -1250,6 +1310,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-binary" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b550db407b83ed53a4f76f888bfd7441b685abc2c086e20fb47781a286940506" +dependencies = [ + "binary-stream", + "serde", + "thiserror", +] + [[package]] name = "serde_derive" version = "1.0.180" @@ -1267,6 +1338,7 @@ version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" dependencies = [ + "indexmap 2.0.0", "itoa", "ryu", "serde", @@ -1372,6 +1444,26 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + [[package]] name = "tiny-keccak" version = "2.0.2" diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.toml b/beacon-light-client/plonky2/circuits_executables/Cargo.toml index 7fab6acd5..784116c3d 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.toml +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.toml @@ -17,6 +17,8 @@ redis-work-queue = "0.1.3" futures-lite = "1" jemallocator = "0.5.0" clap = "3.0" +jsonm = "0.2.0" +serde-binary = "0.5.0" [[bin]] name = "balance_verification" diff --git a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs index 214f11819..5e1076f29 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs @@ -16,12 +16,13 @@ use circuits_executables::{ }, provers::{handle_balance_inner_level_proof, SetPWValues}, validator_commitment_constants::get_validator_commitment_constants, + validator_balances_input::ValidatorBalancesInput, }; use futures_lite::future; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::PartialWitness, - plonk::{circuit_data::CircuitData, config::PoseidonGoldilocksConfig}, + plonk::{circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs}, util::serialization::Buffer, }; @@ -32,8 +33,14 @@ use redis_work_queue::{Item, KeyPrefix, WorkQueue}; use jemallocator::Jemalloc; +use std::fs::File; +use std::io::Write; +use serde_binary::binary_stream; + #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; +static INNER_PROOF_MOCK_BINARY: &[u8; 214532] = include_bytes!("../mock_data/inner_proof_verified.mock"); +static PROOF_MOCK_BINARY: &[u8; 204016] = include_bytes!("../mock_data/proof_verified.mock"); enum Targets { FirstLevel(Option), @@ -85,6 +92,13 @@ async fn async_main() -> Result<()> { .takes_value(true) .default_value("infinity"), ) + .arg( + Arg::with_name("mock") + .long("mock") + .help("Sets mock mode") + .takes_value(false) + .default_value("false") + ) .get_matches(); let level = matches @@ -115,6 +129,12 @@ async fn async_main() -> Result<()> { .parse::() .unwrap(); + let mock = matches + .value_of("mock") + .unwrap() + .parse::() + .unwrap(); + let redis_connection = matches.value_of("redis_connection").unwrap(); let start = Instant::now(); @@ -163,6 +183,7 @@ async fn async_main() -> Result<()> { time_to_run, stop_after, lease_for, + mock ) .await } @@ -178,6 +199,7 @@ async fn process_queue( time_to_run: Option, stop_after: u64, lease_for: u64, + mock: bool, ) -> Result<()> { while time_to_run.is_none() || start.elapsed() < time_to_run.unwrap() { let job = match queue @@ -213,6 +235,7 @@ async fn process_queue( job, circuit_data, targets.as_ref().unwrap(), + mock ) .await { @@ -232,6 +255,7 @@ async fn process_queue( inner_circuit_data.unwrap(), inner_circuit_targets, level, + mock ) .await { @@ -251,11 +275,18 @@ async fn process_first_level_job( job: Item, circuit_data: &CircuitData, targets: &ValidatorBalanceVerificationTargets, + mock: bool, ) -> Result<()> { let balance_input_index = u64::from_be_bytes(job.data[0..8].try_into().unwrap()) as usize; let start = Instant::now(); - let validator_balance_input = fetch_validator_balance_input(con, balance_input_index).await?; + + let validator_balance_input_mock: ValidatorBalancesInput = serde_json::from_str(r#"{"validators":[{"pubkey":"28155455410776443498482448245529435809359956175169908048702124937172512699631467778238641261986684575799579397993811","withdrawalCredentials":"382737961640003689533910812141398037732875097701826973858731813319968970850","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"26979846440152886011310362764920484765984271438301878724818610563677684689774592103308019846399354324216936243366261","withdrawalCredentials":"334836033201229227961245502702526419573885144848257583169567123681803257233","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"27801740282514395063227256283476233197453489056913878482578327955357746398789954319627803579173623839636086204205312","withdrawalCredentials":"452312848583266388373324161311539720301441557426889082580326305166421027472","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"21527346288222609476208495591203643471148391088705253248992136372752069313676131849343273583439774745199246011648576","withdrawalCredentials":"367671889103706031716807112321536209552784367704779136855912917662270427673","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"22320248583573513380499645876659337063375986179485491270050641054377962534820064449058321021365382800967547431872178","withdrawalCredentials":"452312848583266388373324160271404058109911226905144332655132243525891128419","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"21619640184761671406845477913809792923864724567879069222980681511978293118339791878883269161616622145838709233406408","withdrawalCredentials":"13798419507846026553622359324325711518785000279005931307706727393517509549","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"28315493868134351375148990743790149058304089158549908131347185017299284710487426690336332785304639119792063400013028","withdrawalCredentials":"3043153795794382687251851273790182871169017274083796406622225121057728559","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"25138136466776665720292214356534543105788238163001562454030604153595944200262426495626688131184611875744151551092852","withdrawalCredentials":"452312848583266388373324160200794100136802167846724101891059603667205939461","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"}],"balances":[[0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,0,1,1,0,0,0,1,1,1,1,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,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,1,0,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,0,1,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,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,0,1,1,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,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,0,0,0,0],[0,0,0,0,1,0,1,0,1,0,0,0,1,1,1,1,1,0,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,0,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,1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,1,0,0,1,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,0,0,0,0,0,0,1,0,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,1,0,0,0,0,1,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,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,1,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"withdrawalCredentials":"452312848583266388373324160315533450859862645952655026790676503269398455083","currentEpoch":"217293","validatorIsZero":[0,0,0,0,0,0,0,0]}"#).unwrap(); + let validator_balance_input = if mock { + validator_balance_input_mock + } else { + fetch_validator_balance_input(con, balance_input_index).await? + }; let elapsed = start.elapsed(); @@ -267,7 +298,10 @@ async fn process_first_level_job( targets.set_pw_values(&mut pw, &validator_balance_input); - let proof = circuit_data.prove(pw)?; + let proof = if mock { + let proof_mock: ProofWithPublicInputs = serde_binary::from_slice(PROOF_MOCK_BINARY, binary_stream::Endian::Big).unwrap(); + proof_mock + } else { circuit_data.prove(pw)?}; match save_balance_proof(con, proof, 0, balance_input_index).await { Err(err) => { @@ -295,6 +329,7 @@ async fn process_inner_level_job( inner_circuit_data: &CircuitData, inner_circuit_targets: &Option, level: usize, + mock: bool, ) -> Result<()> { let proof_indexes = job .data @@ -312,13 +347,16 @@ async fn process_inner_level_job( Ok(proofs) => { let start = Instant::now(); - let proof = handle_balance_inner_level_proof( + let proof = if mock { + let inner_proof_mock: ProofWithPublicInputs = serde_binary::from_slice(INNER_PROOF_MOCK_BINARY, binary_stream::Endian::Big).unwrap(); + inner_proof_mock + } else { handle_balance_inner_level_proof( proofs.0, proofs.1, &inner_circuit_data, &inner_circuit_targets.as_ref().unwrap(), &circuit_data, - )?; + )?}; match save_balance_proof(con, proof, level, proof_indexes[1]).await { Err(err) => { diff --git a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs index ca55abb6c..bfb144d32 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs @@ -17,7 +17,7 @@ use futures_lite::future; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::PartialWitness, - plonk::{circuit_data::CircuitData, config::PoseidonGoldilocksConfig}, + plonk::{circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs}, util::serialization::Buffer, }; use redis_work_queue::{KeyPrefix, WorkQueue}; @@ -27,6 +27,11 @@ use validator_commitment_constants::get_validator_commitment_constants; use jemallocator::Jemalloc; +use serde::{Deserialize, Serialize}; +use std::fs::File; +use std::io::Write; +use serde_binary::binary_stream; + #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; @@ -59,6 +64,13 @@ async fn async_main() -> Result<()> { .help("Sets for how long the task will be leased and then possibly requeued if not finished") .takes_value(true) .default_value("30")) + .arg( + Arg::with_name("mock") + .long("mock") + .help("Sets mock mode") + .takes_value(false) + .default_value("false") + ) .get_matches(); let redis_connection = matches.value_of("redis_connection").unwrap(); @@ -66,6 +78,8 @@ async fn async_main() -> Result<()> { let client = redis::Client::open(redis_connection)?; let mut con = client.get_async_connection().await?; + println!("Connected to redis"); + let queue = WorkQueue::new(KeyPrefix::new( get_validator_commitment_constants().validator_proofs_queue, )); @@ -97,6 +111,14 @@ async fn async_main() -> Result<()> { .unwrap() .parse::() .unwrap(); + let mock = matches + .value_of("mock") + .unwrap() + .parse::() + .unwrap(); + + let inner_proof_mock_binary = include_bytes!("../mock_data/inner_proof_mapper.mock"); + let proof_mock_binary = include_bytes!("../mock_data/proof_mapper.mock"); loop { println!("Waiting for job..."); @@ -130,8 +152,15 @@ async fn async_main() -> Result<()> { validator_commitment .validator .set_pw_values(&mut pw, &validator); + + - let proof = first_level_circuit_data.prove(pw)?; + let proof = if mock { + let proof_mock: ProofWithPublicInputs = serde_binary::from_slice(proof_mock_binary, binary_stream::Endian::Big).unwrap(); + proof_mock + } else { + first_level_circuit_data.prove(pw)? + }; match save_validator_proof(&mut con, proof, 0, validator_index).await { Err(err) => { @@ -166,14 +195,18 @@ async fn async_main() -> Result<()> { &first_level_circuit_data }; - let proof = handle_commitment_mapper_inner_level_proof( - proofs.0, - proofs.1, - inner_circuit_data, - &inner_circuits[proof_indexes[0]].0, - &inner_circuits[proof_indexes[0]].1, - proof_indexes[2] == VALIDATOR_REGISTRY_LIMIT && proof_indexes[0] == 0, - )?; + let proof = if mock { + let inner_proof_mock: ProofWithPublicInputs = serde_binary::from_slice(inner_proof_mock_binary, binary_stream::Endian::Big).unwrap(); + inner_proof_mock + } else { + handle_commitment_mapper_inner_level_proof( + proofs.0, + proofs.1, + inner_circuit_data, + &inner_circuits[proof_indexes[0]].0, + &inner_circuits[proof_indexes[0]].1, + proof_indexes[2] == VALIDATOR_REGISTRY_LIMIT && proof_indexes[0] == 0, + )?}; match save_validator_proof( &mut con, diff --git a/beacon-light-client/plonky2/circuits_executables/mock_data/inner_proof_mapper.mock b/beacon-light-client/plonky2/circuits_executables/mock_data/inner_proof_mapper.mock new file mode 100644 index 0000000000000000000000000000000000000000..8ea2e75480b6020805db68e5024ff74837bbc7b8 GIT binary patch literal 214436 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�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 literal 0 HcmV?d00001 diff --git a/beacon-light-client/plonky2/circuits_executables/mock_data/inner_proof_verified.mock b/beacon-light-client/plonky2/circuits_executables/mock_data/inner_proof_verified.mock new file mode 100644 index 0000000000000000000000000000000000000000..466612de145a399ba2e3919504f23790f67a128b GIT binary patch literal 214532 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 literal 0 HcmV?d00001 diff --git a/beacon-light-client/plonky2/circuits_executables/mock_data/proof_mapper.mock b/beacon-light-client/plonky2/circuits_executables/mock_data/proof_mapper.mock new file mode 100644 index 0000000000000000000000000000000000000000..63e85bcbbbfeb969a6c8929aa8684a224aae9a64 GIT binary patch literal 234812 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

t;=j74L)Cxu!XAj|`~ds4y5V>Lw9JjWT+VHx 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�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

XXs|1D@5+4fgF;CpiE>DumN~RTi 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 literal 0 HcmV?d00001 diff --git a/beacon-light-client/plonky2/circuits_executables/mock_data/proof_verified.mock b/beacon-light-client/plonky2/circuits_executables/mock_data/proof_verified.mock new file mode 100644 index 0000000000000000000000000000000000000000..2901ca571fb85b83a18886ef5b95790bfd744b29 GIT binary patch literal 204016 zcmbT71yCN%((mDc;7)K&a0>*7;1b+5!2<+$g1fuB1=rw^;7)J|ZoyrGyIz*_y{FE1 z^VB_6H&t5&zx025c6Pd_cV>WqfB->2K)kTFwX*sQ{P1+aJDS)U+Ue-)SwH=P_H;o$ zU2ulxh8BjF_I6J{L(h`8Se1&i{4#uK+k%aeQ&!xLGulmYdpr%Cq`#%0fCHy7LjV4C z>Q)_(XPJO0TO2iHYJi|jaM#0rd~hTGutp8J)p8cNVT`Nxv?BbyX%iUCSYOzUgS_ThuSMkY z8T%3RJq53*0Gx&z#69z}n&+@xtYA)e%dN9}wD8OQtcwW=5y{4*O362H8U>_If%lg0 z7uA!cPF;KLaBBuU*v~OKPn+vnVW_QMI)c-j1yVC&amvu}IKo1JvP-4#Ump3e)dQLVbpbdfrjwr4l5Q2ZGbAQ6b%V^7#hC zj-U^fTpf)le(*6Q6b#TNtdJn=cuijnP7{Bhxjt$HLyamJZ#fr=_`B!Tr^ekKCN8L@ z#aA^PmL%XbKi2%&H$*>5UayiwydzsH$AJ*UW;wIxb$YXf8m03K7@vQQ(HglzX2;YC z7=knT7(zyavn1CpG839oye=3Kr|Ob=HgK9Lvy@BE_QDXB31XpH8q^J)oy}l;$SmSd zZEioa9Hg7TX>#*?e_LBg_=vxsa}%M!yMJ|M3`x#4&WrpZV=X&{ne0hJWNmI`X{O_1 zr(>;WYj2`wuJaUb24D2;|DQo-^|`UCa>jSma_M$S{$2Ci)!mah@4b;uU7v6n+x0$8 zaEV|4_clRBFsC|o_D4gQ`s7m9Leco-Fw_W^#dE2HD}cbm6$(|g(o+o@TlI{ z)EAiVmid#qnIFgxV_l@vfb%ouH4-Vil1GZeGqp~qg$dQUqSA1?qRK_XJG$h2)0GEK zQ>6VNbX(;&?pych-;SL(?i6SaEVS^nEFVon81L+GC?lMy2WTAc zPgQEmQO^!oXDo9}8Q~JZY2^892~I@0+ey`Fsfy}Kox-d*<~KsPDQx1l%jfvwoWW_> zze)HzLSDKa#*}h~tlY`)xXAmOjDfaA>;ir6s^dz)X{tmTwTkq5GMau>Z@!YcTDC&`oyArG#X53XAH+pcIXu&g1fzSc(78nTgD3R#SZ6*%IIsK+ptZ-utTNOTL zD)!KX97SoX7->s_^}{QX1b67YP#CKHOK5%u=I!jD_Z*$Qs~L&oGB*G3v&APr7&c$5 z>`k6#C>?7nbLanOWN{5aOT_%~nz5SbZhQOS*~#!hWzF00L$f6gvrnVYeh0W#=fc~; zEwtt4to-~=3^i!5VUS<)68TR*#z%t7;kCN?TyUBexO9}h-M8p?kesvK77%@&)~h2L z;~igKkE#EV@(@J@r)i!d)cCG#Wz(e}A-UL(EphPLq&G?qtMJAVd2_vFwH%zLhe1KG zk;@BHuAMO$pH1HL$Q+i4+9HCRHo~-TL8Y*xa^-WKX%!-xtPMwh5bivy1FRH<5T=y2?>k(Z=WMuxhXU0XwY-#;GHi`X+ zbVlEJRGkWC15Q)d)2RrG*DEEseSg9T;Y#MTr>DChraIW%z}wfVZ$S-CQ)LT1z&KKH z(|wP-^4Lkrt);e+e`%pH7E(j}v0vQL9GnKJTJ|Ke#_tuyoU{A)yLc9SHK=ll7NVAJ zUo2hEVL4xL8fVp4+}*q3DnB#WUYIv%^l^}dw(7l!uK5|RBJa9fI15g5@<+5UAf5^} zpYs)b)o|%U4d3pUHR~&(l_)K=lHJ)s~sn>1`4C+3jrtOd(yTCzKZ&N&ZLvk5}%p1^|mz zp)BzKp?U7#xsYdpi3`+kptiHf6&8%?>2_?ZIG8Adb%5#9L$zY}CHFl{m+{)y6DmG2 zq<_t!b|yv^dO$igg4d{&XL}EbrfE$x+1Dd}R(rAeW-u0vI%{ zeNqpHj*}f`^2g2)Tv>qS2aBv|ES%zbNpDKvV_HN4j3^njW_3d?gPU<6J?`Af46s$i zcsSR2G_>if+rd$rsOM)JUk{;RV;FJ$t>6c@-KftA*hS6K_69juT-Vtyb(!-{e+O8O zL48GLoY|@7>lC2XI7^j@u4_ej8UfA;1Nm!^aaqm z{KWiqEBx4|E-<9MHE)Ilus-+?90=YLjXscXnC!MUYXC;MjAFPJ^)*ulCHTP%HiOXoKK)^vrTEGtYfC7zko7$rNfl@~N!Q)JIA-4dqy-xORHy>nET5aAG zee9OI=lhkM)%eX#-zUZwqUx5q1LXo}<4tV9eEzZ?>Ct7V!6-cgz;@&fq|>B|IwZJG z7?@m;fn)(X;y%2mhzMFwKpmg7g*Ctg7>-~#UG8=IBlm&)xgU`_kcdDTzelF&FUZuq z;?_}{%P-dehBCndl}wf)|9A2qo?mix$#J79O@KITMJL`()4$FpDV`R=P;#$xrr=+!PcnZUCcq6#LLB6k2b1_`~9cz_Sft zJQG4GRi`%zno6C{RXrR#5)U-b#8{!C2=SkBbIE2wZ>TU8C#qdEIN zQGhu}{KC|UJHlWu-$YdGHMIwr*iS9B8)8oMqJ|f$J;5vA0QT~IAe*@P``_oBvSFM? z%PjztCx&1+Zy7>I3dvmd%SL)0_aV^fsfQm3J{gB@n?^^9!aUzk>$5)&I?qaooGc@) zzS9`MaHzZ>dzSlE{DXD(f&=)U^C?ZFK0cGv7R`qk!9~B5EnqbR)Q-!Z<{-00hP;bv zW&``j4`4H06;90lPo&cEo#?3sj}MO2yFF8@SKf zMbAXfC<&pUDX(O+%RwrD?GgwTh}DffMv2B7i>ET51MIbfy_I@J`+Kb5^(N4&br!%T zTlba2Yp253HM_l*nud}9=I13s2j8M-V$!oOqriUuJc$_+R)Rj!+l0t*2_}cjS?vLK z3-UtWO3^2V%JaFkz9XChizT3lIojcbsYcBFtArY|Q|1+b1(ahj@|Z69jUE}0-rJpc z0<64m=0p-A2u{VacE{LkRRv&iabHyXRKF zeD)!3a${ul`0n0MQm^aHBP0%BSLG_ah__SQKDw0%MQ6mf4={aL{R?#iI1@>H6cm-> z)NX+J^Qys$QThKK#|;TxhklC&Fdmn#Mbz&;{!Gw&15o-q&q+kZzS`%?qOLIb6;qS# zgt-@BCwFIXtBNea{JV37`b3-x4_CHnl6Rwgr?4kp9c3hsMefz`7rik6f z^IS*I$wm)k;V#+A!%g3fCgof!^E@^NR~R#Ij~Mz?@eafoxDBxYEov}7bZ_e)8Ux4< z=`bJ0=XccjW^HF(b-&O6{$3Bu4VMeB3p-}l6$qG(uvj|Zrx5UY)_!HQ~`LSu|kx9c|$pj`YyXoEl&6Ajqqtf3CR zE&oGSb0uHV`imS ztUzYOr7i)<0za*l01>d0Yw=&kQ7$bGjF-JIta6|o*7;A zFP0oUv5&v$d5n=5&7K)~-WiYd$KeE>l}X64<71=CqPQU#waq5$;FEqhu)}SP7c6M+exiz_r>rnjETQ1ukaz_fiATmS!-(PJ2@>h$0Qv{ie@ObzeLHs|}!N^ZOkptt2{7XnVRU^Ulka4J{;qVNj&Lo$h=eN0E?1 zzOS@40WhjCppQc^yz zrkr;*?@&De#&QGCQb$(tu6`rZ@wBYJ7GU+Di`+r)cVUL?JP;&bDWAu<$t8FGa33{i zd)1UxUa1u+U^hMK8I#ZP<)t>+qnh|9i1z@qq-q(WIJ@LE?N*Pye(+fUSebRvMr;W$ z!$T&cnmeLV3BVxZHN#PJ1xi+ZCrWH+(MJImO8lapvLss$LRu-&$L1q8?y;|;7vsKpsuR5bbFAvP8soxv7O*JkLq4ovib79X{Xp2U7#+D>wA<(TZs`K2>F|owG zACCBI8C1CLxvOBG>JFc1fulooFsDUtt()ozQODZt+L zuc8oDw#{H{WX2A8+3Et!%iyJA?@SBq_gELdMi+MlfK{GUZiJ!oN#VG9;h7x!KldpO zdF0VRm}Cz3qQ-4MeP9M)r~LcFvcPrKBPiXk@ynk0^IWDW{xw=~X`Z7kdRq`OB<0yI z4{gl~fM9*_Td7A@I>IgJZ1;{+OO@omK zup>6p>*cc%Rwq^VajTvp=6hmr|7;il{|{Wo@3Cq+zhBBxKEw~LGu)9IN zCdc)x3e~8bbYw9ylm^%``|!O>^g5>5%xCwj;IjgNDXqfUc`B;O&9!OF1l?;tcb3C9 zAse_y=oX;?f$to@I-lD6rBm4XnPALp!+GZ-m0Chi)rV<^s z0@&3pg$8xl^cB^FQW2HJ(*gHG`QHoJPXrCHtX?tIZp)?Z+o8eRBMAMT1hC!x%G-F% z0k8Os-Sf4_+~?1OAKe8q`V8c+`-?&9Sy+6}!^TRVp0cnilt|6hT1P8KTpiGI%t)Ol znAqF6QGW9omKu3}I=pL2oY*mDpFK>o@gf$p=P-PjVqx)X_i12#z(3B)mwxW8l9yak zud|U{@Q`emm3u->fcv!ud83Sm_5RqN!fJVyR<#bWkA!J-xTLM<4cyEjolGm10Bd|> z`3?yR?{lyhUxvrGy63Q&O--(4lKipEe-NpLsN?!PVwU*r39)0s6S|0B`Y?Y|z0MPZ zH@C7f`(pjH`S$b+@DJtR;GZA?DDwZTaRNJY&l};;PY_q%%EH3rX+yzS&(2WC!qC>t z+z{9n2W|!RbOG-N^6C0td*ee~SiKx8ZiI-TBqUqc$HUETOFuj(eXLS1KjvRJS%`zv zgeK%=Q~B@ukH=T0XiS%0L#z;{)gN)drydEKg=0q0gVW%(G8^F!GboLlPY+F@nQ$sL zxXQF8h9J(?xY26_?*paZUv1+^T%=E=k=u!?-dbTZwT!r$j;YVUjn{~73?bMvpN0pg zpJ8+uw%6-DzBxX+)wF+atP#;I* zo|s)*ZVEJ+&3nCZGDuu-n!HG?U`XlFA!!1!#k2!5(b$Pt+HW5g7vHARI$bW-#)8uz z+^FKv(KgKpqka0ZPVT;JQeOKo-?7;fK+{Nf{Rt1q7=QJ_MjetXQlv|S0J6a>3*pIX z-o=0hmtaA95Z8V?`OXCJY5bQaLbMLLw9GU^%%N)n)`gx+yU8J7Yj}|QD>*y$)XxAQ zW&fqAeS=&TulFMniE#>vH?Fj*^2!kg;&tI&o^Rrr_UW`2I89K~6t-jWdeOW2-_!~3 zEEZlC6LAmjVsNv_Z$)7~l(B%*=<v<^ycr+KzSfN`#X?c8e7g#iDu4MIW~cwj^0Fa)bEX;wJLF2*t)ZgOJtu;QP)0%~ z{=j(uNdq>9puhKT;l5L&YjV=TqVR<@{>tw;FfjgowWyKSF{RtC0I8(U4g3B zXRg!eyKy&bT=!OzomQVU6K?!O{T-SX*m26NgjlOpF*<9CeYsiS%d~-B^up2RtKJp= z3-Xa1TR9;2{N=~(Qt%Yxmy=m?YW@j@5Q6M_bBZ8d`d5b#8#&4FZ*(@`H2E=&lf@FO z&f&|Rb0Y^yaW3*fK@Exbvj{G{s-0iE@xW;kWSJ2~BREYzUAP%xPM5#jy$a@ZMD*-} zx^jm1f1vmdPBZ+z8Fr5YPE&Ryf;(&bkCL?AJchuxjB(Z3GL!tvZbxt$JWLqZ8L_BP zX0g+QqMPAIch$MiP-ETNL`SciCn%%9<^+-I2#*XQccs2i8BE@iP3UcZb26Ag*k(9V z#u^$8;W}`BUhRKjh}dB0v?s?OXySPB6J66|Nb`|gGpMAJ-{^!I=;y!sdd2O0Kx2k& zkNR`*-nBdp)k3I}c1Ynuc6DHFSJI9!kfZ<7T*0Dh zu<5?`&GPv2au-%$d77R zd%U~rdpgKL3u5JLD`5a^4wgGxujU)uxwPB)^k zZRfM``*8E;nNM3sS-L&(`d__G%fD}gD2o-6yT5e@KAHY%+b!-)d!I$hOw@C56@!-6zDj%Go&-n4{bn8gr@HdS15_oF7_ke@jooS$e^z0cLumYI3Iy;D;w zn0j!%FXL-_K>ooBv(GTbZ_H zU&xB|&?;i!XM5Tqj74(*_1|Cp_Tg=@k~B-fOl(56$QQe?%1%<9*U?j>L;?Y9$wsxY zK<)FFraZf^D>mkI2FL%KH>srY1)1>mFSken8=N|-vpI#6PH>u+v3yw~==tW!oJbOg zqp;WNl#-0~@j;8y@^E1(Q_Ua2X{dHi0+~DW;917i_}1CSarRQpET?IV^5BaGs2JRI zfjafCwvpZi)2U7b2g-g!n1`o?akrqO$a7(6vEbmO43&kA4SCW$9Un2Yb=I-9`eJGD zuOiUyi4s0tKqZZ7VrlYxaLeA-@abseKSd(o2+7bv&-{N7AOVsRAW@kLjHfxAo@g3f zz%-d#VQqHCYf3V#1j+XhOd)&~$A5V3N-Z6qII87VSw3ci%KMbIB0Aq#BBNEtxSR>I zP@);ttaC?UEs2T0i=Sevm*e$R_|qBx8unu*A>3w)K`fF>tFk0)X&74rM4MUlH-ykIE5xuxlAJd#A2+MhJ`JqNCir&2iH&SL@dQf3Ty5?IM zEFUQa+A5#dEUG`XxfqtDB=fp2q#9Ud<^QD$MYE;&f!)E#sbm!c!_Wdjy&RmMx*G1xszvnOkK9E{@lTD0z(>hD6xVt)~ZAyZb9xlNf#Wgsfm?VmVwaT4A-q zkSOddr8b#JZ}zjwzMU6mfYXeT;1X&~MDF`3H4$iur3R#K)It3)c5cJ_Rz2k!j6ncS z)8MYZ-|&+)>7G9UqA?AGjp}x+K1tx+7wp2`C5U|qc0xIMNn+eWUv>Xrl%iRfGrqn>0KUltD!m+X@ZV*+%By& z$LdH5rCa>#kY4(T)`|v$^MiezBp8rO&C|E2z8G-koKRofhmnd|0Fly;H()+TbNHkI z`a6(5T1q63GC%5drsHe&f!iq_iCcPeHS>A#5&lAD5Z-O~P-~x3<2wx^r7ZJmyLVnA z^+NH>6lm>fnY7+RbFx{{pW(jabbO)3vQmWCtjb})T{v|KG1PnTJSzB9VU91C3iIQa zi+vlG()t`CgdIZiQv7Qe3)x7io5CLjpYq4IglUkkebiotKz#r5OFcb?HpsDm)LXka zh~XmS^zbH>X*C~nZH<>TW{0N%svy->is^ApP-jO~-2s%tZSz_Bz`2#b;1uGxIdR_9 z<12}^*?Lu%!}}9wdttBqbYDF<2y9}&hCen)a8=#-H(#gYaT<*8>TDw2 zd>AYcGOeLf4@g3+gY)qpq04Kke|HlxOg%D4U=5`bAv+)S@3lZyd?hKC9Ol^f+n~;C z8q$`2rMe8-%tti$!ypTQ%dWhL>~4}7UXYPiNTelxgSKSiP?~PJIKcmsdWoG&dx}nP zitBUGquFs1HQE$$#>L1b0^vL3{X7O?gZECvf}*E0>-p-Aj@Dvjjbe50j@7Ox1o7+a z;2FOi{wQvNk!vB_MMOZuQ}`maMser%^G+@mNfv2}lD53D;E<+cWh0vrF(Ftrhrz5_ zykK=~7%woLCTSvVFA_`llg-!zW4jSyN9F7p$5gH;dH+?lCff^aW4jJJzW$(JBUe>@ z#l$hgyYR22CphQ)FpL7sltiq0Xe?j0r5>RW&ausjrG$Nt2z_fKIyZED^ec?pXy@9g zMyl;Blg5d?(n9RphZI8G+ZMN%lqTYq{&jAn0lQywUVRNvsgr~lhf8nWRag6e zijc%`TXfxub7IrKqQg=PDsR`-P+Yx;Jj%z6oYc}8j@QiT8 zwRrIO)PZqE-g#((lVZ1JDe%FP%`E)H7Fx+%_RDux^#OmpP!D{&#^Or!GMHfn`4@iL zbytIpNaga{kebDQH4{&7HS$m76*n$}{IKet&fu}V>yb2`@8f`62~k$MqkNPo_pbfh z+uXIi7-hGLp(g0@`J&xFWZQR}ONffLwRt6xvVJO+l(I>qDV!^L85Q7p)76{BdiaY{ z{>eH2ZQcv^&{$>6rB+p))A1A-YTzSy*->M)Qu$hLFy&?C+?d5b_xaDcQgNp;+(Puo zdiZ9069GxdwR&B)!?zaXeCH$3PK19u4o=gQml{!-J(pei3Zh|i1L9Jre8j0Y#L&J+ zL`t4%A&nTEMnDlu&Q{?afmZ$FTiAG=&W%{5S)m8)NtOC2tHOpuH*gvi^?n8rQpKin z+@--Vk>lP)MDqYXAyfUETMAbUMzXKqG(iUO)w&~Ww$2^uc~Wt*>u!QPVi8yt7T#1Z z=Hk0RUEnmU4~{A!=>1(NlfiWxb?tr~mrGnqi6gg{oxiJbayWv(Y5pK%T`c}s-f5d4 zZEg`)Q(&QF;9avz?2f~2;nTh*0{h_+)W$0H`69h=`#5T610~uLUB)pBzXL<3TP?o~ zvge~7I6qblsho@7_v9YG)YOq1PI?DX2efX$lY6?Z#c^OW;b()>#N1x{s|RZeDoVM! z5l@OAPgKon)g=A=icD1DXuuyc22OLs)@*x|ZQ~s^0#rY^l5mmj{XD);? zW1$C}Cdr6H(sMQ+_3Nu7K|{$;>??;`c5Z0*2xsiu#w@z#iccC~-g|ika}#qVgpgBe zb@$V@>+}!v;v(IQv0X4cq>6Y#YxyR9LB81+j18XH#r~6Q;Wxi;^L%!6gUqD^m5>ti zdhQF&!bOb#4Eej3nc5%a)Y7zX;rwxOOr&}}dc%Qu^r;`)F+O-{k0KOuZ3biH&ghT~ z$;J~(?U#S28)u=5R@f(9s7;OahBTx!moNxkcn-C=*&O9|1&0a*`rq`XYw7n_Lmn?HIdU4#Ig4EAVgYc{v4Cy zY(jd0(>w}fqEq?L@?WOhQ?H}sNMYY=hzO}cHqvhReo5}#d<{-hR-aV$aL`xv(sfbe z*Gz|}xEr|w;Uv5oLZtVJ87nLcI8B^LoU{gV-pGV`u$RY+{udw9E*$5?Sl=uKpE51+ zdxKpNY3omykN9dOk9tfXnojw8(Q59ZV&=>?L>_tew1Jlw7M!0+q?b(R3HD`1D$D&M z$0YLzytWA@JUb@-Bg*yZ@$A61+h6rwLA4C>J(n3|-~QY}N%;odxBzI3K{FkC;f1xB zAsaT>MHJWLkAWdUx+kgF`xyanJN~V8fBdnAFNyPZBO-75jl975fz?^z;Gu5xd|h)I zo0^!{VA@$6$-+g`*`{o?$mM;g3{KPISXpLb^eX*@8wn4r*rDMTGt!jZRRxCLk*>gC zK^xc&fJgt0kpZ0Ef|Ts+9#tma)2x0CXPqk8fExD(5RrjW#FHOj?4tPyuCKte_Y%Cz z6YbSmcP^yZWP__78pAtsi{xs>CXu= zn)yb|AN>o)sajv*DU0a z)j%=F-^Y_EBfm3VMXm{ko@fHBSD5ZkIu*gtwhw_t39`ZS^VW4yD46@%Zcl1B-zCiu z0htWMd&e?<5TCqS?_Q9is$J3xF!reseCBBeC%7H<=n*$Qpt1z5mf+(_8XTsnm!7Q7 z+U{dLF{J<5iT=-3NVxyV5@5f;i-apC?Vb1GFq1t3OtW}OZMWa|pGq~l6DOce6GzYk zef!sFhn|Q({_q{D5CYMLckRPTHMSx*2`Q6=7!n@$i(bO`Q*atM7Fxko`ZQJ3!35z{ zxV964_`6?jv%Q7mi84z1Rl^0~G%_6}p;tvF)zaf*b|I^>y7pr0TqUDijrOuw1e%;x z{a`gd=;!t1!-%!?YxaEoMotz5b3@K&64WP1^Bb6ySZ0%)qNFq3fykW3oa zXfexSA5Tba(baP*W27#C_xD#H%A||Ls(xVSY%Mozy z}|CUBhj*W-)BTaQjbvo8_AUJz)O;Z)~3IR?9B zbZvegiCYk0BAixp{PQG7Qt>$-ArhU}048uHfFf5rQ4tQgP0WY177j4PNv~S^v9Hdv z@GAlN-qITYb1R{u^LLQc=#54zQy>j{9{5G}=4?0;&gf5_XkL7sVFK7O9?g5{jQ@6R zCpBw7!8Lq7MrRjbb3&#p>9fV;85v-H<__33z*M{yM94x*8;+LwwGs_1=Yi%D@nI1$ z`61TW*Mjm3Juw01pd8-}Rj|xmSErs&j*gZEFnA;zXcz~b>~WcQoAG%!UjSwr{_Es* zcf55AYzABA2^v!KI4{L0s{0e4MV5zZoxV9pPFo? zYay#cSb1^vZ>2YB1ZteHTkc{9ec&{G5Thqb33jt|(+>|?aJgTc#EC@3`rj~lak6d~ z{m$_Qr-7;PFgQKX#F2P$jB$i!_j6!WQm9;d>{C~F?8&@&*El%M_%Alb*{!f6hB6OX z2#=&Ml6W~`sc+93IHZit=r7*bK572W;9f6JlKk>xS4Q@uSiAdmflWRT`UvM^E4RPk zNrk7PP}l)4z%Il?khk?GsNKyM?nxDBp3m5hl6qW_&RV`2aod~pQiApe?AplmVbYvz z6&67D<*8Dy!~jO6^_`0HQvKH`XS1GemUBG7@d!0(l2l1NuC$fekc}&d_&d#`EerK7E0}&G~&GV}ZyhC=A`rcljcxCDY6K=Yelm zP{-^Wg5lo^yBB#irr&mIp9h}qwLivEM{B?LEPb}U8v>ApKv*c{9lp-e7`cY#$hbmC zK#lO<1|Beg{u)HhC`rOJ6gA$&sG7q{QgprkOq@>c+YnQGH@z6;6Owv>uczz(XRB)G zqkHJuK~#BWQrmaI>Bzpr0WOWP$xH(EHMAz-d9NFFJQfQDkJNLs?ZYI__%kySS$dA( z(yfQxb1F-tN6pw^VvBoY&b>^+e0|ljhrA`?2k0rR4nu3W5t&&cW}85bZH*i8y*juY zzrLK$fASCo3(Jq@X`06J5deu+cW65#t zI*lhan-Y44%;aNYYX?5y;`O_4l%txyFEy%q0- zgQ&w3T6J{p`G<4Oqk;cXz|iMADl-R7^k|Vwj88N<0oOLO zwi1iO*Mw(V0ZCkLdyWE`?pF_6uqdCa4%dbg=oOg3Y2=Y`7aVCKYE|?{D&M0aJ37qi zS4vCraND{~)Q76qii6WwO_b+LuH7qc5yynay?QIn7l=zwdNt#9E`2g7%TDD5PJ?uv zM*5XZzW(4`)^UOI~EWWCON(g3MB zkUA%b@hHVMOC~UMF8F7Z=QWz4_|FyS_cZf36@lkD=PQBM8nQGRv^ey%Ws>|g{_xVi z@%p20uZtY{%`NJ1Qh&KO1ln%_^4wQh7~74< z>nFv*-}%fG=}gRJ+zbS7RTDlmXkZW#2X7W+Iw6xu=Sm%WMa>22!b$SIo|k#=g~=6g zbR;x)%q% z!GH#(GIo^;vUAN1sVyUadwH1g7%tY&35cD7)AiFPpT@gar#NkOx%24j5&M0qS?P>) z?+J9@DaXAxs2%ZdLPdF)7MK5x7m{)RCMkJthwu-tRLcA((mYaA^ixpSZuNmKkHA2C z-4<<84z0x*!Ee!ycbgK*v;1h(fiEcBzgF|gk_z)w!8IY`(&687))8O~1~7;rPfkKO z&T0o`=L!fg_398Y+F z%2R%^A9?&#f|IFeaL*;G$$ziP6XCvjK&lcEQu?SAkI zvNO7d&#^hcW>U4Sm|#!Hi#+Pf(7-vO6_R_rgpL8Nl=a>0BY&cQf$vg<{v;yjv zXXv}F%!jbuSTm5^vffHiLwfb6I{6TBF0eV9>v}wx&kFSzxoU4#Wdsa&ZCM!pfGhF? zS$CGWcbC=}Hqa~#%<@;hnl;+}aJIcJH9Ityy=c(|sr{XDLQ4~e(cHh1Jf_;`ln7r9 zV38$LkQaYaOEmxSACYz3#`(H< z#4p^m?(g6sNYP+UamIY9x4EtnSyfLrHhCqKy8l5AYt*;NpP78&MK7x-^@z}q>EH48 zc_O8qKUNp5k5Z2uDr+*ZGs4}b{B~@nh`%CyL>n^*!{@4NF6T4UlOx$$7$$6lqH?7X zmBwLno?v62|L&&Ag{a^75W;z^QMnk8%jWRb&`D9S&_4*;^$$MPwE$l){5ME`!kB+@ z&VQTt&|MH3zJ0m~B%jtja* zmhG1<{%#6w?EIIHMe|Ss4y&s(IAa{U}!sf-h@B z@+mzn1g^ydusrpbCgF>&3`tQb5+%eJJXhzJpRj!9eee{D<6iJx3sGyo^#iA=`o7q3 z_37r|wHHI76z1pon^5N4(Jr_!)guAsiiCBrM@}d=(=XO;{|pEv?C^DkoPJ5J#5o;B zTA4eh<=J&TCL{vqhjhs8%q>Svnn7uXDENK~zl7L1Tv)7uQO?_KA+b#g>{4yl72X?q z4ril^H_dnvi2L|j;|2Qlh&omwil>9;+@)YOR_jC{N$(M31;YHTYd`Ev*+s6M>#+dN z(dN+MOP=RH?ft9YD3rbQGZjs?GD8|sKCDeTul2WJfAPgr^Lz}-)wd`HzOjLM@8!F_ zU-oLD=LNd#Bi|(WDSRgB+WbrLw(u%PH74DLt3iMAAq2G>T01e7$B z&I>`+RJ7DOMvAVXcUDTA+%Yw^Xs`d3j>z`1MQUB7P z-C_Bs-~U^D2@(j4!#Oe;)={ptzT15Re?Goh83x_YRYWMA>TDRz^v`|%GgeG?7nM~o zXnHORKjCd4Fp>Z1X2VHXarB1yC3I^hnge!uzN9$Tg^Pip8=qK4{mxNbP*gSj-M2Gh z?)snZ$z_?{Lg4%e!q`K6)3H%P&&S>;w2YvYdfTn8Skp1D<7lww`&zUUoMv`Kw6oV< zD5f-#93!RKOtW$c#dRmM=T*SFhfG3LN3cuAD$@4Xj`+B|TQ?0fP?rZ|#v-<6Te%d+ z^Znz#*@PbK;QS1fWANf4;%*78TkXM)ANpguV71~bw^GfCNRdPq1c9x`ea~i#q{j(@ zS@UwYFTB?bJY3^YHnF&RbkCtYgkD8|2j>S7eq>TIWBv4JLN&Ia!|>+I;=rVA0~*FY zy6QmdsTr`#*>;A0%#q`&L7u4a%5>X>pk$Me27!_7bWBsRSF!#lVCzc4ET4tj+2$H7 z&(6G_q#b5YZ3CQ`n!FW1GUr$z^~U-s6}O8J4v+3pf#cW+{0%~6DGwLAAPRA#K+Cn8 zNhxntw7+m^NokF$>njCTop90c!2xi6{Y#pj_oSsaeaK?3q-YEeT+`c{gM0yd z$!hUcAea61e%9M?me5y90^xIo2=edtpy5h`&b~s^uq$ww@oDvsxOx<)8uY3Lp&j{=Bhx58RUEW1-eqztmB3#7WCT&~G-ph{Og>Rm$l;@^WQleZ; za4U<-KZ4Utax!@S1rYMOX`7&dOf-CcsaI|O%^;1(>nyG!uk0TKuh9D=*M1Pd12-Q8Yx{_lP2 zImNC@)%n1eU(L08)?U-oGu^WmL{uI&(Rn#}2)TPV+#R%HPd$BCpcteRYeGBRt;o2$geptc(cT^ zNGg?90?H2k*M_fp`QEo}K0?rqVuJLJdt@~MsmEO_EO$yH4TE-|nAFC3oHtbLQW9jO z3WLK1y>hd$Lk--nBhB|MV0P={z#}#PDpk>I>Nwk&bKLpvpwjllO}!9+u9lE{kNH9& z(}~h!CGdO&pa$>?xZ{?(1G>T@;A6 zIJ@b6+xnj_9)Rs`L)xh@LnsCaH>iRUdpQ5vpl|PJTSjZ-UGrs1i4b%6o2-nk_q6fK zQtrkSJYY57hyNR0Ll)M)!BiZJ^x%(y&;0}K>zDLEt*#=i-oX2_{u!z8w;cm%;3@`S zE()26st$Rtoz2l8Op2Zh)E@CZ%yA+OlREini`Nm&=m0g-Ut7&>wPC4)y^zc7=ueU_ z+P@N=a4&6MdDS1-Cax_-E4yHRm=oqXp`0zrRdozF)33I1tDS<%^}yfu6*B;{glIWQ zPcfPmVRvUJ>3k$DV(FF(mmT;@-P1W!sq#HOP6O7~y>olN9Xn4 zGAh)|K2S`Ei0HBZeF3beT5M5Ew%KogyuAvR#hWH5rRuZHQB4*A7oTmlCSj{tmjkwceH8s(trk`UDd7CCPRe+iTLaCNn zG|6Vqbg&395rsWaV}fQJE+&ahtK@ahm?2*{0&3lxSgq67@|h8wx;M61<*P`l9AVJOY3GbskA8J_AckUZ6IYt6H8%-!S5Nc&@-kjx`36ZL*!nU4YU>5t z!QPmOKe@Fm$J)a;1Ay%odBEU2XpA^jM(A;{ocw{OyaCWZ$3@3aW;}R(Y3 z7M8OdZ*@IZA{Bbt>zlVuH?wC7TR5hI+-`KolGi8OVnla!ynKYAq=_)%SKMPueron3 zTe5m+p$>2&dS%Dala($ilB`-RQ_;T8)cQzNBT{MEy0`mdVux0lY)UgIW-qsGPrmfs z3P-@!n0p=mxk}idP|A<|P!9Blcl=3lmH6EWp)ARp_w+-b=2juqqu7p!SJo zR9eLNSKZ7me-xSeCU6}KNN6`K$F8`9mMrZ5s)^b3w|+Sz!0F{xWx;zn*D7|Rnpg|wa zHXsGgt^j+w%LM)E&2%Ah(p@HWNdlnuVaaJ(#Duo=bPGohVvv{*s7+>>*qwOft5a{# z@RqU90cQfhx`rMFc8aHhmuQ^Kz{c}3P}>K4E0Y7T*e8?~OnB^N1g>BHHSmBB>D7Ze z`KGkNN2}E(`g5yw)*E)lWEaT+a#nzCDSb4Sm97qWJP-Jw{$EN}i%LpA*G`#NBZmb# zzj{g5bk^i6Ao@1;CCf?6&%Bped-t;!lRycEDDxK0+P4<%{)(lW8#TYk(`=uJIvZmL znLpYx>)N`+vLM*<(sGw z%&e$BBE?^>gEI>OmPS9)YtLNY@4dSs-a@|)R`ErD0?%;C8&NBPYtl=EPl$L2)3P6A zkEbrTX?5RWSHzzs1;x{=iG`=b?XMdR@s2S+bc-Xo(_mCEjQ{1UDiV@15;n_DhHtHH z%RK*>f@9D`9d#{g?6ujGcG~GQ{H!fBoPHo>JY}vIP^gl^`oyl8uF~4*1y4bZVvsQQ z8+r!}+K!}eY!=lHSNG$&=74sZ4Qc$Cg0$q9E<|WCQ7W8ohwM=Olq&_>!_H250>=B| zIHUb(HM(2w4=!AQIxz9yUdYQKfp1wRQF9xFCKb&NPI4|35|P-@!oYZphmLdzwbi== zzKx$f!1gRfc@MnJEOOLFk@sZmx1%bGSA@;>>O?McA)m(jq=Vf_Wx$9AeL+se*DS|7 z2b)7h)s)XxO90Q#LrX+k`_9V7O^Cdor+Ntm(!wTU0OJk$5K6;Xyew7jQ|o=-VEHmJ z)P_qvHp3YXG++trcSZU>4Ej$*cHdmZ%7S%l&HCVJ=UDlq_E_)vPXxpyLJi8?y1BgE zN#+Ij@+2D3Zf_l3+PI_vCISumo0!2HGw6(pnerw(25UPB1EN6?r;Kl|J*0874vOhh z@((7-%vl-<(ixnB#e%sxcy!Fm=A)|davSUXH{UXC$Gtq|Nw?F4LKq0b$E21#zY! zurmM3PGfe=6_$*n$A(c_4k0=s;D_~(O&H69NIJ#HXf|ZQCQ!^|rvKXR-bgKXzVF1X zJo?)-T-q$c$DswvoPx)pupg(On1B_m%K9KDc}3w_JAz_Xx_+CJ7?{=flH0msXA1e^7;fcWTDh1F97*$TQ|ju2 zV#J=49Ns<&gC%a9rUIttiTRq<^V4pMp1Zr_L(h!=e#z_AZ>>Zn>Wo?Qr(hfxrD4wl zy${CUZvg&m6~Iu+wqI}EOajUds}nLdJ$rTxVxriZDdzVIG#jGB0XjTI%-_DIXEeHV zpcoO|gKt6U2;24Yj6sac)qc*1xYF55Z)xmA_K9}uBHCXV;M5%U#;=!o&FX-d?JKd4 z`dTvepdxvJO9ui$HA0;Cb{wxsOA2Rf27Fq0-FQfz>UM+Vn++nX0WLCO>*ll`IlMMA zBEISpltFWNdR%?h=gGLA;#wIO~{ z!nkV!eB_wfxU7y!PylV%9JTdNR^E?r1R-BPp>iZ0qrj>NcHf$92Nr(Pw!9NxhB|f% zZIccYs=BqM!Pyxc+(V~iJzD=#;xxm9DQ{oCmA-G%n!u=n|5Hno9qFQvcRs)zic3<- z*!Y13Yjfz&=aSB-ucTCQPVdndjUHL$g(K}C`g>=8wVizebliT}I1fG#M^IIjLewIu zMrupgs4w9iY;PsbuSAK8__ff%>S!)yAxc(Z@ZgaAq_1Ryb@l60}qyuZx6W6n&T#N zx#Bap>eE)f_;;$6ty_5bQOpVR9qJ#37|)6uI8zOZWQFY$AXZf7#L?>-n6Vy^2rJrY z^;AcfkaVH>!d+|&P%$^rK6REHFaTmtf8|&0q|t3rvo`6jtic_vzMJS#EE>~}7~L7Y zy)7=w)pI#{DDEmQu|fqq122uU;*dYWytkW+3pYnc*lB&vGE5y(&{5+!^x`S}?Vr;T z^VYknk3r=32#IEZk+ID|$nK{+HNs{%EXZD*N-{FZLgcnOHBErfONamRi`4NG@#m6h~j=^G33A}i=<^zkZ zV3X39Rcf_G*Cr8e(PRfE^_1&&WU8SX1V?R`j zteDe9wm6CuKPK9yUA_~9#@k)z+GCNSx1uP@DLVK9!Pk~;ZMjifkGQz^EV5rU&k=%# z$feR<3$=p^ezFDKq0H!3k|5{k!giK0Dv4?tq#u1TVvAfJ!hyPC*=U;Je#S>9ieJ@uTPydS9 z?axBA%l14r_S-$8cD~v;>pUdjk-b-Qq<_zLxR`9thgywKh`X7QV-5t*n7Et%zV1Qu zPLvPWAj?6zeA_6|(>3WQvpB&;r|dkEW!|y~7jHID9&9!}BW_zk*+I{jZNZf|t%{ez z&N1__9!l?wiPRGXJju-=zRiuE0iNl7)wgP7V<^{*iErX%{uL@@`(6H%f9&3#x7q~; zimv;8ue%4u05Fs7RK}egOpKq!-3u>Z@Pp*AYqxP%sPfUTN&Ihs38PnbhQyyn_bD3& zqF26i2;=*-ZoJXMsS#zESd_Ima~V_v8DC`b3)l(Y?XmGxwqo zqiWN<`NBKOIeAN1PT1|Ye!L{x;Z1M|++w`4qimta^@fCk%smVGFxTU%FP?(r)=cZm zj~4qrfuoOyAn&ITk2~>?$AupGWSfs$2le<59I<Ch``}MVKp-m3?NOMLO zkAFeo2z_WM(RU7&J-A<>yF_o&7gioR)3ib*(LGXl@XgavR=H3j!3QuH-($VCWm~l` zXAoB@wHogdjztmax~ucv+t4m3qSa*{b1P9mXs0yRK-mKma({orfB6?*VM|;1BZlL+ zR&?Q=>U!gfuu$lRx!@h2Z0XqXwu|_G*ZJR4)zT$_V7Mg;MZN0NfkY&YIrx-APBB9Q z1|i+cE4|UhA)puvzx^UY2K>4P965y|9fzP@ocV9jkw!t7%;4V*n+9C zGMAlMa!guawTTw8)0>kqc4MRS$Bi0Q0-zZAcd85boznFr3>UnB{);cjL9wbu>v3a? zw%|Mq$0oqz#;?Yf?cnr+LGvVioI#c}wJh~B4IH_T z#}b6r1&7w9OD!m7&D=?2wI~J|CHFlg+$urTaIniS_R(N=SAk+e{D}^sRW@!pRaNnBCKFk@2pmL$n?Ebr zwX9^#3=(93Vw4vz%D|QKzIj1KVZiINZaHbpdqm(>p!yxQyo(jfRR+aCuJ6Ml_$Yn8 zq&k$w){@WVcf8WIj@yFa&=p6I+k*wpf53GmN&`1PIG24z%J9uahRlJ?%zN!|rufkM zsg*r-u*IrrR)TQl6%s1+-`7b8b`XkHCJlT0nANz40Z~6iOG|&mn7K-&K93EOLBYJU zRjG7&MizLKLEVypP3~5k;``n0AM3TIf?xi{5jP#uh4T=Duv|psTi#&#z<7nQ5EJY1 z-Qs_J|Cj%8jKF$2F&vRTeit&sTRftQttu+f`SQ(kI%&!zVL$oozw7+3|DaP-^ekL+ zb=c$;eCie&ws5eS5HM>3Z{F8T>3+EU%?FAJ2`Y$&PAaFV8XD1erDcki`kG1=eM3qS zf19Tu)Y=X5IC)nT3`Yg)+2uUCO2bQ%QJZHPuk;$9qb8o#I&{H2u@ID<8>@xkV+eE- zTsT@oe>OB~2YV9nBsee_aE)WcpDbJDpqR+$3@p6v?n$Q!Hxp*t`Eg+^{4;1QgYIdl zE*+ZQaTQQZ;`mZjxGYtFzkw0G7&~g4Xcfgk>cAyeln!L2e&7K}|B;;Ryr`A1z?amq zyU~Cwx;Ix8lqTq_<23c7C+~760a-$JRJ@mcc2hMm6Qmp!e`+IWXB{`Nd|4x(P)TbQG+}l&!*bR+#^nOIX>Dv zMgF*EQ~ZQKV~Su+FXXM@csRlha(jRDJZp;~Tm&`4Hrtl4X16 zr6??@zUkn6!!Qf`sEP<*yJi}3bmPSio%ngn*?#ND8DGp)4(L1oC{@kpEc$+96rM?` zV9vdf5CKLCKz-)SlLpeV(o`iRT&c74OZ=PsjK=aVtdmf)iMziQr=PO{7UuxWfumK8%ywy4QCS>myH|fR-J_KB z%V6k{=w*pigU19;>cDo1i5?C493OvSMGI5dvwa56(g2OQfM7vpkE-u?0Y6`ITz`|F zpFedy)8Ele;_57_7wxbAEyHWi~4C{?7yJ(T5E)tPkZc-we@uYG!Tx zKH=jgT|ug+@p9c)5vHOcpOMVQ=NUGxzb^lp>1qj+{#_!!zi~zrbwv1$AjrcInULuX z?0N)&%+HkYW%oQyiDf#TS?Nv78V=@utT|91S7WKu^N!O4*O_LFNNIBh{U*Q9D}NdB zrn^B5?URNvpa6fbSABCfI4?YYuXoL7UcMH;01cjZLA2u23I)fd`9-U$#~S2nIggaq z>+n6{@5}mv`wK2tU)J*WhRCUkrrJaAi2xKxN>Fw(?z~nkNMe7&mu947SS3-x+iPFI zA@vtEc}DjhZ%%?-$rtZZxB8Q}xuEWtK%3vRT0~yKs29nwQ z@cOVJRVKGxv*=RLa{-_H{B5a7F-2$JZLzGq^zE-_{a>#qh7?C=Pl_y_Ci`k{`%RIe z0~?`XvfLk7mkNlaRpa=KIRi^FfS|Aav2MxaW%2=nyP3{g$v~~JlREpIgmdt&Tz`yu zs*nRvGp+M;9Dm@V{n-eeQ}^R05UBNGrY0ZnE{$?-Q#bG>ivO+o9;LuAt2fI8gd4)= zm(acZ%g&c}y8w-L9i|TTA)%{-3mwiDpymoMyS^96ex#10+aAJGZ35Jm?j*a<4&ICw z$|73qTC@Yh1|YS7rD5Sdq#Z0N0O8nh2@ak1C^C{L?OQK>f>+K$fc3l@^NjdPV4dTj&NzO1pdGM)ngz}$RLjP|JGp%lw5^Jqn#6%s0m2MdjvXk3r=6OPbCPH9vueJ&q6fs;aYW0AifTfSL&f3r%6d47q4* zl|ZXZ^xwf_`L$+_bhobXlsVJIuf$&o*iLRgwDFU**@0nmnW+f}@d8kL`#C;I7h9@D zdJ4e?iuB9}s9gY#(BW(&U@QPC*DY2=e0cw3N4aa$fiI{e3Kfl$4}+yYdrtQX zXzS(g|D{xgmN#iR)D-?kVljzy1}pFrBpu4*Nf(!FzQjX>sIk~W>YrC z|8Ob&{E#uZLnt)d9*#{X&si0ez)?SVwX6DezyzOL`_ayQ9_Q3DrB9P7@x4zPl3QM1 zfW-9#!J>#!UN6REXd=O;X`e8>-#ab22(@> zX}rNGw%YhOHkHz6vi@8rehlUVC-%b-M}6fXTq9q~xP#rnj&nm`pF{XfvSF~Uw1%GebXZmbxv=cc zoJ??ALGOS&;uCV?pCql0{n~9+Vd|hCPA;)!pBL!oE!!}O4?hoy_m~KWcM444a3;lo zagHdui1lQ6x>Y@*i2Sa4U-`ak zD$Hmos;(sP*v@JJzPGxH-KqjVAIcs*T)Kbm248nyQkBFr{s`Y}I$HX}bEfc#eKNF3 zHm8iG54gjg+~#`76!O#O|J>qVTcTfZ-e`s>Re_`aB)Kur&Lxr1$vHtmFy9vVJIgVX z@7Dgi&i`(Sb|_+kPV{Lj?#`3d@?j4w6kRkh72)|9F)b%EI;fa3K`}{pBx>g}+!!NM z7RH+o-q}#B7yI1i4>q$6aO)ngiqsZgsRs(IZFXnaKxBC>|GqOeL~@t^!r>U@dhn|I>EDGEjDEh*UoNU}!nb z*q}s6L=r2nes3@mK0|DXPofp%ykqVJ#gIUvw$Cl93_?Q_9ej*8K;Mi|Ohnmi9?hg@ zAvYPE2n5BXd=t-QXKa1{rtovqj{De{x9qU4+I%LMyf(?M@$&U5C?>DdK&PgeW%Mzx z{IFyW{gJwcIsLM^2vwD>HDdO&Z2>3-Q0ZU``xf1Jo%g`js#5|kU}Pn4piTB53E5`$ zZdDBA^I4B9jcZT73MmQGewR(|JDd4wC~ieS2+(P+z+Dj_VFb!fLeLY;H?=!KdYh1w z&`OtBqDZ&FmIIr7T0Ps-$P7ndsC)HHQv*YX`K8CRczL4rE?ghLzD4LxJpP~yIvHD~ z%B?@|dSQT5a~R>0EE<```!_^?L~ue6)<21UedqVkLE9mHX9)uE{g z{I9{qC-iTPz#PD`px)~k!qS%l0pd?ry#fs39JpjHkqIh)eib$558-{-kilrzU2qYvA`!wLSWIdB%> z-ocJ$MpXwFPiaWY=kmNVG|}OX5G``AqI?LqVNQsGb(T?slu3(}vT>MZ zqp_l*C~oM#RZYq&A&NV8cS@#*ZF^Shs3?T}zPfTVC>E~N`h#OMh(|JjSQv)+Z~e4;-t|!c8B{4 zUF#LIb)x2Cmbr1?$Iosv^CotN+kQkS3?@Ammy|+<7P!(ToSr0G#m(A0_HC;y}BGqt(qLhPTC-FRBaj6p|= z?d>Bp#m%uz8M6_hKCCde;O&VvE9@lh8^i?%8+kB_7nNmjc1H~vT^A8z#K-mS%Eqh9 z8a|O2g@`%K5yhT$I75*ixQsuESedo80O$LA833<-otXO=loVBA?P?Zm8(jo zA5DJ+_>H5!Cq;nIo^-9nT%`>f#b2;5sq4C^~*o0K_h z{Q~*qhSdl|`D(CXB69**Us+vvS(3e1eb3$Id6e2p?K^4=Qw;2UBSI_wq+1YTQ}iZ{ zIUaD9?d@}tCNu$1z;|)QEAK49h^(l@JfcNTBsYJ4Kj`lgw`Cj~yp`^tjr4+8cm``l zpG|B@XsxoGe(qP%+;V?*zXSeLJCydFswbIfiq*IeIfN0BnJdkPR)}f-$`}n*E zN9HYK>9D5mW7?>ptcs70@&u^mfr*f7%!<_{S-=}^eip|DlS~Vw8(80K= z^ok=PkOaBUK+mqXt}oZN={a(~&Wu7*>(FEOmOg1&_YYJD%;+BdpL_h@n9Lt?levBI zX?yt=lI=)*GXvT(JKT>)JFfp!TQ9*67i22Xzn`ptGg-EhjAQfUX}eS8wlG^jTB#DL zor%%!b7($rU;1kPHrr8D4|0VqrKl45L3D0b0o^A$56;HUD>tRxWJ$PT0g7pjpoVy3 zImM@`T8HS@0bd4Fjfo#lOZtA<(%ENQF@qlzLmS-bhd?ykGgTsd|2q~i2D8n=a*+_% zu3)}MBYW0<0*b-!XrAM;=lnpKr3T3d6)${|MxLyki0PhyZ`aB2Ie`rnlMFVo*O4>| zp^SoZuV!YWkY=}c0mZjOPJ%(@&9`<5^2p-D$pIw>T9!5bRgts+z$#gO3RMn@wDzmQ z7w!YUvvWdFc1o{~;1ruXH{(Z9m|!nf?u;47c7B>#e65nr?(QNHy?9}OaS!7J?<6yP zlI;@fJ(if0xikrVtFbRyQH|YHnUbQ_1zfVw;0)Vc>VfK)e(;bg>)Y9LUgQw5-wPu} zzV70&WXYl(Mq{4#q-I`AWkE|yP&Y`Y-D6wzKKl%4<`h9`LVV^_orfCf#q7`3R7Rd_ z8~Vmth*`^P%E2zfd$ZnvKWnabJdh~qDJyF^X#JnHOm3as!QXx0ZJe=A!Q+5il5PMd z4F8UafB6@`*0hAMJ=q79n_mB>gyn;|E>&i*K5s%*uwy_)i6Ail@@j11CSaeEDF$~4 z*nhjXh1993Ss?3oRG&b6GlaH@elrjSis4tu;3A={o=&p)PFfn=+W8C_lZo{1qq6bN zZ4-jx7XwgCucq8v;-Yw^8_wE6Yzi$sal7TB84qR5jE=~6E$p4Ppcqm`jp5E;tjyk1 z3DUF{6yqT(-FXrSEe7z`#X(NKP{g2^6?X`h57C&U#R};u)^KX|)~jq!SVM=?TGU)9 zzlB#fK{1BGL8tJ#`C4Xm+xMAybW_f_rReH?58ofzXWnB;w0VJImOrv6O=sb5!)MFJ z8+PqP@5uG${@BrJ)BK7T>7jR~35uy^f{!eA_1eiDLfc+wnd5D_B9!J;Wgav*P}^gG zCI>nHbqR0QW4D0Gy4KBq52C#MB4F{@3uRQkoU301WxmcL1j>%#4_+}wl{Lv;{iwm) zYYfYbU@sXhn!fq$FZatzp?sX67@<$qeIq`I`Rl4$KZoCBbZ{Ss`>D&P&rWDA$xrV6 z201Uu&Yep52dyM&>h$Lg%-)3vE<|2u(#zapE2rO{sv385f}7>n&56FO7r3dk^N#W0hBVyf z2@I~!T0%O(9aXV&)Q|DNGW{~wI;xX+_-(337VP`fqovM7S6WHKP_mBSwB__rpeaZr z&KMIMsgrIhmpyYKxA))u{>y(Jp$6(g5mxt7Pn7eg+(K$Ar5WgRO$oUHT0&Z|-W>=3 zUFUyeKvg`&l+i;3+vNbN#gi5Qj~h|@GwPQjfg-$lp0CS9zMz=hEQw4;0mj;-U6Ru7 zc%%IH3v%Bi4MUQ>dfl}qp7yCgF&rv!OgD8GehVs5*h{5gy35Z@sLVMY#~r)~>6p%F zAomwZR?2agsrOTn#i)9;bLF)d!Vd=h+=5>g8jIRi@>fYg**WGw>IuXp&$YJ3a3H3= zLU8t-2Rk{C)%1;{zBnS00C|j{f3aGElf_dXT8hL{qu|rCR*#=Tp`{_F=Cg`_V0B$pMSx$TlLxP zd3;s5k0tcUtFo%`X>u&T9YHd1f$r^ZBz zIqSMOPE<}lew%pemG@Z12Wf}Mng&n9V7t=4KzE5&=D^;4Kxh0N#do%w);L?JWLMzP z%YT%rf*Z7lrLNByOWtDPO(`oXz7POr%`wQ>Uyo)tV)T^bHF{rxnzNB5xOd;hLkKKj zrcPh29jF1uGbCZD0~_dRjW8n}qXdB(tI2O}*!tE12g-<1$cDG$KyApVI}%Bxz}gED z28WBGv>T`?VmamY^nQiUbJWAFGI`DgYL|Gw#JAqLvf`@*P<`3wG6iaHRQmfyQHoWj zYOzTM#m0aKDFNmFZ(?rU+QUqmx?Q*YH^qQjRz4}b3guvaJWBlxZSv3GK#gNWN$$&U zhh}2f&C0#X;dr1{Y6o|^1o?;kdhPH$7DxYYw!iM2&-3Q8{fySr$tCH4%Kk6wDL^-w z*8cMG)<#M3U+H>4O@=5b)I~R@bz}a9vk4s>_eJ|xq7!7PD$`Kx#}Y~y)8d180_EDl zDVW^b&{!Rgc`M{9qEc??o0sdp8o7jRWOTRXk7?K;wbK6hC*E=u$vo{-6F*_XEc{!v ztAK}QUNMnIMhhCB($q(!71w{E>rMbV|`;gJP0yjKDr5C#eb*mbJw;2t#4_&>chCVb8?TOM?tH@3kRF!}+b(*ONdRSjC3**l~X z7>DwzDBEm?Fs5x>MiG)nB?N7cMpAW-}Dp+(#V zA5OV_d7F*XhQJ4?otj&9%QCFXeB@}01v{rC18U22zrIp79g?&6&7vg;S*!uI>g)J; z6OXd7zWp1`WsI0}peCGme<;ipq4it2umV#GmH?>PS5$?LZK^DnE0lQ#53UXZwLha^ z^C@1#sBJ+hROWPF&wyG>j}&p+cbd9NruNRe`$1q06!4xa5RKm?w|b@U=&rXn>Td<& ztBepTR+C4dn zpn-Hg;9^6P-3MTWLuQM)x(dr*_g~>k1y)dAF*;9`_RFplH3I#!S-tk8IDv;{8HI{q zln;e}JmdS-L2kM9taV9B1vY=@nAG@wX0Pkz+4>vGaQ1!T;VP z)oE*G>5h=(KH;YI1~yuZf;kIP%sNKUOi6z_vET=4Z)${h4E8eBteDGF6~=16q31$ReTpqU6$xMU`(VR)N}vJ^0NbfPpxypHy^k}|_rB#K zEDi!{`v<+5wF@6(_)moBv>-@^(`RY(*fm+*xT$>KL#v(ew@GU(lt^iop0yIea%U~D(0;N<2bpykAmYt$bFEM|0-O6CX`TloGFe1zqUGQjJI{SLTy@M%ksHXi0M1$ zwJc`CPWZtfkCSU`dn?fu)JZrS`k$#J&bqI<`W`O&;+0=Q*zZ_yyz;F0_AT{Ej~B0I z1b>wLv`Vmn|E?4)0PP6@54*j3D4X-mxz8{gBf4FaLvxBSLuzk-PxM;lyu&OHDjA#x zNk4aC^iL?7`;9EMBThtNm%2F_z%x%+!b^Y6J%kmiao9Qp_PkMAA$WF1S*3ptFCj04 zJjpDEmpiJT0OL=nB2lre%ZgFIWBzlyjE2RVz*rel(xIL71?sT4#oibvl5Q^xlisS! zKrmgO!#b21st^d=f%`}EZ}A4P25ZUdKhSdV%6H|Yo2HBpWz)5{7QUj1-ZIRSy$RZh zH7%Wod_!hW=-b0BSz(_IohuzuC@-32s04xiQ7$W z?v0si5nkIV!H;0)z>TOm$H9aaMOSCRHP#{UA6%1*4XgYT;wCnNg1Ejaxh2|v0@4#tzzjNzBJ9h zgK0+BBa_uuUFdv6UDaa{0+wk*N(b2;7<(1Ui7zWQ^Dw&G_(tH;isG!&`a+^aXJX;Y z#J+s6dcW=%cCv4*N7%umsMwtQxd{Jm&C17Y36(@-Q}Z|si4zCp`3=udB+Yaaz+l^(Eb1-heHn@YCq~C(sg}@|Bsf%Uk#JIwFC3fLo zo(N%1pUl`81gbbMhQzhg8=M3#XyW6K=lrQ#^0oTUE&jD78p0yQyiK5ni5Nw>n=!{z z+ofW#9NobCZnz}LB8aX6@)Vjd9gq3-)nx3*wCo38{u^haJ|RyJ?8c#M2t46ws}QFD zZ2#{zsx(h!D-P?&N6N&X=tc$Z9jS!HigFeNL};q_*BPa7z+)n>+}IgCf_eW^rt*=r zHWzDOlx#KNs4%S?1|gWw7UFd;fhyB+^$xgze`V*^Ocz6<94v== zdP_xmVtFy~W7o5}ziR&V()t6O9V^QVbet;hM)(HOLO%>nHVC=2{Gd0s|?%Ph+zMZy5-RqVS<8O{7hz)!=FC8-eK$pIw*me-y?vv7(xvV>s8(-+J ztFVBm#V_uJK)<}~AF=F1RH6uv_}TLg<5G1nQ>e089!JIZ)EA*)@UDo_di<^|g;hA= z*jST*JVtVt|&VESFB zwbOPyBwOL0di=0^*vbK6SE)|mekyWnL?WBc+U{FhT}_f@-7FKV8Cs=;lOZ;N5qPd^ z`;h+m?*n#?J(H!=NP~nf_-$Tl94N(R!gWjwrp;L1Q9r&W!;4%Gf2%Mf{Wb+8#QthNVu=z4Kv9s2vg1I)%HgN98 zIAjIz!O%6@snmgOw_27{dXIAH0AWWs_|E|po|!eYO>HUV+qL4P9-&50Yd74YFuMfT z$%de-2-MDH>*dK2vDW4=r9_aDqFLcsPDlog!Q;1u z7!y!u(L)}yOvqam911)Wf3pTTTgXTtLC{@4w}9zvW54&WE=koElz`6<5JqE`bZ{Hn z(n&V`Oy6|blVPFQZJ>1-DyTB`i(~c+Bn@<3y|CTERS$M*K~Ic1S+n}Rv*PTfBL=ki z#HZbu$o@Sh-#s@!aJ#a0!F@zFO73qm1#2Tm;%D}3?K9ACR&ox;YR!ua+;6y`dYo4v zLv1s8Hk%c06l6b!d|!Z9lzQ7othBsr5Az^2x?6k~S6_q_fBk-Al_sZ4sEBF80GpjE z=X!8n%`x8S3tZcP+`Nk{ZV{@$nEU`R~!9DBUl6-adF= zSZqg0DpIi+QO@1Dp~3L~N}*m+A-7|uaKgZ}`DCIyR2qd~veCgZ0`~{-mbcUU7F~YJ z<+7LT3=^Ek|DLAGyl;_OqXNEYD>yf@)b^uYxh*EaO(onu>K}e`S4>)p!@lDD_N!^u zjn!Y6TyY5j#Z&J;Y-IXAHDjm~=fNY8S z5zF#3#2Ny5Przb@JWQk0^dwh;BR!O&KjIs+*==+f3?XLBr$48j zxdK+`9(Le6i0bwW8D9#dva;=`+Z6trr~Vc9MtyDw3quM?8hcq?aoU?^m6xKvvu@#I zQRmP;7%TOIObm!u$R+{3+!6GIXB zTV%0U;tEfmJ-wSa7~V)VP1qBjyAMD83CwPY>p(H^JUtG58G-QfS=`*RE&Gs|oiLegkP!1M&2c-(v@7(Mz{I(h+_mYL&8+=l56|c>A*}pL zMg9%JWMZ2lG|07#R#gQ)=}9O<`FjSHg=DnzI480X$K&JU(xh(1N7)Ugp!zl(*jFb$ z#>=ccHwJg%G>4upy-K7J8^ z&Kq563ufdOs(-NqjC&Yy`2yE^bxCnYaXPm4a+q}siag_FjJp@BWYi3GnS~oHyOAXqP&|Nd^Hfa)2Pxv4{?v@L%-MRnzs_1TW(bZHTqWNRLQn693(98fEoOXyt;`e zqqEq)j%<6jvM<2kB~F;9Mq);J`dRyR)-fmo`uMQCA9d5bUMljmmwyjp?_u{FQP2uw zmZJ?G^35$8Hse?9U;Ui6+Z!)m68-;=qks9Aq>WN+J1(WBM&xrW0Je+Z#|1xX_jq^g z-kHYc?E!tuf7kinaetdmal>b4{03V4k6)fiTA zZn6(k&ZsAsD>L2GgSnGFZ=lEaPo-HT5}ha&8Z-mN1lYrQp*=8N*-5k!u5RUesD^|W z2!xfbRBALjus;X^x4^IL)EFrsd(>gNbjF?;baCBzH`gEy)~g86AO%1*3>I5DkDMUFrAh9~3*7u=Kh~saL?Zp-f)XL!_!!K+^llz%khD@_qEZLlg7GH9A56#jkY#uK3Hj{zC z*sgnVw$GxTEmt_tm1bGfMeva<3O(-Y+28I2NQ~q?TO^h~e)olgHnb9#^EMqf-Ei8q zN&925$8Ddvn{8Y|zbCZw!Jgr^DWXe2PTd$$Hn9T9)uKeI)Yb`t`@j4Bm;Y3$v0P<~ zNXg>=aBI)A`^^Ujk)Ol;Tqkq3_UyxMtG@f+b^h0XI?=3Ret}c4^dc@!&j45%v%C-* zpk!Bqw$SXh_xoM`kMI63^ESe*O@0V}TtkHUhM&_sBFqT;aeC7a)nVzaEP=T$5hy!P z6`m4eJ2cq}=YhB!TS4nj2+zz|mtiw!Ll}E2es4HHF%Z*Cg&ScWOGPwq!O~&9i(7`n zwZGUV@O)u@6blff0U6VN3#eseROzXgQf%%2)Mh-L4ZN(9><*7WFhW>flYIuxnXi0d zujeL6_sZ`{rk?9llZTE2rX8ZjlGY$t8pCs)`m6voD5el8YXwCWFHlO1agT|i_P47? zP^TxFlnvQNFBU9u;S4AyC_#TMKE{3imbl9AGl9~jK9c=B?`lD?zT?t05+@VLzI`+j z9rB_6W(7MrgHwT;!z)G(;zw!m9YM`EhCh9Yp5xuO1(UO-DaS?=b0eR^0fNt< zm`V7b61eT%yO1y{@$||77%7s|xA(YbJdvw@oc_zmTQAH%N>y9qNhX-EW1&WN0qm$>Z2W z9z((z%ZX7TqMlF-n(n*DIpr*@YXHj}65zW!F zz4L~`MgpkuX>ELT61;$<`o#dn@5he-)F{H?L@s3Da1$t0%%YX>fipHhB_!EfY48q~ zXjM;)mEhywB&qm<(Yx(8K{-Kt<&=Rv6K%kD`-y^4Jwiw2lvyo>Qujg$K&>-tRfZXM zhp0X7E0fB%|L@=KfVnL1std&z>b4Q&`PEDVvkidN&8l(oBB~2yz^9{-;j<8+#!~XV zi=@4ewIpzWTXxTE;6?jaq7&|=&8sIZL}2YSiT>UUEZ&a7vcWBPv*UVpcq})6&yIft$o0RBhQsm#(R?cz5NOrz6}#_&hIEhJv^Wo)FQQUEZ9`xK#pO; z4r=(rDoOzJxWD4P zJB&avwp9v}p56pFIN=!%AMfNNPzpmr-BLq?8J4KG)_KP7Kru5BkF!5vrsoN+gB=@@ zmDaYyF0oWFEa*?F%_+9oAA!}7SHBzCy{16@J6{PCvmTPuB(n~kj9(AnJm%Qw5r}^{ z$~`MVF;knH+650E`|W74YB1n0);g&WVb*RRO@67dc6=@N16Fok+4;z>Zgy)+usK)j z!z3bh)ki__p8EOgGpSF+Sfv0`%HKrz3-^DQs>p3cy^O16h$)s(hV|(@J6{?ATG39g z3Y+MoUfvrH4>Vw00BU?f{?kuFL_W$PTjp(~x%xmYbRaZKf{96gY&{Z!uoX5EsGU?E z$QmunelFD9_{<$xDGk)%Zi8HClb|^Zb5@W<(2kaXn)o+6INbepRjg7t6LkyPQlQpt zaWeJtZWq#%X1DdwMi_7#0r>e?N&akr*ki;ol{SpRI|kI|AsG3GBxxCp!z3vWWNpZS z+NLQK@iuwv{m;wlAIRz2vOvwdG(WOeW5%@I%Q^p;MjQsHi8HH}@!>z5EhR=+OWGD# z1GUbS!-0eBGBmV-+S!`;HsAvRxK%V$ew(Nfqo(5Xc%F{|It}3YG2QW-C^^}}C(b7T zRRPdR{^dweFKu2usOLWR_i=s(?O z1_MJ0ozvHY-9Ry5Xnsm`vCU3-{4h{+Eyj;>4P>{(&3)u%g*bte;H&#N{QxPL zx|bFQ1{v$?uH(yK5IyMq#>JBmqwGXxV7UM9@A<<0-vf_KNez0M#qWCdfvGFz|Hs~2 z1;x2U{oXLRy9S5g3GVI^+#$HTB|va@3j_%61a}DT?(PuW-6hD!0T{s^-SY<1NXB4L~8gubypvJU2*mg`a78zK<%kQJ6f+_#`$fn%LMqf z4e*5m@&@)#xOsve5#N)t2%wMuNmcQjwxg|ekwL4i;wf_sztIPlBT+qjVhojGmv({t zz=(4g2h_k0fh~CACAl%yvnKOP8mO%m6I4OZl`CGn2te5s&Y}V}PQqH^ryUJ)N-u+P zRc;1lp!SWR@=D*G@~6#!P>ipODn3x76wYSnnV9>qqvxy9%n>E#g47(+51*qT_HN_L(`^gcW$tjunru{=p-IP zeN$vU399@Yo+XW*LG;8f;w6idXHn~EdytvYju%9@_iy4>4c0+MN zE3$*YS$FbFhC^nM0;#jq!vVVtk%@;>*5(awnRSHeW^llQ&^XHS5P-B z>g_Hi@yBfv)a7SOdRjnN-r6*kFRJ!XaOQDhTTP`V} z&nKTVicdnq-%Wjo@_4?)n{+of5q9Vgcf2a8sc&;9Mj`OI{<$@w+>ZiI_!Yc~G}Slu zt8plK#fRTh{22omor?Xs`eR<(#FUWsi!uSwgT$nm3YK*|%`an9T-Q(z<^np>+q&i?>W!SP6`5(9VuPu=TjIE`Y>y)^XL3}zs zJ>iPHfh80ns;OPI@cBu4}{n z3V#ZH2)B;!1;i~T1*bvri}*269pSzO#mvlkFZZS(K^#b6%mKz=HQkNT z)a>~WL538>@I_UzaJSM~zNwbVUiFP8EguG{+oEI!jpmG-vP^5)>g(UAA-qN0)yiRWf&cjn@(4Hw|Md>8AmU|P4`Y&Pf*pQ9_VUGzQ|6vCZ$YT) zXR?@?hs02TVvq>B!iu{MF*CPS16b~bI-$lt2(VYB)=!-gsfjy5q34fXZtsR9L#TVb7nV7t;wk~EY~Nh@vJ!S|do_<+;0H@6>4SK%HTl6H^ra&* z5^uIme!hgXoQ_|}$Lb`HFU1+nF2fPV?jhx31hmk7$k@m-6F4pc6u0_p;o0V%8ZgC9 z5A|x%v6<4}23V}y6>8%l$TEhBd^%;$+6Z8dPi$fuPAIUnd>4rg-hn|pOMOwMrL#*~ zi~jn1^$`)ymew()=I1rWYe4sGEXuLv^zJY`One8MDr>}WB=@+tI)j1&>iw>+3n?M{ z02cY|!(~`DeE%AbyBaFORYlK6Kc<}mK*0M&9!fa5w_VL7x98E=R@x1#gOb*&TCsMv zbf##kS#`zEblATkB!=4a?&;arLb?dg61hX)R%C&rDSGqm;?GRFgAq}?cq*x;>pf!> zYxs<(eNhs_;849hWBkfK)J^py(R_M{${{*=%;I9*FN6*hfUB21k}d-j!L(I$&+T>Y zYW&vhDuywY5Rr|uoR#B1qPgoAjQ20^Gm^If*1oE>PxpCM`nL`Wp9mN}h+RjB&-5>` zcv7>c@HTQ__m&FL;CxiHMaW9G%Q&cC8uT#9V%-wDY2$jz2N(Q-xvuIGypsw?{F&}u ziMMfwx%m`~F_HyDUmOPU>%WJ4|C)z@|4dT_c__N(q4<1}K+*OHx1u0zx*j4jVS0#8 zV!ccPyPD#pHQKo*<{(~5wvHnJqZD${n@Dh8SM~eLx?-S!;$x!1GoAFF8Z3%9<`8|lHX=au15sDurPZj1+<)xNy32jO_cM{S@S3l%w@{>PG zDUKsW(!bv@7JS@s912j?bGa6Lk1n;bQMl38B%l}06L5w}RnTRq;=148y&)W$H4ewYzi@) z{7hwoMOMo8nBlEEZf!^ORq)s!tVw#_xZLYXf4SY+R%G4Er-2B^M;1IzW@f9<6D_0d z4zF&HhC&`Zn=DlX%La(e9+m5^uAfo9j6=M?5ZK_?+skgqg!A`wx>a8N8N8NrH|seV ztOqE?NV}A(U>Mn2y1Jrba5~Utn*7a5!21@>yI#hZQE3<%u4x-J1Xk;JVkqL=06ABp zN5uyQ+bT3SnP1Er>~)v7Efetx2VR#P6xAr9_q0t^8)tb%{*^>{DGC=X4lM&mFo>fRvD$-bt#WCii!6r{io9lid zH|?>c82$WDJ^!BfSY!{TYnAvHgiR9UDclRR_a0sr>uL^n74hz)Y{FE4%kIC%{7)%C z)!nPiN**Ln8bT-3^R>{$Gx>3dhSE=qnWM&lFQAyYy+|rV4J-))YOVgqy0LqFl=|;$ zyMdEcOa<1HX#Fvun3j=hvD96R)*N>I$RVg7Uq zJIv584&_fQqMIxMt|sp~iOuJokJLFobplKy&c^2G2| z(S}h`GBE9jO4*lzn@&uU=hm~Uq5P*{?K;hjpcn&_4fQxTW5-X)cdc(xgg>fJ7rlc& z9~(2+YUp=K;L-)f6xSl~;}#>@YW${aEw}WSL8@sH=;j1xF<)|}AQG7Y*{07TKG&TC zYY9JEXzFEMl1Ch-5hLx;Az#wX6$+e1-?)LYqrfvq>U-vTMVnTIb4zy3Q*6z~e(KiJ z5eu#GVbE1fm9Y^VNTs-amCYUfuprAnU*U>thJjk3)_KbPD;DpAnGw>AbpmufIM_{cUDQ zkK&Ta0W$nsS;}3y%$q<@`Cg0*m0D~vRelh_r2Xi#{ZR`_sA8uJ)O+2@&Pi&TOkC;1 za@8FOuuO~MRGDXzJ98tSu?%BPF(;rQRX#cSDfu>nI8f4zg(bm!L5hlB^&6TJHDN8{1?qX%92 zsa07)?iY=e3paI8Ou(kOmt817^P#=NI_^jToXc(ix9;hEbpbo4Nh@5;6evbDQZSm@ zuYoAvt>1)eyp@hUKMwW+b@8(Kgk?b)Aq^M=|LfU)MkNz!ie^*sgqIsqs*a2Qpgfll zE;>e$t!-vRQzk2VWq|8S)KfU(H=m`2qHh!1h!d&Ja&75fZ^iRZG-fhHf50b>SnfRC z`cC}dDZ}#t^Lfw$7IwmF*=p>W>V#|-4ID>qN%3(FT=)BwfQol7Zyw~d9)^}bkMH*RU9e@(AK;O$%8G?cID$ zZt-q8z8|66k|ha!uf-(LWR-CynmA_UxH$2;?-!8 zQL0>!pHORCez%B4_3^65%U(#S4zsP>+7yz2Viclq(nhAvg7cCtb-WnPOvoxuCM-Xe zZUikpsCcAicz|NEum^}XJ<@qIXcOinH0q;c$yMKz+u8_ZRZ?ZWqe6T|{_dk?f<0*L z+DRE7<|A#DoPq(f0FM?`?DFA=+j~qw1R63>%+gMVR34#a)D*{F?DFCzR1>4x#V2y{ zcl+Q;=gn>-z{JO2zJS9t6@yhDVWk9Fh@)KlX&yN=Rv!{saPjNw>F0&SwPjF@upv}J zDh|J8`>Ncfd|$7%@PT=!WjR~UWj)46R}QX@SLQ!bRiVPZV@=3nAwojosU|EjH?IU> z_!jLX1oPOt=)mzs(pBqE!q|g(H(svDxS%@0hlcEA2H5g|Z)kuoy2Rz_^#z8T(v~g2 zHx6)2K@c{q`$D)SqjvW&xDGtr0N{acN~GRtcu6jfmN6V2VE}4BuozAX#cerN2=H}y zAHsnnK7i24MvR=k;=%}_r)(I9uMDVtZFY0Uy@nJcIeRXfh4BS?5Wroe>Jz;4P<(AN zl%;uYoC8qHqhOMXXxbk?e!_m|_l6U=iv?&ECcbAM(mQ2Dn)kGy(69OV_t;`OCV0`t{fX?UyI6~ zK?lWbwdVQm97Qv*?|JN z8mm5vk(7O@unTxx=&%taLTXu=S1bGsV;*!6+O&OK+5_s@I<4hAnP-F|=i^egwjXAD@U9lm^ViZ%1^suXp&C9xoYt_d6J_(=!YSvv{WVTMIZPVjfU-yqI?OwJ2 zawMqNGJiRe&X$%x4P$eC#b#2<>VDf|F zL84)epctJxBB4<@Va~-cD0$xtKf!oWuwR?x+Vnyr&$>^3uYcSH;`>~7Vz8jMs0@5F z_9vET+RUpk*M43{-|I+r=<(_PZtMHX0GC7md&k55MSfX!ZKiAMY=KXrUN!(MWTuxr zZXsE-v+-F{^vHp@2B>M%AOjeaCSb`_BNz_EL;uvbJ+hc%NxmmbPLZp49AD=Mtk3#fV~0Ser79{F4;^p8)e5L7 zpMoYi9jAOHkql7zr zI&eGlpB)d_>Hg|?9a^&&)2VbZ*XY{!6+MX(5#YsSWxU}Z+{ehJ&|qQzUs6>_#pcHe z%$0P}d2K9FBq3Mr+l_m3_w5a7I6sf_#YX*4ba=QM(4%);9~3#8l?T+McJ39`;Tcx9%k9ZM+Q zBH296<^}}iLpHkb&!XI_nP2hjSp<62X6&YWyd$aYuA>$BGE15&cwN#PH8E&PM+fL} zU~ALXA&xhuqr5@Miq%fvQPUoSA&Bz2@C`=F)|r1{*)6k+ZZhX;H1iD1Xe-J)g1d=! zjO!P5{z^WLq%sH*`-m~+9ucu*dhfm}>;0v)L%F@3sM{mnr>jU{be^2Szt$E8Swo;X2W6P`4L{Yol%2O#M z<06k|pC0eUA2xzrAAN<)o)3$^Bpul|RZJI~r68Du^y#%~<$^M9ee_L~V*6{8JuEL|%T>KMMJlVlUmA}nB8(*@WfD2< zoh^I~tE>7?cay6MHFYDqAnl2I1c`baa;d4FtAm1o@Q z!igaVKIS{oT-}_=>6Dq=sGqz&FLdqH)UeWt(6I}DBkh~uZn7v5OrYLw;4H)zp2>&M z;qB0m;sA*G?)NhLZFNFWBu2aND*YVdOn5D7lKj{~^+)Yu;U}o`ufvTA4L)_>ehN!V zlV!+$`^PQ*YfF?8DJDjLWHWc=(V0Ou0f{#>dh)&alp4+`tl@`>R5Hkk{>r9)*TC&O zhK;*u^DTP1x-6uoB!Ih@$KX4vU-dAP-#@nhy^Sg{=4HEgepjJd3PaaWa<%uK=d+)| z$!2Do;5%uD$I;$el!)gkXxtw6?P$yBp!ebetBDYg9F7P;H;w_7d0#NEcN#aytUxLVFZG0PPx>sCyHeq982Mu#8m4DTUA4OMM}u|P3LmJrG_HvNReHB1FI6q|zq#I#o9!!AOn;ReMm}U>kx+n zL2bwLF$SVF6j00|Ss{^~(rfg6o%Zm?6b*J9>?l~_nM%zHK6iTrjOsHeMp#1elyv5U z`=geGz*El~pKYPZsc>9`c6vo?YrbRcVD4%o_2%n-4u(+M@MM0~B_a57BK*?G(K=ekLO$HJKy%DYAxo zeF>Ro(a&mojttPENp`hdClui3C~`GMUn?;|WO&qJ<~uyhvO-WDNyetVt2W|q%*Ym# z;O=IT(h9rF`|gw;wJgP!7-^(y9#zv$OipX|dZW*BRv8^@W1-2ptanLoYvMwq*w)pc zLJ%+2D5Xs+L=}#9dOk5u>dZcY0%d7I_~baJ9Ds+cf%|tphg?Va+-d={>z*Q+>HHd# z5@7{DE8mjj^^~vHq7+6#3UpF{ZQn}$rrB)7k9S>Mj_{0c54;9oX0pbTTffsCK8+Z8 zPDV$SemjnL;LI*7?|S6ia#(^1^`Jz8*rp8oQPc zsz6BsH(|GpLKO=GM>7`@W};Y$6ScLGsv~Q_3c4~sR_$ysTQz?ka&M$eW5_-LEyUu6 z?SZ)e$cHU1+WTX`?%b76221KEIVHHKs-rCmlra|re2iLStT3!mB+kO$I;`(ov;wdM z9{{z^-O>9J=?Gy?s~k{NFe7uY6KEceoW=P=4g9c+%oZr;g^ZBU4wf&q@OpV4IVSuA z-<3cwOnGkjET2hj5`kq*AZ@>^m^eclPxn85Gnb9~E&bV@_UFx4#UW>kK+Xeh zp_+MwWjx#-J3UzYIBk4DhRsGpoEV>`jKVa`ubo27;G#rl2Q>_Lgue7TgciQGQ>ERS z7&}3+yN4QINd|A7vY#wt(EAmJ@#r0j)T{oPp1w}{{aDa-gF{WGRh9N=!*+J6Zin^0 z#v6tXqO?}_$%K;b0!u--2waXI=R#5T%|kF6I%irrEQeZ2%`wm}DtBY`IN+6gE;%7X zuF$5DP$_CnA(qgc_&vVAH{(PNN~$$gY&3xjX-G{8CZmA3FE%&FFnQQ@Nw|du|1RrF-B~6zGy2H7W~fQS8S}{x9ox}F*(a~OF9?a6)W!nhnH01)A5(=Ax^68UrAL+tQ+{DQ8 z=+}oZlX;VH_V_ecwZ`J=Bs=${Ti>&MJULYS@yxJ3T5vX#>|>NLqWA%5*)*G z^QhFYlfnE?xb(l~J=nJCOIwAff*TouQdZ<|Ux~v%f0`Z5L=AAAd|sAR0=b_Fq_?vn zc{^1wBTOO0f}>B>E<5FKV)3}<@C>7_>Q5UDYK(+d=m0DjPjp(ZnovSk%q{k44Ma2|fWMTRTYiis9Fb~-tk5V8hOa@Cj0`dwuvQKKYC#^&OX zCTwuxSB&3Ee2u!2DHd1-97ZqA>;x&hPBdm2aBusU9nxFA$wzL$lJd-_%rL^$ARd_V zjwZ*{3gb6isY>>^Aj6bUqxQHS!X@Vv3YF74*!pY|CiR6$R!NYO5Wo2GM*6Km+0lGK zDh#>jFL?>{c;|J`_prE~6t;#^ zN-`mDM58slO+Yk6mNB~SPzCUYb2|khxpz{J2U;x zxnV(Ya(5l_Tx0wKGVJ<)dRJBc_dY9)VzT{T;A*Y2jY_?T`fINYz-W^qsg<+#ynP@8{%D@=TJhqi+3~e*7S)eU8t3%8o{W8^4?$*m}d~i;V zo$T>>YS=oc{HN$WZ&>?NTgA4L4JuCEKkwte{Hrd#!E0zDJk`Ti_Vs^wuhzTMG?UzNosX$-*Hdh=H3tz|jiI4H*ay{p5HXmAyrUttgYw>EKR zL`1#TtP9E z-^9Z0wi$OjY^#I~R)112ApO`PkRE)yJd(-58Qoh3iqTWfC!ell@3VMrCNGGzbzSPK z%Sxf=XLJjzZ5z@e02yc5WU(w&+J|?`_6-=(!`unG1#A{VP7$U)xaniF;NVSwvV%*1 z2z!BxE3btVHtCbc;wjIpPMS$m4;Z%is~`NI-c{9dBmwo9Ob=rfx}T4EIU+ zCH<6EYwZ5fIds2;xDywx)~$cyEQ|+3p<*)5ZKvXnu9}R?5pr*UWvA-RWow55g8)gC zy(ruW)mNzPx|z*?p8dc4=VAL&TuZWm<`5>-R4jHFbz}RO(y&Y7quIO!jgGc1un)92#UXgYK}ncY3M-Oif(I%(vLI7@G1Xo}2yD~n78{xIEfA73 z4lUwXWSz_P;6^}iRB^1k*#-Pf z%wO#T!>=;YBK=?;a{VHpd!hP7CUSK4kkgC1%HnWSLgfL{PH!6=1cP)UO}PMg-E`cF zq=uZQU+B|}bGUqZ>Z`;}c0AdP*gsKM1(yJ6 z=ShR6KWHW!+jiM!mAQ5#bUX8Y(W;K_9iOMdPnYfVF;I3grh8kL<$NvzeUUXhjNe6W zjK5=*;7w!IfXHF`U=qgmf3$GbS7H+<##zG>-V@;P|UAh85IQ8`kL~(;ctXJvCQW} zmz%6hk2S~A(wiUqk~u&z|L=EItsYBQU2g978!3JF)?qCB@oELI(PzSUaJ3qy&DlPh zbH^+X)TXd;D!k4%^s2*l;t%mwfuj=uc52%HyQxvPv;wSf7(IzSP%{oR*GK;vpNE8R zjXGq9_|xLf85%ufDShm={RxKd>smk8R36Z6Y!+u2OU~y zRYK&ljU|i4Df4}*y*k}P+wx00$W;vu;0Mnd*wa@?6T~%ow76YL+Cyb$(1G`ubRTr-n1DfR>3Jbmm z>3BsR5%15@{c$eD7%w&Gan8>@k)wo{ndX^)%4uw!-$p%s?~%8P*?Y(GC(=GMsPVh7 z!R8=2U47HU73&yS?)Qys2?{Rc+i^Lo4)EP7AE0)vpqrp6$b!DK=|yj(jdKFjG<%8& zr6L?`xxO(tB*o~%12qZj#9!Q)@t}87-N{E2>C#*YB7)7n9zm&fFLs46b7Kp|@#tJ29D_5wp&EE!sOt@p3Sb$9f5JqKTN z^X+w0?X1w#JOS@sg;B#_7bBnRaJXJ9>camX+PEgGMe^=H2e^=Gr zmbwmwm^oRW)ElZ6m$nD}q$63?;5B;;Y62(w=D-iF@Ap~ot#~QuRIW8Od1vf-7}P>KzNkS_#RmTRTy@dH{$hq4z^3dX zQAilRBJ;w;gVg$ZcwNM7RX5cl;H*@DrZPS*SPe`Nt0NZn?s}8Bt}IhNHWaDawvr;X zy5D-*pikN0+t{w{Ot%jo+tDf$hsE-(M#1)Y#r>$vwRS%{Z)zr^fD+7HE?d?5kQv%`Y^*9E>XNZ8 z)VB@b66BZMF>nvp?=8e6WbZ3dhg+n@c}l2aG2=g4?$4oKQ!)Nt??64v-9$i|lev?L z+^&#k71I%9Eh8WH${6XR_7@C94C5YJS&K3>Dc6eaRM^RUZ>rc|ODyxQM!)Y!lW+`C z$4o5GC!|4muw6IoY_Tl)*Buv(LomGhfs2E(9WC*Mh>dI1bj9b`YKH}$NQ|hFH+_b) z=L=e;JaBxhK$&H5e1pnsO2f+f0106spx4zN5*aH(vRDc zpg2S%pA=6K=p5Vn0LspYy^2rBIbQv`!q@lTU1oAf>Wkhrv6|jb@KIT>YZQWHZ0=;Z zSp9$Z@k1;Q!UQz9YAzS@oj=YH5o)UxScm9?+;*7Qh9OW;V=NNM_XNex`5^3F%+NNH zbIdI^Z&9Qs#dLvsw(a@T!M;Q85nG+y$tV-?z7-KJcgNZ6O+SIK{;%!Xz&ZV|xvjl| zy{#W#tVbV{k2g+|v3+}7-DMYITd#P!B4aD1vJezg>{9%hN<$mlfbZv*RXiaI5|m#D zMBjGYIKJw-@&()j7v_K2dFn;ifz!xSiQ8wc^MW)<*F`fvyT-fmJ6lVv;$f@j{u7pn)hiWrs_|w`pQ`o|* z3C%gw3F<`NYD83i1;w12L8hiD=xGKBzG)vd!Op^+hB=uUl?=j8D2m4%4!L?|fX6+8 z+wD7^>R^*lH}Q#hy|iLIN5oyk0*N8V09C9t2U8R}c^JPobe|)!gs&0rHL$|B*UXv4 z_WDrQ12x?aPI1b(&H@rVkjI&D-+5h&7aizzaw<;CzoiZH;h-;Ttk<{eSXV4$ceK<@rZWmFmCE;^j?=v9{o8Ti^!_%ZUV9g(l%A6WFu5+0vFn)`M<-n= z2wZ-T@4MAFK83P)>E4mK_AARr1q{qC_x{qv8ElVwcq8}%(Ni(c=q-6@<bRONov zCFeimLHs!!%se}-nIlsFz?q+DdvAZz7fv8&9eU=;=C?Y-K`!BBYGbRXVEgIYk=z^D z(W(PplYtFV;_fJZ)lml`+oq@wPcd#-*2fZeDX5=Qeu3*qcMq)A@lPfi`V^iaWr|2h zjo2&ArywSV+~lMiG_g>w(mCeP^zx^2Qh!b-4Bjw=2F~sB2(Kp?? zc{yLXv3a|}IILNN9uATeNJ8@#R}C-my7b~{+>TB$UVmEE+1Yw&;W{(&`g?`axM=q6 zgTc(FQ~#&d?)*hAuG*Ws^Dj{L_Q=T{XqQynljQCsGU&_71lTt|>K2o?rh{D!0pk%(_$l11-Th|E~n6rFC4W_pT)o}st_(6>;9 z(Dxj=p(%U(g|WtF&8LfTc}>%^ha98$u9;a9N+8k={zWb-))?2nPv*ONTx&FkMR ze5_K{=a=Z!gAu|$qanDtY7jJky4|j?emF_;qF{RO5Uvd8;#cXN9@I>%N4?Clg0P;( z&nxUJjK?xZ_);X%nXEJ??oKrQ4fr(}OiQuAsMjj1&qz zi%yopp1gn@Z@|oapyPsmm)c$hIB(!3JEcxQL65rj+k*KSwBk(RJ532#cw6Eg*W%MsB*&5qHxwE>P6mpBRZ8#vk#YX9Q5e#=(GbC; z3nS1EI;*qD=zr1@ z|9%G_KeKGf=0aon1lShry$$v%*pHoubT7N?j7Wk+(W*EC)nQDgRlKa~Uy ztzjB`YnZuHvrmFfq|x4Y3y?=!GQ|-Qmd5M3oj*lJ4l^rMKv)pEhW`o*KvR2q_T%_-?atZA^GlVJn5CcRK^a2CF7gTc~2DZh#RKlj$`-d9kz4p5-E3}Uols9ak zn7wW`3dpBtsUal` zB`h{hZI3>cjP`R(cGff#nam2rBI28XXO2l{{3D30&lAqP|9rRq@-Nwl zQj|vltS#wb^px&QM1M2iY?7x*c($i01wgpiGBD2Y*SaN7iSX|1z0V`{?A!Nmpa9pq zC@Qf$$NscSJYYjH9<67fm|cSmcHCXaU4*gP@~kKYjpu7sPNy*2VbO+oo{*RkLr@GE zf9FsW;}KY}2yN1Kkc5tEa=LH%gc6VR^Cw7((e8dwOl{*QhShE>?%2BO#k6~r#=$l7 zc<|u5cNPi zKO?u}giC8W#J2I*VKu)zU%;);Xa3^#D`P7L0Ao*oy|=KF6y7&!Vq=zQIikcGqI&1_ zdSs6GuHB|l)Pt4tmb0Lkfh4UxexBSV#nj10>pHHHyRNoz8-64^2+dg!e!Nfr)6W0) zeP)!{0yq{qiz?hPAB^X%Y4C+E@M|-5*yE-v6y;0@VEpW_XImspFFoAk)XWaIuILdj zW}W340|CtFyo~k_uugO8W|G@&v{ZslPHn|3WQa^R`0mAEwC*y*MqG zfk=7=%%NyTCfkjSt+8!9%dB>_o=ES)FT#OepLzQ9ztJS=IL z;}5f{DV)Qgo@!rIZVB?JqN^n4*AN?|pKSKR)_SG%JkANtyl=VgJrOss4hVI{wa)D|VAQ zLKIkz$uh$~c6`k&cr!^)HTGT;sMRsKGBHR8*d>=Oxp!Q0ga9?S0a|HHcm(%4zxIiQ z@FQSP0~j{L4-s4VQ#gNMNjmJxdI!{`b{OsF(b46`IB%m6j}^w=TNz! z@;OOul`3Fr2Eb+>T$f*cJIgEjcp+%dwguEu`kfw=J^Ubx)y3XH4T_ckwdX4{<5Gcp zz3Ru7CbPqK1)#>UHwg6xZ?7yO1csgBn=$Zv{8xk>_#OTlT}1>hKG>Pj)EtppU;-3lLjzXplqAW7pNBjhaK|AW=%{sm=3uyX&nqgMUx5$O zPGQxtc!yklLQrs>k0$wCA7MgF!$4)yns_#*`q}M+6(~C}B{=N^>A&b5=x4D^5@X%e z+C5|f(w$tWV}W!=C+TSe%UR}yY9Ez_w)Z69P#!21=PAQOnqolq_fH15ax-b+5v|ffF_%WT#>AlDHqNNkj6PeR~w*E+Q~jq`SqZA!#Z+0BWcSRru_s`=OF@uB&3)7r?AJKxt^x zx%Pt%8v@e+#vMu2pPaNe>fYekxaV8Gh1(=^vZx1Oxpb2wLz9$MwbBrU=c_Sy;Bp=y zp93kU^1bx>R@z1%nO&Tj;aXyT=Em*y2y7w0Vxpk<;?3;f^9I1y{ zN3t#^ua~3~U|*ua=jIe|PoQ{XZ4e2{jyRvDX8va#WHo*>1rFq;y7%)!mL$d75CdNO z4S9DzOh7S%&(XQxQ^ZC4yL9nZG+8_2GJdgCWe; z?26J>Btz>yun<(F%+Z4=1e8)Bd)**1DK1cBIy$j=6jcj{Xl1SL#c-T5jGU@q@$WK-8D?vMHKtn-{4-GG{0 zCRhZS^Udo{%ZYoBQj+^7VcU9o-E0X8}S>BV7BUD{)%1VZA8tbX?s zP!pDY^RDDsMg8Ifm>48c$=6ryzd9bUuD?1_s*tX4JXO<>NK7zcb-fFzghF_Q`AyMY zC$-6=R(@U@(AMkc|K<+>H{8NUz8r)hKZ|r9AJ;Ysp$3O;crKbLEi+}@!SUb}v0$MI9NERSA@%;!t`E27b6i>>fHr2@rXL#?n;)i5|@REz2C z{7%VhNC!xg@eF9@CyOuKJt495kjv$m`eb@PHZyYllE6nJ!J4HAkA>dPMak?qsSnFZKeyuNAm{zTR;5mzqC$}$ zi;2~(3WbsN4r}T=d3oQIrZt5S? zpu>;llV5miBS|ya^JuY~oxKBlDgendGgs5bVnD5ORT--&-{jVw9D`Y4Q1p#I1?p(A z9m=0mxwS<%Aj0Elep*9xE;BQ?Wtc9k`33fZHw6i2LYbS^wmWlR`cV6K%r#rzST)s3 zM%6X(LXz9Y=Y^W`s2Ka1`RL52uc^C4RO-vF(8B)eTp3gHlWoKvpJbN$I)e_T!iyGI z!(^14nI$z=>2lta&@f5_x?m?{S0qyBLVdsQNwJJ996YK+mAZ?0hBFEw=ILbB7+g7+ zV@C{4S+zP0$?bQ_nQl(wkt(DY8vJGNHTr8FhwO3Lq-Nh=VQM`~mxEUt?1{L@)46C% zDrxKa7DkG#1BpwJYQWt-48kXkFO60BAGi3gEs-)@h8MhNQmr6QAY0|W|MO4PuaPuo zW7Q0sXM674)F8ueJHXt3Pc*Ze>ofcs10%V}{CAt*bP zbPrTM)_6Q9>ECcBFiRq)4FDQSM>&YKqZ5h3%cFgu7#P5UT$eHL6g_X5sF?N*B37>e z&$EA7Y9ykUR>CH$G$_W?be6Z+fZRm+mkz-Kt3DHN8=ELSmf9`>)GeEJzwt9DX7bJc zKIz%nL?GYNaIsPngWOY9G+OV~Z3&enF4i$5$o7$}oQL*{ke}+*4BI2vbkpzm(6y?z z)wSPrsnqCY?BW4sXE2PF32a&Et`1p%w2}@7pge8-#kCHMpF*t{15XF;1{5RS6Uo%m zlm-4$!`SYjHR){%7fEr05WGI-^Bdrry zo0Y!xO#Px-hHwJh;sJ-|VEpG_Zdr2PBCOoDQFPj$i{5o$8d+V64{TG>h6E$4c?IA0 z4LtQ>c2S5?C#u*)DT+w-EtLnRkmpUHORxy|IQ<~)Qwp{hRFa&glIK3ttAtasrO%;` zjO%a|k0cwq2r-mqG<(95cN96di6Qe;Ze7T!R_!$U!TXVFL$E4z*OBGEak8ViivbDO zTJ`tfhiQx{rD+9+%?~q9_8pPbO_jEFyX*M=6DP>A$lha1H7?~*tJDu~298!fi`FPb zOgQg;cb-KeG?jr}R<2vg(VLewC{s*m|Hz}#_x=zKGcT!8E=~iF<%bGX+(q1X4ndNA zZLKk5Zo=e6Fj&}aCbs*cXxMp2_9TOCRNX=b1GByy!HK)D*Ph+I zR(G$}v&U3-X>!c3o?GKJ(fmu6!=rxW7d9ueySh78$FQm!QX?U&8Huh9zNw+4-KB0= zCxhPDS%U-a+7fq{k$By>VyNwbG8=-CRXC2)>Jio|qWCbo`bXiUSZj*zS}-Iqx%#cF z@Ctvr`gb*@%E@u29j{aNKD~N9n0ACEnM!ni9z6oSez{!6+R$r>CPyO#20e!eO-LU; zY%GX(Cgl#_Rr9GTG;1MfT!d4f9V~=c1aLg;vvIE%!27L%24b08&fL8BsKFwd9+dZQ zKqxDH{o*vrKIDQ4+eT)z=xZ}9>tU%?f}XDWi4JExlQ3f^ zhD#oq<^EZeuD=0QhDcnqHoV`VG2-RH_V{WrgF0KHxPSW*sZDM#u(8Sn8N}u1DeUK0 zcOB0AaQP}4JaR+_q|Bu~h&JqixcL5!OjmC=I~(!bmr`HZZ|XlBXQ6nwoSQ&@*Dy@e zwLZwwyAn8!;!l)3*Fd|gr@N)>h}_Bwur@oJO;)1~xp^K*mWC?@-QHy7E|gKT629m*`N#-y;=!|>YhX)Dymg%V zHxB}#41&&Zou&%Wp1BsiXj@^BXhjZ@1i2#yyeBr1dl{zJ3KL7Zdd5uZf=ROZzGMmC z5jA>k5h3^Q_0GYpB;p3!4*!HU`P^OHaf9ad0;?v&T^lnUTE=Ye=jQ1VO?kY_9+jsI zW-aq7*YEr8**$aR5TjNNlL!O^yaAZHdfHr9`pc~>OjlISNguZZE&TD39o_gE%)XqFGW-+91(IN8q2WXr4Q)wM+ z1X+}tcF8O@*6K_72!nwF5-g^Nx(GL>~Y&&WIC-ugRKl6)cgZ}YhO+IM`B=% zoIZEEc-7euP0DxB0?DaDEG280M80OWF*EQ!F4uHZU<_si!7=Sg!OlH+7ZLVXB8&$$wrS7+>ovfhr2s?;72Wtt(kBCZnodr(zj?h&qhjfmM;Cu)~&aWxSr-}X3SircKxaWR^31%kC zx2^_$P>Z(A#c5hs7W1d!j}|Azy5TIo?gOox_w(0aHXHgl=K6{`Kb$dAnJuD23&#(> zcip3&93?G%^e|&xV(~zd884@L_C<+T$obE)oqzK$rjILJ9lt8~-E>)NPH{oyqA=Oy zQI40b*+^JAf6ev+-Nzflb_Ut2r1O=KK_v)ln=Baf_?ngZd?e{AFDrSSe1!q_T(N1t zv%khe%Sz68Buwv7skDlI5&(fKa!)ceQcx>)cm>9IYVFyg%}dLhrkS&5d^DtAf@nhL ziP-ooW9P+@NK8fpj3G6bTPVgW4K1$NuUny?j^#XR@wA^s@@E5chiKhgRRYG~t3Cy| z=h%VB;bRw$PFf$}%o*vW_szNL5!aLXQa+ynV-Co;endo1Z|*n3RYB{mjJD)-d-l8S z+md^ZC)<*D0UcYjX<*z5T5A=<-gO8c;Nkf|OPUl#$(966)A7anLq7uY5`T?hRU}2_ z=p1^cwT2m;08n0&8F9VS*TpZ0KPLmYg1*24eFjarm<0<_cUP^`Jr-mtbWdL&Z^`}B z8KQWg!q$W~8YzI;Nimq7f-6q_9T;L(jQf;`X>IrXZZN+#e+Z0|@X0O=1sL-%m!_T> zx>AR=HmNoe{ylPM$Z4szL%tctdMI~yR1)YjfQDNg4cRFB;*k!kpEkTSI4ZjGy$^dy zs^~tI=L>{4^_v}le<9TtVLVt?aP=x8FB33EB1C^=*uAAU*x~Nlopl|m)Ib|up!~eE z5MQ+w0dnK$@^v$yVL*d7wmz=3r#&;rAsac*z^-#eT6F(v)fNk*vJy&$VRD9G8>`A@ zEo}hSRtGn_w3EE^z&@zE0FBm#u@3|tR#o2FLB35+Y49xE$jRfM@B455Gwa;`OP4lM zjz^B4GxvsP+dET%*YE_C1KQQ3!|J2B;y>5!bjfqZJ*dz28x0^`NYpmHh5Eot## zJUJAURFF&NdM=}qEjjzd-f0H2k~y8z1;Nr-h4-vfOODbW2dMO z%oAq=yHvn38vE;9$1?xh!6q9`ACYJ}sA+ATN)BMm(MI;C29o$IJ2_z(hV`4!c4>*HIR*{QXlAsoD|#I0!Fhupvzn|_6I zadoJISX_hF9M_Ol<1xVnQ9&U|qNqylso_eX^Wej=@Z5wq`>K8;+gfI)p1y>qT#9T$ zK}%<3agl^fQUWkLxsz7?+4H;Vrgmm4<#{H0qrFhHcTiP_=!i`~efOPUpx{A7fWNMA#5jcQQd$sv^X>w)E6`Hn!IS$KQd#BufeqeCG#j(eXs*v$ zpP29;kZ!Z2*CGuoX93B^}d-0#VbY11B+2QkYmV4dB2^l85AU=ld}MpJb^GMdnFLZF_Q zGu^lsa{#O3e~N(=jr?L)98B+Q$>N3qN#$+AyN3jHW;TZ&h4SEIan>qcC83&F{;2jX zOeQ`vJ4OsLRbp5_9Q*D5|B4c4nqG!VE|Lt&DecUS6#i;^l_K!&J(B!qMDX@7l0{^| zm@!tDh2Ke4B_y^bUs6^hamb@#(a|x%b+V_MoW0)V_5ou=Oju!};F_;X_pF7*Ts9zR zgyXRmaxoC|cHT4lbMi<6V+50Oq!E7~a-Xp@K~6buP7t_`Tj}72r2g`TtY-4_Dh9@E z7)D)!@-53>FN3yqh&6>aDUU%sr--dT=4Wf?DDkoYV|d%!*{?EC`N(5gzMF$jUqJEM zB%Hyck1zG92*D(`|0#{WasOMYVjs8OlUF$;`}es<3&wu_5WiTr!t)02-`Pdw)i2H*)As zDXH*jatS~q@nW6|QVe3Ib~?jdfeil&&_=1)(loo~QV2Cz=c&kK082G6zIml%81!cg zcm5RE^CVF@fCj%qwwcJ`yIagZ5FDh7=?~EQBu&3g`deu6ypIZrC7l=qXe#cnPxArs zlE3^}KHFWQF9WofQy#V7_v|r}RMw;}B!Pqgts0T{8_jrLxjt<>1SBn!_M7%^js$cX z^uMlJZIpj^nb+91#LoK^B}?)%=2v6gW$xF4K&{>gpq<-_d&O-=*16SN>5RRy>=55} zp&ovX`*JdSVq<@r^8~2E{N)tgzlAiao#baqYvTE~Atyz1moG%0&*Kj>N>8cvXHI2+ zG2=g(=1dP7Q7Qw=x3)|intr!UveSfqvQ)C!DnIbh0UFLF%4;=Y2@x|W614y&JwO2b-+^ZWRlP1=6d$cja`|K{yaezzu#0rls@QRdb&5c% zPV!$1e>(QDtPh$kpTsu|X2tS{YyF={Ps2V<6|FUSB$}Q_!{3Bv17O*WgqXS)GCD~X z(Z1~6aV7yYS;*NBIJNs#>KNr~C$S|M08KNOB@pF8rKxIaL1Rlb!yBNTaYiL*rFJd2 zmt%$UO}OR*G`%@V=2*_9$#>izI$QL?y#Sh!X`Xh6xUF^GwkdJ?;L$gL#+mDVL66e^ z+TtM^1ra@21<)q#r+yqV2or0!08LJ#ip`RP zGsKhDYGqhV0FaXfn_DT)@h2u=!L`p{@}b-L3D72FCykV+tDDL6Lxb-)(1+f%e;as! z!SL6B_-v=W6&k<5E4WHNGGSa8bvmNTB;`WPUpLp;E~yJ&e{=Zu?@FF{u!p~thN2{-NiiXvYSTWq8PJgV zzr4hvZa`X}RdIBhWUTWSX6;O{Y_DIter0~DLWc~Aay;L-ojsmE7S}!S88h`~!Iq_$ z(W0QRbX5L$S)Z&(htql_F(is2l!t(r4GQ~~ zZW)hXl%~!v%`0n`Sz9F3$uh({9Z%BLG8~?Gzns9Ww|BrcuA*4|7k+Dla_9iIDs!zP zKh+hik5OqZly(bUt?OpUvr$XFc#JGk?I4(PO3Ubnp&;F<~P%%pO}@Xx5ecaO;VemMCMT?SXZSlyNqgE_-x%SXdJxCrJZ8x3-aGL;;R z8q=^C03zE58gdpvZ%`Wa1@{LPXCTB}NR^=BXkbv{MSP_hUjb)W3}y8OxO2tH;*MQ9 zb4`YRQ@y;PeDTva>1YK|o9@)AvK9&_+j#d&D0uO5+p=k+#5C{()ms@{U7XKlrwo<9 zG|$`~iF03GB7Tv4uW8LMvs)arF&C#+QbVZz&2_)#ZRm_$UH(yH=({~4qZdae>V~}@ zt>(I}9=1J7k*e`oHljnrgEf)yjD5W{&GHH4n${)EI_EsfhgFAj##`vbaRHTfiED{_8(PziD|Jo}Q7nCQz$GB+S?|^}x)Ect27^ zzhCoORkAP z6)*N`Yo~nI{6BmnY-P4g*SBEUmmI6vAMW;z5j$Qkw(xbKGg^|DdNzj7P~KOZYv_K5 zBKgNH{%uRdaCs)s=Muu9GxtJYp!iVv5r0T0yA;kzK`ep0}dF&vVThTH9GLUgs)wB>Byu`GYpwaPDGRz z%Wre-QYjxmnE1<$tL$&QXV$*ElMnET&AhsA8%hKeO+_f7*V9D%&{=+40LJ9!dlxwp zc{KGm@eB=aw<$AHbxn;s#hM-j5?A<|h-Cs}5I=y{a`UwP*vJ590axAP`>htn;Q=N} zzAJIc4Mlh40gRy(z=1=VKS6Gf40fPl@GwuHV>KqPUx!Ux@0j9Oe(nOs$g&p+B%0W^ zJJJ>5VD7YUaBm=~=S!M&zuIZAcKPoDLegK)V9r6iaZ`fLr7Jzc;=y6E?2AZ6$}bp? zP0{Z>>S?ao`@opIOvdw8B5oEL2%hZ0q3(`H8}Qg}uecenT*EGJ3))^_j4T2YrjOZD zybIsgXtygdm0bNue*c%JbC{}PBLsJxU7*awFF~ns<@V0dY)ur|&jD`y?@|~1z7PeF zZ!}q{bpWQdzrK&k4j4TFRa#yLr7}!XCfE|J8%`llg5Y*t$VT*Q8zI9R19%R>iLEw% z-;Oyn#sZV~1Z>C2T=IGoZEP)P`X4&$k>;(zwN%(XEqn+c6~ayw;ndijV-)o6iNO*f z2aB0%S-&z>`8t!S5wpwB?r?$*Y%8K*-}dW}@b?L8?vhF%0bIA?l5Fdf{Za zZ-f*d)z|Mu!;ao!QA?z&-o9yliJ0tt#2CHkU>ViA{F-@dB1Kh+;;+#yt?-vKZDkpV zUbWviy>0sx>>b}PhlFe^Eq}TqGLl(RmzR3V>~s@0p2U8b!>D^lZdaQnY{b~Lsf|a= z-4sUGwtJc=FVVM7#LT_l!J0tlI~e+eNKsJaLahnf{K`{rH5Hag}sRo~>k~Ehy z{=y>cU;dJ{3t7KwoN>$kix!Om1yXmJ^z@D6XBq;Jy>*jEn|Fal2(H`3{70Q@^ft@y=hWcOz zU-ka<%@bbqPuHzkXypb@2i1&5;?z_>Gt|!N28OQnth(1n4fQ5SNf_5D)hzfs*CsM# zzx91hv4Iq33?61NyWi@KBELb5QV{F3IvxxlO&uX1xbb{FMkSyz(|UB(pss85UCP$w zaWl{>Sc9-Ensr)?=-H5-CzZ%Czvy#ZGAR^aF(~dqw?AwhWi!22{ z2V+4EF7$`vJ!CeK^y64_f-Xr`&v(JVoXgk|u;@eB-M(qU-PqU6vh6#k4Y1@nYn^W| zAl29U5%X3yR&16QA-7%sES~(bjOEhwO=>3~_SmY3_Pq)ea|ou)&!B__-N_W%QDH;} z4k?th={bbU*Xz#BM|Eg?{a#`85;{^IG@N``U)IaY)$cE>?OAtBr46zSLR$o9@Z{?R zF>zK2&5SO~@|c=drnmOOzZosZBDF=PFUSSzb2f{VRAESiDSeW>0Q;~%G3Vdry)?9^ zbsaFnNI|o15EQb4qKuExg9}MN2?KwqeVVm&1e^-{D|UUnKXpqFfLUcFP0u1^oB=Ia8j1*_#3h-o#`OcyBicD&Opm52 zH8tk}#;uc{eKBh-oM~lj@8P=;t(UWE8dAq{SYXV`G&#Wl$AI4uL-i=V`aM?TVvVR_ zA7gExNwQFMWqU3#ra#nqBuYi-w}SxzJDbWi?jTaDt3PbQQNcX2Z3{RO(4>V;peSMs z$_}ZQ0$G2F^0e$3eWf9PW!fV1Li;^7ft?UAJKgtrQE%t^cN5Cr8{G&J`+PW*AZp?w zRDPVhsh0N(0-6#w+y`$J8K%ASVBC-+k(`zOGT6{<^J4qqy~I;h!^Z6*FgrMP!svOr zZI;s?=h9B*Gs4s_3wzFF#Q2XHp7?FD zeTihN{DE*(Z)S44@g$3>(D@!rJp&(cUihvMlzUN>MR@%*U^>@5j0|S{HYiOe9X26= zs406TC#7}u$6)W$mr(^8!u+u~MtfbXoPuQz7HLLK&BjewywZMQNF@PkFn6!tR{0gJ z8t~G2U?tb5t5mJX-=C1Yz$${$t{rp5_cH}TbG;<#e}0?!&zkGs{A?c2Lb0-T@y)I{W+ahpof~$H!)z(=!DEx;P~YD@De;o$s;y4sx~ zmset~{1halA+k?Lj?tv}V~t=SfxzsfwVqRZ299n?m`2aq41}q#>6X^K8A{ zVaYxD(4u@F-GTFuec%1;-E$3~QhrneySM!pOdT@5Ry7IOi!yRl>d~M~iAI5RF$=zV z82xDa=T~4%N=|_|Una|~W>&EsVVp=d72lTgl=f&BPluS)R>P<+Fb1#Q1-n8i_d7HT zYY+E%+!I%&S|*RP&@=+q=M|M}lx|>*2#RR3xJ(O_^WIm+SWnn!QzT=I!_S<9A?7+A zqJ&O>WZhqJ*4TGFcMVnO-jJWDw*v00C06Lui5qfH*WO0FSox1e6krU*B(zGo50a}I z0iQiyr%x(*e)vzvg7GQ`O)SuNBzYlk3}9V}#K{Bo!comIF0_NmQ5Z_au=ncVMb3aP ztfDr7&2vP=u(WHqOefRB<|6@ZMH=SWiHU-9aB%)k6T4Tn$QVh$jpfqOmH^8QDd7x> zKtUGD>s{Y09-R)E5L>-_iF2{n{+ROa8~ z8I1uU6qgvP#lS+nguC}et672{?Hy_XTCxlZH6yhd?ZQ5K$b z|MTeYV2yK`?tyh;NFyH*C)evop2csvK;ya0tqo~$dE+_6!h9$_D9)aZH5tDNq)+;F z%0dbBp;;NQdsBq62)>+6X_b)`XGcMQ_C*RHDX$Zl`Z=(<83(yq479Wpm|o3p=7F2* zrut=2UjxmPLo~aNh%!L@iur-O{!nTin4Ocg`b{0xWWsxy@J7P!YBF$ErGwsk+}+H^ z9vZfJRAgWbSYrE%*!S$`krIVRdh!nPmAJIa;9$==L(wj&*=o>JV9Zn;mFFRUPi>%9 z)ZX)B2t5^pL?0Waq>f?4lXln&G2nFgU;Xn{>r`t%__HVZxae)bkRFwaaUG} zm8)F}cLyRc=3YIWt`JhpH1GOn?v;SltoqdecCnD-!_N9Rk#ZIpVD9{vQWZPMx`is_ z`$4&n7!&Ber_XN$*cCpVYevHjw|6JAc&7P+GC-^Ka9gj~4jdi}^^>t+!2uMW!M0AD z*N`O1oq2dK*Q*Qghyj}I4~y-*9o_BMff*1O6z@L?Ok=4oNbq-o9}p)Sue&%1=mG8I z7VzDP$YJ~4dpt@e{IdZ)3}#hWpssh{fl<#~VWLcir3BD8;iR&n2iV8J=mR*&g3CTj)wmry=RaaE12hhHV?RKHRCU3zn1u{AD zQUH1jY=OeThVzDt)Nyvr^<>+5=1u#zL?`rHo4!tUPkxMd~-7(+8iO8I?iCwJxUeE#j^oT|yb16?hD`k>t6sxc;2?{vRq@MEcEtih5d z>71~WZ^YCl0S*F?h4|~<1js^iUPQOX<*Cs6*OwQv5RR)`>G=fCP6&+OS7hD2A%8O& zde{c;CP!QdST>|8)7uKIFa!>CO}~F#sFre|E(Ahp)cB%%4BphF?I;? z=3{^Z8u67#g=wM+O=iL;HVV+7%>uMlH|w>>1#Pt|@!3IKD~dm*8wCf5Bn&+UCxb6N zMNan=oPc(b$$IJ~Sg!*gtQz<-RSC8L8snIfbnrHGB3{)Ec;@z3B7lan48x-$GITR< zx^nw${O7lFVEgJypF5_vX1%{*mS_#^{-dCZ! z364$2gcuw~|5!6G48iRozkQ(2HL*kYF9vT~F_O%tk{YPkVik1)&x z`Bbb0!`OULn;!l);!XQEM*=+0zdH9-3y!ppV6g5sTLaOP9EI3IJ_|Lpo}~r?h4RoOz+O!o%b&nCCN#E@JJ@5{-_J2X>uEZ2$ zt6Co!r<2J3cBBy#dwr=jR9*Kuq`(Is$!N7 z$Md`~M!e*`3xKBAO(vHKe%iPty)G{EQ|%C-^q}stAqsn3x&P8yl|NLeZ)Wfes#Q<7m{YsxPxr4DA&<@Aw z=obPjR(hV3W6?P=oh3l?#TM_D*rSFjoMnCiaXyd-XunxgPZcwWe;%9Kv}W42Z2+`I zT^W6>sO#1KPjy!H2lveY?Xm?tNPSqekg4gd%CgrEh#p|nm&0?h6VzK4?a(7f7~?+x z8V1@A=aO7-$#z*X1_#0Tr#J221|DEA{52p@@;-kMbO;N&qC))`yAsG74HK00duo6vJ>pr%vlY^Z>Tvw$1v^Z0GM>3)4mvGd4jbsl#N!owdd7|_b?*vvKO_S9Y|8m^JU!cXj(1l+m~zt3598#CAZGR%pQ5EyG*oAd|mV2 z*%mVWRiSU{zmg!HT}Ql#wqGl6$=x9jk%iLLz_x|=Fnd!=3%?mawf=Svod8j)bqX{E zww`(Ll=PKM`Zz9nG`?2K;g>sI=b3y)$sUYKw)Z$X7G^;I3N$CNCL9Kg-KiHzr4bIo zdv3#D^~^E+(5F0#L7Lx}-OPw5Q%C}gvOA&M-=%V_i_x({a;&rUOp`8%)61YUB6m&B z4peRSZz*a;_S2fQTR$Tqg37$FBF+acM!fvE z#ULDl^FZ{|UQQlG6p58o?`$-?9PBZ_rn)=Q35d9j@^f`tRdbh8Kxqq{ED+wIFYO(_lfgQ>^R+V*oG&nu_mjgP6u`Z{N?n~c=D)UPjzQU;} zdI$N+tYyY^9Ba%Qs)tcRAu13Z-?xR?RkS{bFDU<^&Mp2?b=2$HDu;D*d z*(hwK{V-)q3(UQc%ZB{jVI(HbIkc~9tJ1>NFca^rE%E?D(qArFvhqt% zaJ4yy7eukrS@vK}GAMRst8p+dWBXwWUr-dVnEZ=5ov~mQB^k_Zh84+Ak4Yp$hBACL zF6@vQYTxGZ(_$6`##kB75JnlLOns-mT9#)Hvk>N4x9jN9>!?qqNpG2{6a~iM7Y6QH z>!OeMoYu?tW};az6=J^w)$CSWLtNs6U&Z+XjLGL7lkJps9Dx)hPV26xC<8CSO^p%JOy5*V=Vjx>HlhR~f7#V0Qe8QH2gq z@4``hbLJErgSr#f5AA*O?`j{mzh+_7cSE7w*-g@@G`FKt2WAIm&+MSItz-Okpf2ix9h0nemV>u0n!U`w z2E59F$1iS$DcA>R-)DNJR5i1Z-?dZO@b zn=`AL3OgiH?fg5N_)q%537;a!+!21!wK+sVvu|GN%gouzGz6n8%c{+4&ly2$h{?`B zVRRbY?Y8{L8nm(eQYkGF`irmd#b7jsR1XD*lwPgn(tN+Ab!$-i+X)9m%(kn5XA}G6 zG~p_&LgcLNM-p%-`&<`j8}ithrbZOQf^VvGMAcH8t6cnUR37sxf`l6_%El zF2@M4Xqpp=jeZ-%eJS^V(7kTz@O)C*dmeJS&ldUgGsM!XiBD;`gy8h3o|XaWu*dY{ zUmrD(-h&QGGse6Nx~EeZ86bm1dCZlS9E7qDr>+QUjF!v6!SC`ktMncgOptE@v23d- z(7%N+4J}zqC^Ya}dz2*FLo?nO?yjxq*LXC@LZb*#s`E;NK8btXh|uE84EeC+NH^4t zav=ZlqPMJrQQAXd_^>C*aW(pXb(C*q;hrtwE5 zyR8F~0S{YV^fh+4*v|5+fr5O!{0aFT7i2k4P?_|URiSGrjDFdOE4YyuOw{Gb_<7^x zZx&MfJZP^W0?Ppq8RvnWWV`Af*zBz!gi5MO2+lHclJ?)I?W>jV`w|$Gkb1V!&aCd= zUh$b?#gKqIAJ&?&PhMXjXr=t=_FIUWN0+#YMS_-A%s!V&Y$dy=0gvBqZwFaCgCsGUpz*n0b`^Q=RxFzW^W?5!3$@6l@AX|CA#YrfdkHPynR`6U+IWgI ziEAPr^kEbR)R0_&K_8-7{<#3Fx#ss5XRN$sm{}_%(7vFy8NJqGxMm9x8{N(Vcw=j# zed!pEpp^_GDqn5K2ky@)Z;Y7T!jiRm{Kd!kP-h8#vAhrW~p-1z3=Js z?W3M_$;JKkJF?sUcjU}4lE*A-ya^H09#}+GGu(Y0Wu$A^yDmROEZjxg@%tzoe{r?L zUoak&h~c(5r+1af>aq@Tl`Cz-VAO98>*T~et0K}_QbiBNJ%uLFKbj}RwBj`~%GB~l z2^vh$!i5HZtZeJ!Fp2B`#I^UOJe;KX*~^DVM}nC)>*8LJX$74arJ_6BL(}6Gwv=Li zKAZDN;h&iEZ}Z;pZ7|G0tkHaq_E2$D-SnocrU3_jlfRKz?KUIHhn$c9T<5=2fp}vX zO2>#a8EHuVIO*EmI6J?>+tS@y_L)2cblA5D{xj$PH`BLyaNQwTi%tGp`aviXPPp!y?jaWjxI$|YsKuB2?^M&0}_GR;YtmKtly|zb*PL)%6H#JO+oZq z<_Y_aCxZauA9D%W4~#MBia&1Ada%0`=*Sl*;?-;Ck7xkKQ0=vz zb)YNA++`npqo=9_2MMyW8tfG^?)~zW(}mR^uwD6U?w?}<`5ejPN{^{{HzJ)TjsP;e zK`t$7BJ48nE=O8QjJ11A31fmCX9tO?0?z_8(Xk3w zi@-^L+F6?-DnGzm4MAaSQvU9QbqvMRg13K=4=@+~b#Hd&=|Ml9*wR#oST)z&pS8Mr zPBr;|7(>{BSbv9F&H;KH=Jz;ZEz=x`ZV`)Kc-jJwzSyz1&C5+T*5l)WKnqk9!kZm{ zEi{^9sG-74*f7JMq2I!>R5jU3Fnp>5J5*dwyI(Rm-oq-zZSra~$Gp_i&*XD=RU$!w zRgbasmYVaEELK^r#~4mcem5xy=1bO=Uq-gn11Y(30$sIG5wmeCZBUjdGa~lH z%c3ZjkF!p3c!UMZUqU^;ug{)!FDe=bKf;nmsgU6&!W!Ah1TqjT&Ji#)uuBsGZ+U3Co3(Sr%BW(25$VYG;+Vs+vyzCr{Z{L#@ zymwyWHmawp<16%lG2dKIpLEHHPKxTV!|FhOF`3ylx;7n7?VEN7uQ|}X&;w)o!Om79 zbPX-8Mrq0W=}y)Ms{1TyT%@XtSKW8 z65hTR>x!-|c)pMhz!+z{>O6D>NI~l$qNtNfO$kMn)qR*EO_Gu)Dv@i~0HHSq;9p2x zlj0Yt$px<6!&M%edXhN&sXhB z!o8yd8HrSnUn2__yYt5HuQhvexjH4^i= z9;vv-j;$DWezkM^=Q{uGKUXs3Uk%zi9knKAezbatfo$GlaC~ENY}iw2MLV1LHfHAMZSSTlX*tAVjjzBGMG3e8}7Yg^j<) zL6v(e2GX_7|Jbf z8QiA<+x?diIS}UwmRdmS=`TC;Tr9Ai77koUR8n<@Z4fz5urCj%dhlxqR%^x`dP{@A z82TrOg0~lm1SMUYeSl4H(B2j}W_jJ^e2+%K!m339{Kb5(-ZJV)5+{?-Kh?QdgN$0& zOSa8>y}Ctw`>Q{hE=WQHv%||YGY48<{vE2El7DQFB~tT2y|jEhdKq0EAqdnJ4QP=d zf=Q6Es6SaO-V8$=T~>hSHx|!);{gd|9EA*eZg)`sEh@6ZbnGwIXI3;RD1T>_{G*wkMb?Rjny~puUarGAeR$LUEzt>d zbiD6}N8t3)d2p6ABrt-j?R|NV6zv|vuhcv77{9&EVG%vE6OPe@Pr42Te)G=v45{@MxM`JjCI;8|==f2v?ccbWoWyO%P&*zzM zs&tNveK5vn8Ht7ugc$`vVZfMnl3QxFmsK6v#hoXOp{ZUUG$N1@6Gg;dI-3qS&^&;? z|LYl$q|DbutsskE8NW;JUv@<}xM3|+T8Il~Ulop`dE2G~V}fdr@*ga`kLw71h*n};n!XPDG+-Z~!3OQl z+4aP#QQE%!M$29kaB2b!u7``*v5{7XqJGpF^?)lMpivb#Mft&g3BKouKwFKJumWiC zeG0MAQ7UCmqq#nvghprp4SSTIo;{2fBFz$m{gxJS5}@IgxU%-nGr{I4jF!NLlnMhh zgz5-5*WBavixABEvmS$KfHt{b#2@?HH7}TRJtggkPXA5&H%9`0YxCEDpvDBVg;t32 zN{G*uP(%^Tc74YE=JuH;B>u_OTzbh93K+v9pKCwf>6eo9vt&LX*Kngo=ojcWr(0{$&TpfzWoNvE~ukqzvBv%U4J*KP8I?+IE%RWcZiXL_eU@lT%BvIEx)+ z31cgkjI@%U_=^3Px|3t&jfTO>436H_P+)cj*8LPILcoT@3+MgC6 zU+2Q16~X)|FTQdAJMiMkuUDB`Y0XO*rVw~_`8nPifc?}^ag@iYSW8mD*#6lR_@`u4 z(>o_DViAPLCs(W7HmFqqX!q{3o@MA0L!Bk|5Cwb?Jz%X4_UW_$lp2z$T*|XnpCAh! zaO4Bbu+tnYz1Gczv0BmmK*96R;Q$QW0~Tt{P|Asq`wOw;;?#h42hsZU84jEGYy&=t zpf^{4Y>;rX0KxRE{QRJYX!6$d`CkX<*{TVOM#$6n(^BapdAZ5L}$hyQD;I? zZ?~Kia{;tv>F#KZ7wb8HeC*<-Y!^C!W~F$bu%@mFUgy_2H1N0{Qs1yK6nUVVX%6NPcvcM zE}pWUy|aoBA_FfQtD|>c>4xcBOYQqzN_KHSzU5V;NP&Apk7yluhBo*5wd(~cTB*gM`N-s4lVmz!Dy9;hbVX>(k^y@qr0(RejS#hO#tvXqy2(YX#0=6rGqO`uh7paz%8tfIC*XDonejc+4!ZOE7I(1@?*0*FQF^8bOnM&nyqjleku$ zZna0|4FjtWHkE{0lyJjx@$Imf@eEDa)Z>vAniyN_l`FjJFTC=H)N8gS36r*F8!D?? zsf#8|J-*Up7W-_s1s_v^FVMTveMRqX%Al#XXw<%`&Kx4H=n+#EduEA<@113zvE?G~&m@q}%dz zG)-NpGEtMYFy0*hkOx7oeZi zT1ut0%nR6U_CV|&VS_9LAU4{)wzVOr9lP$?R(A4iaDk`Pn`j_3yYyGZL*4)57XP*- zB6%t1Od5xHXgr`F9>gN+2HO!x#Sv_Z^O@)K=^4-_|K~dYy(MBIu|=>HA38wbz&J1U zw=nPs_k0@3I{yuJ{1F4wQ8gYIW0;fFjakWoBls1ChiZ1Tr|1i>!RfZ@h`h_WaXh3Z z&=Y^Y)uu(+xUslGYZ{4)4KWp5K}U z9yKwIP2QnJ|I}eO?O^~_X20DB7(;?Dmkwj`6X=`G+hCV2oZa?!k{+p6WvE;XSqY z2`2SEdUQHSf=NDQ85p&<#BIQsNQPWUhO!sMBW3E+#4!8_e#lWo_P_|@`S+PiS<-?X zz?i2V@g!KO;yuyw1JMEHz3b(AGz=T`c6x{3rtK^nZH>SfhD-eQhH&iWiAp{Q3MW6} zs0XhSh=pGknwStuWzL@OfiVYyo-|~$nUey}3S47+lOw*Ol3pK!gu3ZDUwkCdnE@M< zzxwC@TB?HOhX*s^3O!cvw=`h5-6V?8C-0iUpO+3olP&72=8o@sSFC(Wv0;_hbZVM zm>CXCeAR_ZkG%$eoCVlF-T6VoW$Igt@;aB}koOV|`-StC!P}FL9D8<|VNeh{)a>sG<;M;0Q0I?<;#nVm& zx{1jLeO`|uPl?KME2L}%?Ig-8wDK!AB#-7J@@gn;$uIh%R)zcxCA!O?NhYo*No%k|?5 z%9xC{3{0@Hb$QuJGG;0r=o*7#*&;(y2=%;d-8bvt?~0X!h*bv2@6%}v5eQ_0zz%ic zR)Q^)67?} z<=`I7v>BpufcUvZcMqhs9w&%gfn60cz}Y+s%QvNQr`;lM5-Io56bl9nb!I9-?AEe% zX&u_EbItflxAFum$~-lVZ&B~}&l0OPUhPZx13g2XYD_&@oN0{ix%`Cgxrh>FtaGAEV(b1AC7Fo0BS_{i0 z71z!BQckmnKB?`^Ckyc{0A> z)b2_swH=f-b3rcj-|9-YCpyz{?y|P^Bb+cLew)!=Clest=!_*;(`9Jww;Mzt*OTVN<&g97$=f5onzsr}rquco~q z=~W~;}*7($y!Cv68YyVKy+455HPUVnRukxLxsKBv$w z7!yM!z`pS>JD{24({enKHdp@9dcEDtc6J;&JS;w^4WG+z!WI$M6M!);mUol;5^M1= zGvjtjG?1PNCzM!+8%(hAnst#0$fbb&?q7BYk}O;X9aQ==K*l5)Q`hxjb-)88N+zN9 zzD)+!>y-f6*X`$MH(QSZw<+)nuO-hw6#LUkjP!N>&@-T<@XzW)2r2~yW& zXI(GxnTg|6+T15J_PqI+SO3-5e8mOm-jU3Hyfj_T>JFJ?0AbHES zgS$g;2?Tf7KnU*c?rwqL?!jGxy9al7cL)Uc;0|xrQ?+;Px3a2o>b!Nn@8(>rn}7AM z$DBP|<`|=UP3<_FtFDTkH+)RvAE)^%R&+z(K@P0n_txTRR`fVFmtW5mFmd;eH{<3; zG@f&Ry%lwXs#6?hq8HCGCck%dQnp|#(7sD3LIX7v;y5KX)<1cmsmwjA+yYAGHp}d2P(Hu zorRiwQ@+Ikpco_TV@}ip%rQMjR0a}xq22=)4FQED)4R80-ipgGWNHS!? zQ~IBa&q}IF7Tp1LnQs=2B)j(DpjW~`rm8ZmWvW>t&X&10=I=2P9YPpB)!VtjFc}ZO zOgBvu0(?Q)2}k9*fnapd3Vvkf-OPb(b)J6yeZXL74Ex}PsYG#=92654^6OsR)-auK z)FCvoArBwFZVI1inBoDjM>< z?A8tTzNd#OCaja+)Wbdm+?+Au0O74@LyTgpeGn!0KC3~~X_l>EUg<|&2@_d%7qw-dlr2R%f67r}!$2pp@$fhTNT3 zBD_S$xWtAGjei_94+g(xIj)N&bfLjK;F&^;Jxj z35;GY4=9Grn(d?>>Kt73)gXiM9oc<_1*$e15sp#4NFrHo>mfQQhF&Zf++AJ)E1Sb~ z3AvC0rdt#Kc;F>pJW$1aC+dX@peQ0}!TKx@h6DeS-uSnO+RF1)qmk2WrlUTbrZ~B#XWQ94Z%8ZvU`OciE=&81%kIoLRG&)H+1K za+rs!$AM+Z{h{Aayiv zbQA!5Gx=Mf6J)ANC!0To2UZK=YS(+Zq#(n&sU-ks@%Ey#=+~1<5F~~C?|T0jy}4@v zl!Q_>gD3Rz2jiK9@)mE0sj4(j2nRWE`Q#EbL9Wd6Dz$8TgH|m)oh2WXVT%qdi4JwJ zdPb__Pi_VQgo*$K(-rlhn8JG;3|vyAUU2+1cU>x}NsF4yJ$ghzLdHVTUI@%;T) z_*Y0>i7yhX=Q#9!t)$Au86}J$|MJt|^XNmKA`v^pysn*>#;(a>Wh@fW7Gm% zG63$kQl~Kc9gdrE7gKP!QN2Ko+FY}IYa<4HQ2iv)5QhjD4g;7sjMISUGvng_7|o$c z-UludfXwwZ4Jb;QW(T_XnPJWYA)uxj!{fG)b*4n3cxmzSd2Iuzy@9?y4!w|x$w*{@ zegE-l6{y`N9Fd!L0K^{+e1%9jxQl@rBLducb#cI;aH-U)!vp{lsMW-OOc(MBdi0kw zUjjdrod9a(3%iDO6hWcEGvcqABbf_8Egk&3DVqeH@8bYMp8i?6Cs1=N2lT5e;#&%t zDP7rm?*CI?`}>~_jK|#>?F7p4v$prZ6b=9a<2u1Jr?Vz2yC!$J&iDnW!FZl>f4n7(zNzV*67vt}ZtZ@L=w-F{f7<5%(5O`1L0lI*UaeYvB z{x?c;+SXvJg{Gf-_tT{O&5muJ|1GqL~zlTDUpbeww5;pZ{~&G&NM9MQRHAU zvmI@Eh;K7Y3R|)%f7Iy#+lBll;+J}xXmp2ms9xJMUK9s8!{9aTNnAYMRroqt!V@^p z`D$z7DqRTR+uwBxIbttyPUO&4>sVNVfTXllWHB%CMLzIu;o*b7)1Y|D^(=kJNg=EW z82YFZMH+iyi8OlLvwQU0Ikq#ijk04jP79Iy=}(fjkOQxEGam5<4pYEJg7B z7rtud51e6ZDegA;toHf1I! zS;oT>bx@PMUQ0Y>Va6u;wav~ZcXNweZYAeY`{C`qL3zc|&vXm*Pw?1TEkCpv3fKpt9*3gx6zqhT@qelESy;$()EWd zoj96tzw)D+f?X@^id>$|*K0^Vkvhbhr%`d|97#=oYY5cMTI9qIeIF){6e=#xj--CV zRQP7{Ix}S7=tyw{IoybmSAqI+|8_*n#wfd)oZUcx$F?c#g@7eg{##H5qv!+w#Q}HJ zCWGeeHT{GS6>3V2QD$!fj}b(pt~&gCTm|%O}tiBI1RigqI>vmN@Xr%h+hj0lRsly>KX+`lf-6i*^_vg@w%`@VBl%fr@5*xkvoX(rgoXlDx)Io35zJzg`1h~HavF13FN1&8=s1YY# z%?H&TMjXs+I?y%cjM&8arF{sePC5g{kmoqQ7Pj$lcR_-w4-w%=@f!jyVkx*Rx&6o?(ZZxLzg&r^Pj>s+vk1M4rSvAh_tQI2%+N~2v5?{F+ra~e z^QDwX_{-&>cltj`!IF^h_kznu!a*?{tg==(2eRzbrJt0!jvrToJC-EKAm4``2Prv1 zEx~}?hH*t?^VPAtT9lwk%$z+nj4&xky~RmeZ1s_9kY)`U`2m!j|H)L9=<97-3JN7u z>vNzuyFn5bQ$XTt4;8U#mREJx$2WW_?9{raH8;KHHqKWfaSBNY`}2Kt*_a>qUhi2r zYTA!B*=VR<0u}rH%Gng3nmUgVH54>{jHbwJEJSVo0D!7rg79=VbSb}NE!sR z#`m)$IlRXu{Fx!_CiLjDkQj#0>Ucx8_kFe#g3@&CbJGn{agW@oZBS7%!8bL4uAvZ$ zA5&I)CM_<@6vE4Vmm}CwF&XjvvMS5Tldk2DKM6a}#T}=r*}af36KNm5=maCxgxK~$ zdysz_G5WMC-#Jib;VHh27ZfMSG!0cgw$R8r`nYO?B@BtRGMkG1PFTR=JKUUD>-Go5 zA@h189@K7w^n*bBktw4sYIHNHLVQL(^w(ZxC>dC?#SJZ7W5k;mx}PfIg))1(2Dvcn z^8wMSp4PQ)EllZF;`5UL&yMlFJo4lfW%ZSuaRZdi^y3hHg|&W(&@CG2moZUEj7AHM zgYD(r!f!u@pmn63!?arr;T2l&sJ#R6VUq0}aXSmjAB^0XlE>`&DV@*o4lFhzd_LpV zVKSa6d1&9LYw5sY_*`)h&P7c?6SnR}EmWH`hpC!TV`WDo_pM49oXdQdUlW!MH+T?* zq7>fz$+tHo40p{5CMzRPJ#CFdoMva4RZ@+L6pR=%2S)`9v+(LZ>-5p`w90coAMc=e zLp#Bt(vx3b;e4D3)3Nxg@cZ%c9Ey16Cr^cBcKiVa9})wbQ#^+s1)a0-ni8Mxs@(iE zfAC~YPe`BdGIe?tl&HL6{uyrfD6~E>LI8t+_wxOK;hvA2zBuDGsrY4bn2|Deu7>{F z{n8BF5rK|AZW0g4AKf#FLkoKCrsbgS=-Z~3r5hVlvS?}ZXxu6#tEytlA>VjDWAg`H zT>tXi=`R$17s2OtRGJRVBz>Dfdusa2S8TfpiFm~~OEhi**l#JeS27M#?(t%BpQsP1 zpJl%Z0TS$xmxxzt<-Wcgz+qtI!GL$rEC2o*z64h1Ts%yZBkFGEkd^&F+f%1`0?1o5 zi9J}nF0_eI%ek(|8omyRXZ56d8won?nvd3|gtmZ{K}do^`4(*T5!iaG%*WxM${!*w z1jOp%ba_W`!(`vGTY$Hy`j-3g4vGw*WoV{_L}Wt{CBuH8ZEE3V?|ru83!VQppltH8 zPN%<4{Ll@cn>?D$5Hsh3p_coI-M0Qt+hwJ)WWW81p~}NH94;ylpSuYo|aA} zm;>soRFk-w!O(TOQkl`^gZxbbyzYo7VC>}2YlElug+G~o^a*}PBp_9Pq`d_t9m&W_ zKu8k1BbENH9s?9ZBo<-Jc2;ANc|apUy?DbDr@g~&zRXz8thKQcB@_&DD~Lt@Jvu9D zz;oRzf{!s4zYxxvT4XE<{!rtnKv7;tkQgXCIQCe*rR1ozNxs}6yZT-g7nsjvs7qDs zq}WtSX8Zj*pcqN~D@YT^Qz9{B(uSgUU&HH^DLliy_Wdzfj$1dlFaOKr!LGu=x$Ta1U5%^y17lyUJsT(W`+h&4|s{~l%U8#pF9DSuSk4x6$`XDjG-O^lH%07=h+R|(Rd9se4 z@1kAOsg)wfz6+7)Rx>DQKcwrrd&jg2Riql!PiR!Z27hov+VBa28NH>}50}Lz5OBVu zNEI$I6PwjP7V2LqE(<0~lP-Z>1g!cxbTc%$b6|Y>B+;E5HzARxv!Em@pkMMU-Nn!H z-O)#EhMIQ|$P+eBgR=ezG5>0hzl|@cw=2*X8>FtSL1r(%PN_K16I$E}-vy-O4nz`u z9%%u_LH-zD2BRtLFWo`UA69lDlH@Tz()HzR4BOqYOe;1ER&j~VfMWXWomCkVRmJHjodK6F~YG|C6bzf(@(&YTvPW zZri&inwch62;yvE=;{QpQif0M!JSpfoYJAmBwt#z@#9l5jswZ``dBX`DYP-{;Oy(` z%gCsVE@CNMqEG5#rt`e_9?a)q1lv~3BH9FthqX#0>h>xcl=5iqoHXNfdcvRbug`b6$%3`bNqGv^K#Tu+Jpb zuh;)o&wu)5)C4P?(#uxpU@UR)xgzV;7gQ%=#MYyjZk9N5N`{|tK{3x!TP5zuGk$!$ z*`BFnA7tOLcN|HSq&7;;0nU51ib3`r&Bu@5wiK^A7CmhIuIdAf*p$P2FbcrzXZl*! z`xp>~LD|6obK;f>wyY&+jNxS`xn4GHqbEDW_qJHG;i;jU`vKCI%gD@554NB7nC-Jr zm|COAQ{Zc$==+H2zKT<-rv)HB1Z8I&-sDF@(Pod7KX%$g_dAoCu~Z$mw`u*0UwATy z8k&bdGAcxxg^OB5q7-^IFG=B^`_r8JEh@Z8?+5llWXJ zVcC7;9l!4e5VL(ei`vcTC%BW!{1a;oI2!|sdi=Qa*Qy?bibb+r%I=tfTBKwrhhwZr zl;k!8PXlizqP+b*x&pv^T!I~F}T{!?A)*((Vs6LJ5(%3TrwM;62&R6 zd*6d8RL}{`1pL8p54i>95r{aY^da#3!*$(#FZQE&!l#7x{O;FbL`AU$iZR7>XnA>F z^Q%QEk(ihY1)mGrl}t9c)sP&TA4oV}e*(qWuL^NUWP~_Eq3GU66BnI2BM=3L&R(k; zPze)A1Bl^4G1BYlAvanLF-zu-jV+KIhOiqK!H{!2u=2;ZizB7lA3!mA5fX(O>2{Y< z499Kt?WL3QIMTgVDrM{qowQ7jS$I^S7$24p1D2nB-6_3+U!bDdhMq1A^l9tV7lRh8 zF`9Iw%Rw>!pQWm1*(mWCmivNp$r)?w8MV}YUkm`uYT*5|7sOKKJ)80Cb3_SH%bF5S zDQ03Q#qfX>qFH+YrbYmc3|oG&z5dlEYbOUf4D>+v0uYU3fW@1W_vYKDXn_8mN;FV& zO+j*W?ll@C?i4Sk+75~UYTw1`Q~dMA8L1qi9`1=}1`94azHesm5; z?|_;diUN6h-sz$kc0e6lRIffzdn+pwVCi*C3hxlUoorS+TR8e)bBEX3<|+u zq^@V3fb-WvQaGNKaaxK4nyl-%kTp^16Vj*H8Q^{Y!9+_C7UM*y4}C!Qv=$l`*^};4 zsBau+{gSn~ZK*>#^azUKcZTMxhr$SSXUSVi-0{k~XPCqDyvQdnKri4lh9%Vi#r$uo z>VHpF{dZ1PDY(7Uu<^Vk?F;7@6dmsSIggS_hS+I$yY45?|1wxRzfb(Cr&}mv+hK?{ z(m?#hjw)O(4Ie9xJ9Vf+jS-I>rrtDy27KtQj1FGuu_QX?sQpD{DN^T_S55KF)#ri7 zU?f@2{mF$STPL2ITetxNoU98h`PQo1d9^v5lRhxJ#{=6RmHCj`+-c zw^JFy)cn2@fRn5U_>EX4kI5zvK_8GXD_zyutM<(Kx(3*sOg$ct>e32oyc}fE zgtXJZ%WX~6_RG}q;3Tc}KDYGtBKr8x;Rd*|n2~7A`u zjH`KSFRMJ6LfN#9s@ae7jB;f``O%m;+^pLOTtA4;~x{6piaQno9k$@S~L#}tVx4Q8qKy|hPx zgwGtCRuiI#_u9dQ>e3nn{E6)?*bz||7nzLWizbyfTX3n0qDjfGv;K;y2W&w%f}`(l z1{EA7p?coE!)w7`$;}7*3L0yY8 zoztV~mM0y1w=Z4iTuTAw)N0%i>3A~`P-aM|Rk80hvJc}gDjg4XKVQmRF#1A;?H=Ju zf(9%0=*i8|H(M--peFP0(?frAi8$@4?N^CE=1XA(KwSdpn{t2WB=2`EH5l;r3>>#8 zy+F;K?^#-iP7apq*e>#aWxjG-@*U_t@xJ^Be1|WnLAHwtTnqo0*F%G*76cLAeS67y zUl0SMlR$!8MtBwF`>7M+P|H}U0k|&y!9Xx2&~XGuK^#`cEJaJ9BHn@@@GG-4?n2^O zX7_n;feb0^hjM+U?#8MVZp3#TcX-W$#~rD&0`qm6(Ls4aH6(NcWrv7lKo_#LCoT=Y zV%Wo;@h%=hQMA1)p|v(FeZGRRO#&2?GOI$i-~iZL!(I;4M?#-rach4l{QUYeV6v+W zOP;$16!Q_sUCJWp*+835_oEJhRB7AXV$piLiW>QsUjkj9|5)co%&Pvl}kr3>#vGQAtqyOG*che0t^vGAGPP&rgd zmu1ZINeB)4t!eC`w4dWt7n3b%`mEAGG5^(XRY5zB^(OI1jfv5@m#3Mp3Z{RA>XqH8 za>BXQNF%KmxZI={?$-U1x>v2`ku`E&8Zp|iH=UNf0)Of&B2JcWhA!k z+5GO&e1$5iyGGeJ-()g_GO#qZ**A*dT+jEX1}`I(-yVE}D`uO2ZBMgl>$y~VnZ6`> z(pzzlZq%JUriAHR$`8!_u}1sx*Xf;uy(XJ>=>t`TF&pTIHJ_i-o-}P3*`*K9 zqGRM7noOb8VMwK6l^*8B9_R0%zOA0HCWd!f{E-QgKEJ4YNi8~!JILEtkaeG0VCR>C&; z#RWa8wkrZ!Lx+uZBKR{i^oo{PyxEt}?=G}M7WhyM0Rk~ZRZWAP1&Ghz;JzM_Jmd#K zvgOL~ZpsEeSLWGvh+CX!LEao(+1npFL@-ih$oPgx1a>x^!jz}UZBjV$%;89hQPm6K zb0uxY-zu)Ybw7zEpvTrp3}tSTA{2!}LQfQMlQ?U~rbypL;c9V)VHqv#yN-cAE}Xv( zVVb3JEd1Ds9<24V@Z=dy-4twS?||%cSAo_5naPWZ!#4gCIZ8RhvzmYueC#J%zwxoE zlQ**T?|1@mx08}R3yO7Y4WdK1K32GN_p-Yb!jwZ{#*c5mVZ-X2DF(>cyl#V0_D8 zx+L+ZjGumxXwW=cf=of*?WLsG7})wyvKeNW0V2~n&dsQD*-r=|8N+y|LI3bMVO+y* zQE(B|T^E|P>!|`;-gXvRU#X5eil-GPR^lVqdfE7_`xU({Nm9vIjj-6F<7z?7#-g$mq5`^UVB zKKp21Mcs>^C072NcWAiQmHvK|M^_`|uEkdN{VWm4`J49{SC8{6Etn`??7&85ZiT;A z4~&aS>1)xlT)X=kJu)ae4-elE10kGoyNACfX;lMMUia}1wO2MRO6-yY-pb*Fob%1Z zP4Ssfs#I?<6g6<)`6g3g2M^pGfVnkd--#`immY(%bA=jm?B@36X9pwJ<20KjmJ_El z_a#!BRkrd~1XE705-4U5o(le?T`D;NvOfY_&Gup#yx7PS0!by18&$e8JO|{p<-X`B z!&bmRmgmXX@??>q*hN6o@u2m5O9E8+1a#@cfwGhFRedmf<88p#<+tv}GZigl{SJ|Cu%MU{s<>1| zR!`J-5eHEnPvg=1#gVdNMapWda#xM!R{gD@nE&dxs>FsK^Hxk4B3kpZ{f^3GOR?NY z2C)ni>+oLBg$E8raVOwUvL-jo3U55WdpxYl))K`OHuE5u3B z)Cg08{UWk@>1YWh+sj_k8*&R}?O#BqX}HF2q{m829N)a&A5UO^9;M>8m&z<^-`OeM zb2qC+2N@8H+ry95dv^$p;^H7w4UHo8e!@( zGFIN+Da=9~Q~kiB)15uk==q|DfxQcgNyZZHeQnfeGrqz?Bi&6YO1Ww%RsNOLIZ=^< zFl$9%4T_m+KYp#qjmr`hp4}psv}U>MD=BJ-jDBwPj)sIeiKqm{V8rHl&;%iG6bZhq zn8q|#pc89L%y)1}O{2x+OU9I)1I6T}i4_S44YKkvddV7vL&2pfT&gzd_p-)`*7{oUzq%Le*_ehyskrx;^*EwO$&$Pc>VIEnsfHS&gG&hD)E6g zXkg(BD8@Nz)BMNeE?n3P*GX$=^m9+`O^Kb1td@W+yhkm;t_~>Xzxu5zf{bP}m2orn zU5nMVG~wV^IfRrlIp@qb14cgnvP6c#X*7bnB=--Pw|yRV+?&YW@cz-<5fy!+@yp0x zTUZI222e<>Nx5IK-N<|dRRlt0?sFn6XtQb1m3)L(nd;K}EM#F)v=H9tMMrGri3TS2 zE36=OyG6iiItdP-geJGm2|K2BE(f0L9EZTq&^LZj=ZoA-(}y z`Y_)@Jn_^u?cB&xW>vP;UA6>@$tbRTC9GYW45br+bTxT1;n~+z-u*591$~QF8*07_ zWN?^GyF`#nZmlidz{a4xdvD1^J zF=fe#8CN>NuDM>@A?yKN!Iz{6k~iQ`rl$hyVBQNoAbrMoL1YQknIG`cvuP?!p`zso zcf3`PJZk2ZcxWnz;!Ggdjo*I^ErcN&z+Nm^;=60yszpAbH+MvNsQj@Ayq5pntthB# z`*oU<4u~)J+=Nph1AEs3R@3D~u-sUzkhkQ8i+ZPa0gCC?)b;lv-RUq?7o4FKg&K)$ zzLGRxpZ!XdC2VT_8j&1-PTs8pzfSC9Y)i`SpC0YXj6U6t-gGduGVL+s$mAmEizqOaLhr z@d7xhafQC@a!zyF*MHJd^ys`5v+}608ISy>d&&R&H6&m|!iT}4~?2X3=3H9 zZxMEosVa;m9mQRW7d=}}6)IXHOMldRyBG>e1x0@D{YkS3#iHN!{_&(~XlT-JW4KW1 z*HNQ41qnBHCyAI-aluHWE4&D(CnZWjF+{%Ei32U+0UIni(!A}qoBgZ@;O{IivlI4b zR{*ph#XvFHQML>ky`fT)x}^AJHT*?;DK>m z#h8Iy{Wj`N8^cv$DQnvZlX=fjMF(`Z^M37gkkYTGT8r&?0<%7Uv|BSyHG%u?xhT|w zQ64wR6`Z*R6K32cTvK zg`E+V9GI}~DF={ntpBGzDWm~o#QWIT4DgqyT!Jj%^avn^a`>!=4YihN$js!Z+X{TR zfRI@9j=lHP87T^_{Dc)sEkNxl8p0>mjWv8;12O!3+VGDaZ$hSmlCOsE;^Gk6!oUy7faRh+%HByT#gGs&-0Src z2x<;X1^7nvzM^70zYAe~Nn_pHfcQW$2dY;)QH5)vSvhS^|oR;62`; zb2XS^X8RPeQr7XM?mKtuQ^&a~D5hmQnhWfrBvF)wmttp=i2H<^ietTH5>+~ z+M&1hE1wFYusTIpr3!5}rzuQY3O{VzNI(7BQ(0L&lbf#-E?!Pjr2jx{TTj+|!`+{b;HbM{o@DGX44KXM^ZX%Jz;xc}NcNL< z`-u#dp;^M`k<{_l!>-DvwkA8?kIuF8FIhFjI{ML30C_5Ujgl;~^C&`&Oi8h*U$wdq z4V)51{pk--&PFFk!=jn2U&3o(R19drDrqn(HLtVz5wxJpd0r^2SH{(uRY{Fg*0-7; zypT#XK2f%MR7^$leYR&pQPBkx+Uf0Yl7+-;1{3JlE$8|u5_p~0Jz%W8j=Dsu{e+yK z!a1=kL~Anl>`=t4fmJdS>0`LS-kWzPsN&P$KTk?@8*-l!!7Vsd=In+d8klD`aRvp> zc2Ad>LYO4#Op@jM>RXn-OZXFUk{eZ#X>W}%1u`%)>D_T7OA2tfppS z6k8FFPr*Ob-Os=Qr6U=6ap(7L0_CQJj6#QEOK8Mt!iSpef-%uFI!6T~`2?gB$4SPD z$`>&zvxIUiCfl1MyW}T_=E56EPK;BXRGndoEBopN{&pcORkK{=8r4I%B(PMd<3!ZX zw_3UZLNL0f;lkkWyMDBPLSKcp%TB=N4i>&QxzC0Fa@k~KTlc|gI{gf4IX@pV(&4o9 z9L>7>Ls{R+r*%DoIQ)~Z;8&OHf!Z_f<=tm&#FtgD?;---SE#pZ7=(ZblkO-`OPliUW}ux6|9(q#))jb|>0$koX^Oh<{Y{|^2A zXUI-@jVovB+=e2G@*_SQP3n(rj;^od39b_^I2-3Ngrg6j=1%qf*BDfD%ouUmxpT#O z^T%|FEZ6={YkK8z*%4oLha6B$9)%7gBMmrmdNxwJUdl1i@ZKqa-gb~DwVfaS*_0UWc6yp}Cu66c)jSxx#=LTQy$Mf!yH)e3cfu=sG_PSv;2goo) z7oc4gIN~xgt-Ha>^5*AvdTxK{1ch z=a|Ov()G8?Y@x!nbcsXGX&Ab%Xv+xS!0qgqL;XQAh~^HNu}Fa$zgpT=Ea+1VIsp79 zYY1a*D4dw+^>omnm}Vx6DBCo4ek0`+bchKxL8>mJOqNmi-!b@3=W*RM$KMR#_b=E_ zd~4|9OQQ5*-rLHOJ{>3T1lwAkWYfO(^_it=MH^Vji`iv|4bkZ}q#A}ni)%RrdKK0< z6*HRl^~N)JTV}~gB-_~7=FvuPJbJ>pJJ|l>(48e`$eQILrbw4}6Y@y`a_<|&=9W+K zF__UH8-2q88hDI0xY7w=4+14085dmJFI6x!$2v}rtVE86BzA8|$I7A6tyO#>aldab-L$Rb=OC-lUhvdkzv%D_91BOFIU7xIv`!K7Ph)qK6Fi+IztLVYcg zd9WnGP|#QljBx1XJUzM=&q8-@2i5fqxu7m=3{x^{7Wv zUx+&lHgJg^Z-f+_Yb&zHW*izBGC?_(I(gYEOHa!Ef^mbXV^#e^pxfVFNq0oe-(+c5 zTCCqiaJ&2KxG2T%UZu%HgoX$mqJN8usK7)-w=A<{el4tuK00!!;t(q&avdY0-DuQA z1=aHEeyK&ZC;E-`&oYJW=E5g}s;87&m2)T|7K)ea5q?LAr({+ZwyftVh8!NN@N;n= zmj&<$aGZm!ONY+IgjAAA{XNv0vqz)B9a!EHjy03@hT>z{nJT;e#bZ^xGM{=aPb??WJ8+7cX=0Bw#;HPc*}rJDk|0km=H`yFY3|=dgzkn7CVEYrFVrHEhqLMoM`%rpxBMDZjxVCvMD*qBq^a|?@XhSkxV$>bK06j>5?nd?R|SjO2N4z$ z8(PRh7U^|Y??J7HN&I`AM_&;~Jh?BnR4O0V2gT&CnWS~>2+M}KX&c8*Z&DYL*D2qn zto(>-F6(@bDc7bTE|EUKol`t@({8dw|5b`;WNn^gUKrxYs1Vr3X$*GoIpJQ-3WL4R zVUF$M6LFPJj+Qz5YMM7TfV z&>5WODLQR@9XMx%r-ai^>0|2d8@L35P*;iWUk(a)v#N5$7lsIOglQXNMnbP@2tulx zUe-~!@4hf4X1so7h)ov4=Xf5l}z*S3Uo^?xk!*@eu0#>l=Rc&o27L6=2gMLpC>|_jx=jN5%|7Lt zX6GR7=*-`@?e7r7TP@UN5Zi)cZi`9tOM(Mn?vK!@wkRxBzQ0b5HkDcQKox}Jnd)@d zfnsVtTaMA7xj(!s(@i(r2wtm5;P{yku0#;$R30?C&IdANuiQWv*uamP{}zYNfm?_m zT{Q81hhy=x0lRR(DD2K5C?>2^Y9dF+r3UvjPH&=C&gP2v$t>wByWhN&4aBd$2jG6~ zKl*{Go-Xc$r~D!+C-foiV!l#F-R!5@C{a=}y0p(}OZSDp8Q{8ykpw}>5pdw-U z@LF-WbNCKfo}%hqH9j?axL~peM~fwusJq$+2SDIq^*dfabB6#|%sQl8>V5C?RGAl8 zAK~!9p&K6!Ss2$le)w@+B6Kdix47T6CHb5M>gAE!0=WsaQ_tmM8a_NfeE-+I{cU^^ zL`SnliW6-PFS$;t8jo5H6vAxey@6dJI&JBfd~a^?uX_G-d;xU6)lfP`;_>WRsiU`8 zde*_BD9iD^wZL<2f!*+N4gtk9(jSgkuNU#}1znl7nj4R1N!DyW?zgJsN>@>^7W@D{ zhd-W0gH_8h8;V#X7<{h$`qsUo^tY?gziSpQYPT2W~*^rZ#P z=t9~r$h%&(VFEk9SPa2$z1pCdsySo*bBVTl2svBz!hSH+q{}ocA5OH{lk!nPya{@p0L6^6$#6`$y(qajA2xpU zMxUC&@E;inx%3hKHUS^-+v zOi+yG_tSAZ#_90f0@KmWbB}PyfUaN9u(Pn03d0;E7VyoWm@Y1+0xYsyETs<&EOqpV z>)G8$_zqOvjVx{{{-&!8B>pd;LSGFKKx-?rgLq_zGq&G&ROKU4b(6{c9mhcgjC zF`tgnMZMhU1&THYhJP$AR^c>L4lS!WP7>Fus+`1?|FZ@AH-{2gWf8P%UHZ}~=syeP zb=MfgnHDel@sszWz8gk%p7@UNc+NE+K?acw+Zc)Bx$uwqsgMdHjXdzg7Vcq&)@SS$3{$S*qxfA{A`GYKnUyZ%#Pe3Oc=KQ@-si-{dTG#MFE3!N?8$ zB;i>W(=%`SWb?KBU)TP(@pEmc$wA(4hN-$52JdQANF|}uuNqAWX5tU~)>HY&6BzXW zqwie7xeZPKyjx|zB@U3(!tpl7_XxJv<%C}x60sB$kp&rVLx%ORACr}XldMI>4I0D# zve~2C^s!ld?p7Ruk2g=U6WnH{wJu4sOi>7dn8j;lO^Ur(*{0tKfQ?d@jv|J)k zOv)(72*UNCs%(xccAp+&w%_d5kzc`UjQ?pgNxc{bHz=kL6E(VWC=&r%vJ-l$X0t^t z-A=bRWpr|e3>PVt;}`JU&L3@XjV>-bOe;mzeIaRs#k-vzCvJ|H;Z00nkpL~_8M5aI zirIhn3#I26MJnRag|I}lT!pNp8-LfP-kZgU`TlD7Y7i9T(c(0@#8o_Z|Lt3FAc-S{ zR`HYal@m2;pV?FbJ$1+nC=#(5T@Gk&aWuv1=QVz}*d5Tb%=4k~oQEl8gc zqgh^9$jPIWMlb3*_YKt9UePBAzfRml@EK0d&n<+TpzK_8Fq`RGo^=@x#_eYf59de_ zBoimaxiC6)bJtHQD1eM@vd|Qb7seNw)QI0_%JFgvL8OULS=V|j!MCZCu?{=;{@DBa?6) zubF6o8n|(EeebF*c4eL%!4Z8HJ5Zaq*}mnA({QsndaD%N@A1#-`s-M7u}Ydl_xnfX z31??tePB6e?X`%!O_VN^Fa79G?OQNF&0`uprjX6D(?p~mADK9`8mIvdnKqKY%$RF^ zm2$DihS39R7uH_VH#`(Oii5m(h9exoK<&7AqH|!9la=H7dAUk#{Ga>4Sje|`$isd{ zlr=(PH@toTmeVXaqsch00MvXfMC7g}qx`M?EyDiqh|Yhmm{A7jCGCW1vvLldQniIn zm0JNVTj_vwrtzTu#AiW$+TZp5F+$pmPh!1_M*A4o6xSAGlT8E`j=+6prAn5sF9f$9 zXWBtAgcmS!3Zf&-qkRosSVaC!9mECG-Hc*O{t_n+s+p=RpqM-G6F)E6>29+&-vdKx z;nI%NW`S%MD501i^Bk<*zVARW%ki$&%xnrnWy(JQ3XqVu=|$xuwn@w266#851?XQv z&PEOV66Xq)KP*)3R-!{DSjb)K_H{e2dC?Iut)zGDi6%kWA*;8na&aGmPP2FA7oitX zuI@9isy9YQP2pZ%y1eJL0>v!!UZa?Oi2}3B%dOkI`ov@@#$WvCR!fV;R?mq~f!zd( zv4vNdlw}xXn?xSm(Vzox=G*mSdsG0yWyf=1J;vs;x_1N0Hkp13jST z`b<9R&;G>CIDTO^ao~CWTl?EU0-dTFN^@L{Q-J1rl7eq9_QQ@Yiw=7HkfQo6p?wZq zuC(WOy?+d(yQ2tu-oTU1IhXF^8c}?Hrwc+w;nOq&GvzII>4yoBuaVJ?BNs&>r{QyE z;L-MWsPxZrt$3Ne9B1>C@p96oXKSGBxaBi^cqnu9u~AA+m$kPQ+c;L63vbmx8`Nu| zsfPOu(iOUBp5oM1RH5D977oomTHKfUjsUOu#>IZzsn)=3Q9lLPcE5lBcgJJ@_H8U` z`S*!Oqb-7!Q6o}dAxU~fUd6Ov=wueUP*{$jWuSKYMKWyT^{_7?f!NXlC9oc-EmOK; z*XG)ls+;@>K`tFq25RSw0Ej&z@YkPbR>Lc^SHOn@z>r~sLTPbE(8s(#+Pzh*0BXq_ z_@OXUa+q5bGLqa}*#B%SK!)ZE9YxfgTb|g^R!jepjI{?%WG{ADoS5*mI8#xYu z8rtr{0dj+3Sz9}IzB?xtFkT5@@lfp0D^stWwkZ{J`ndd0r)@b~#Nl^M^n5#+>3k5p zF#;?%Q&#m7RZDs)N{kcB9d4}mTl-tb19qT4I+5i*>)ZM6mny(%N1o>S#+{yoWfkAC ze^q;7`zOnb(jB0!-@pIPsVa??t7!((z8i;n)wrDrsECu_t)4HPcc|ENk}hYMHD*xH zoZ4v3*tONUWuo8;m&-iF_h{@53RfEgn?c@_w-cCuCrg4;J^lS zocOdoH8!AVMLh>Qgb4t~DlL;%q-1OtkH!99*H9cYt2)%T!vq8vvr&7kE(IOopixaj zy&PTh-lyqzR&B5D`X%kNH~t^a&N8U3rD@wha3{eXg1ZKHcPChoV8PuTg1fs1cXxMp zg1fszuzc)Ob)GtJWml!@`@s+Hnrrov>6xDHS!>&x6H)t6gCxwL>*hL#x&+285++I_ z-l(UTn`!5RZlUFRn5XJ)TK5pN!^H+8h=;VG_-%Zi%B~>ZgNrQ^-(e`W=N++u(1$#2 z?5e7SUat1c#OKwV+LO!*y}Q#Tb$02iJG#&Gf{M+vT%XOavi|a;Cq6SO*iyHFOO9ry zO9d)up<9ejlu$r=VUK4Fq{J9;s9I&vTZN!0-6WfuV`){4%cd&pxXl9cBW}a;Socf% zgY~CFa=1H}P+i;ZL}3pnu*~gu1jjPhwvfI2OdlJQnUh1+!GcuX!Ik_t$_k<8wwzmx zzSH`u8dTyF5cvCHSv3&*G;5e5EsM^(O1^iOkHuKWu!&Xv)|%kHhg>A1yw$P0Z&>uf zA9oMUU`Ji5V&nPq7%UwXRbERrXEvHktbaZ`Jij0a150#+YR$iH@wX+Btx#B_<@=oZ z_yqTuujRkT{A&CW36WKwS_OsJR;zh@|2@us10)Q%RvlWInZ~Q6qosj?T8WXvDhIfy z`Skthz-NT4@hxD?;m?5mw~r;UR*u*eY7{RKCkn$!RvH#&PFkTHX$C{@0b_IpS27{o zEcV3pZi4N#>ir?Y9reHzbGN1SvziYXtpMTkAFfYjAfBb3OOHorC+}tB=eaQ|4+hQM zH_r(@@!k+0R`Fj6hpx5ESBQS zZ&_9kUPB0369iZs40L?X)D;Jj4>g4~TXM?>Iv+0Fw-O`m$B4l&Lm@}a^rFfH(WSOY zk%7`Sif-ZJ5(6!xWh2J&UeD(#bc)Ffc_%IPaE`n1%MV=cOL8z&5k<`bw%h#id;~O4 za{N-@_8VpB{OHzez3kz!Br@fxDJ%t!@ednRRIB(vt@bS#Kq(*nzdd_%A$ zw0VTVKXd<3f(GW>L=`*5t07GMo)}g7YMTy7*%y#rWWdAED3Y;!VZxBvoCN#t*}WwlR>5l6Xt3AH?M>RFZJ)K7;*Y z#f6xM3=7CWO7!Fp5?S?;Hqy=mH{s9J&JYis3300~9Uso=34)oFN$9}^s4@&S(#`dg3aY@ zC|L;6V;sn*~>UXBOhy7wFl1?Uur~By!1WulvOv7{{Z+-%W3vllNC}yEw`t z3@A-6e#N*KAvJs44hr=jxX-j}XCW&MAy*UUaHM15SczPm=V`}0tg_L9kr~3q==^S% zyy3OKfE8CrAqtBTr%5S{qp5jnK%jC(yH5Mg)}c z`&h$ShD7T(@KxG2$7qB0E`8mzwAOfL*t- zu1+B0hSyt2r&?CqTMBAi=`&{{DvAPKI;vJM-cfJj_Dp4pV&ga}!^hFG^3qj43+hMS-ka%DA!T3YaGI? zDvB#99r1V4+rVKYuW-?gg$w2ss~Ufoak!qz51nX^H_{(}M&+rceYC&LahV_8((}{u z`c}L!fayy9&b@lqu&9|LO{jOgy`>2Ts(nBn)hJ066ow^#ks>^8 zCbLMzshgFN64Uw}65&ZMN9k>#3cq2NyYx~SEX|-(2I3b`e{>8#%f-5$@1({sJyAmJ zI+ZGQlm~hz*V+cSHsz*PI5I5B_467_SgjHS)++QZN43h?LS|ufjL@64SwHaRFtM*z zu_h8p9k3V&e@W}@8^jcbQIU(AU}DJYi;M<3{X6FTZQgq@ckN-N|GD|frO!|TzcX{F zve#MJ3!xVNbAd<+}FGqK;Tz))W9Q2P+~ z7Ctp``d8Adq_RIC97F69pXzD=V*)`X2L{U}26X4fPQd21Bun8d7^I>NQW?CDemDi^ z3Iby$)h4m88YapT;EYWxN<#=0dCMP5$4c-?^b$YVjBY#wV@#B52^X`<{VWxiOsAkY zb})aYGLQ!srH$W*=CrDl831F}nm=M9Jc^dI)7lq8=Za47P;;o_=U>a?i+{IJAY}kL zS7z8)1$#p|?js)>G%A44JozN)KB4>?#YR>OaP0*xR1hEPJy|%yk*Wlb)jrznzqB-Q^^Es}CZ6W>xlfm(1G`tF$*6n>X?_B|!cteAr>>j0SK!SmZ&g%V4LM{6HL0QbT zJ10GHyH*3V{sNetQnymPk!o9TU8b?Y~fVJD7WbCI!dP1wNTs z1+OiS>)5mR4U;31{`i#drDSTr^n6U*`5pn7odxS}+rsmR78E%V3wFJi0@(AblLA@m zk^~ff_yg_=i*47N3Jj4h+nU*UZ-pe}eK0-)leQoW6ZAec~n^u9pH7)+XD=qpT2 zISqu6Y41E{M{%E%118uMj{_=MNk(-YaA0=8w~wLWJmlkV$xbCO)MRqGZSOSAqV}Lz zHHAM!9YH_6F@U%d8PbXYbyvq!#&G%@r~Esk$}zF#zIvBqs-Oq&#TRE3cqPO$Mlwbp-B*zNac$NXtIqPsOH)c?iNfAgQ+2jm``wK&ExUVV_52Q74hkPP&=|L#z%9TQ^*`o~PV#rPHePT%v|9t>Zq2{xCkMB#*l%x^ z-o7^`&NJbk0gP#)2k$8%OnGQiWXP66O5V!$8aB?942Hev%!dI#}*(@9v1y0UoGC%i?_lqsX)O29URQo2dcW#z9of0d6CgNcTM^!f$-G*6@ znpt0tb05;FS(!N{dzQ`VAtq37sGTZaJ|j4{9Jn~DY>mVkirIx(ZI|>H4L;? zf`_f&G6+6ty5i*bl_|9KSRZG&Qx=7HsF4X46jCh$&cW(sPg4JRH znZG41aZ;2A(ZnDZK&#%aol@;*7-C>Yiet~^0L;o@))AmB`thk&O$pZfe3={nWWSl$ zqQwWe3+x6dwFn}3S0n)K?oTBq`O3w5>!b~bEOx3k0ouf4rT_G&pt20hs)V}lrhu{u zSVMUCCjJe0zJ5lYM)!Mt4uFO&_@K6FV>e5)l5y&@?Lr68BGRwc8OJg93vw%85Xg%G zS!}R%Jbw<>d%rL(v$>_k8nr@z76obIVv;c@6_`EQgrkwg3DDA)qtWWVMmhUWq0WEsy=V^()08NRKI3&#a&~@7-tdx8!oE)GXrIm!0%y98IzMpd% zfHt9d)Bcv|gn4W8NAC!n9VIAZf)iik#&ju1DquU;FQHlJh2ywY$zi36Yo!Io=$xYcv<~A-M{eohbN1NRo!wtGHd0^s58GYx+R3;D_=7Et>JX3wE6cpjj2Y_RN56 zkL}dczu#}jb^zO9d? z7Y53ApxrHGKY*QE?Rw&cLBNXcKna&a4;g*vMaAa0cGb!k221PFQhz~3V2mUgdvw|< zZj5WzxA8-<%8#gQvtA(a<_aU1=DVL~>4A=V149YSUf2T|;EFT*ju}*mA9BIMy}T{R zh|mNV#P%4s-t7G2S%!{!=5}xYAOnPD*ts7n!FepH#`A>j``(!dScZ?gkdd-Z9(>DwVRlx|{?~V3G{PksQ8bvbWyXL>5>D+*oTJc;SAf<%TW$Bd z`DUXKy1yx;WZ^eJdu|FDCg3bSFp3J=WOr=M1ZaM#TIEKaJgy`UTV2N-?0{VaU@Q=d zoae8dp*nm9OUcCaaR5zdk8e`E6=P_o)u-_U&+wm8n%V{hG*o7+8CkK!IBs(ZAY=n8 z;DRa_82R~w{AvN(pydZ3%>}lv=V6taOZU_aPP+RQj2AGJgGozw7}7_p@FbO#o5;Cz zGQMelb0napsv&o~_f;!%qCd;f#7xu3B6vUy6`togdlogOb4(Z~f$r4);S00g9815c zaEY6wc8fmc1TWP#ub`ghO+Q(Vf20gF^fZ*=y!NY?x+%>W=*N*>;A_I2Xm`j|#l=%2 zp3+BB0m{$}Am8G3I9(y4q;7|6L@RL}$pke@4kIsnu_O|X%6GqA^B)7l(*$^a#*3Bi zhmua!v2FrV;h9`kH5KB`&#U;a&zJ+!fP44$_kT-Op9S6g#xY7sISy{zoDY=K0gaYq zeo(3?`1W`vESuk>7x@4*^*NH+mmm{0S^4Mnw8y(xfM#4{P1)6WvYMw|G7Jr% zeao&}Bsy#;yktmo@GA9|2WZmA0nOoNh9|nMw^uw~eJR|nM+k}%u z3Glt%w7+#cz(e}uL8)-?*|p*FD-A_?|A`BgaWHdH^PgGtjr;#8 zRfQ%tl3W;Y&?Ze`8962AjVX_1+Kv7kZySGA9~YPyaST^!MjR?w!Wpo$2Gwn*?W%oQ zMBVf)?+#9G*JU>8>9)}!bxwq84yz&b#qpO&{7mC_eaK2w*lu@C7TNUmr73*ook;q_ zeVF!v+tg}7mdA&<3$e1Ix-xv&I>WkCF-x2<>`DphRwKW}eX`qVGT3SjD!khul9|zf zOU6whl#P!eze%Eta>{SRuE}-fMX9~HY_%;`HT^rf$`W9vK)iqc%8`y(5e~AY^JB-+ zC_m(hPcl1n{*LL^Hv7?;Mt0h{VJe|C5oV}4XWReQqN%4cq{~Ri&Doy+GBm;daj0N5 z&1cEf*LZ`Fn!x1Ix0xL+i>H`8(hs+3l&^-;l`@8Vq&i*e>KX*f9A(S?PVL$$8~4 zuf&ydQ}*>0wwvfxMfmZq&%@#jxQD^Bh9&E-c+nB^VDViDB#0vemsH4pLdgsb$0Vta zVZY+G3Q6w^fdz#tSp~w4YE4g9$!1%Hj-E8;QzKF|BZh79HI!8m*my(i4;?fmN)v? zr0H=Vs`}()PdlBn`C^ymxeY+ne=}p&T)EZ0-=Oga#(3F7*>GV&>HEX-BaXlAk7po` zaSpID%TkvVh?4Bh0UACpWpCNt@%V)oMRbs1Ts9#uQ5`P1Icp5AF~(HNs=L4fvy&{9 z`3cVlvcLYu2P4R{UnaQyR3gst0%J~=E;R4KhtsLjWLuh9ua&uz=(C0x znnsRtOzLYCGj@S7E#oh-LiCwJ^@-ZDPhWp-7Z7g{Q4Sj-m5WQxPmAeTy)l3}G*Bn3 zp7i|8;kt!)?1^7)PtGaf!$NuPJUpxy=%$KT3kr--11kg3P>Ra#FV5eY3M{$C<=EbH z*WUQOQ)*J7IeXYgc%O>iv2AC}64Q{YnOYr4s3=7qwVQ&Pir#?Ya}V12(<&{?mw8vv z!0DdM&u>EBEmM7{wM3+2$V?%^hyw##3OcbLC*2eK-fLrE^UhRAq*!tf`ZpDFm_BBI zYvAFYL^BN+#CK+$nkPGab_y<<^zmXv*Uy+2L1mGJE`AGD3J4!Wc*(i0o-A!0DI>*C z>=7(0nm*zyW>QkM@hum&o3ZY({m+qHgJR}BqmR#q%XC2IU;BmgrwbfW^>UeNZ)neRjE z+tFCd%_0Fq2{5*XMEk%G>b1B|iU-yCZ0@;vD~TBi?Ra$5i#6Jr@%_0m zM_h|d5D8sjo2|=q&S^7(jozawv!7tqCYssrD1YxOY9$J;MHSRD(_FCkS0nkOV;FRi zx&(C3>C?!MUsY~!E0HaveXzST*bcv$>l=j6eOajTERAq4$f)X%TbZS!%?*BvpQt;9 z%|FDLLc0tsF!|B<`|;{`6y&n_Dn#Vckg>V!^`h#ld-D!foc!sI!dd3+PgDhG71UcA zFk17jkm+t$_#Js+)BC9o&-!mY<0*=iX6oflH(b_j!KGU-QsPv$Zd!aF7Wc#tPjOIP zxpZ)8Yz7{c^yUN<;+C0Y>v!H6ig2iaOQl50H84q*%43dPXt(;eSrdTth@{Fsha!G& z`EI#K8||r;sV2qIrJr*%Rzup!zTf>$=+g&GkB|O@hRY(4%M^ata|7SK^kj!fK3q_T zD<_{YeKv5a3WAfcTl^eh^)n@F@%#h76;?Gx7~;BReQu-LJROW>;U~whO~sS=4f7A4fhvArutc8dAW|`16cDd|EK7I6gZF4affk>D+Vkd zrBO)sb!$+0sGL?kxCYgfdOp_?$57aYuS;^-3X9gt&xgm!>^?QB)*+*WL2bhor?`X< zDrpbZ#}aYPfoUpk8DXWiXq9UeLnFcxmx3!tn0m+frC>t*HcbZpv=qkj&tl7IjWJGG zez4rIcbs|H5@v*%Sv3}IRpjc2&mVQFV3l^m%(T-!G{s-WH%prZ7OW_Bq}x??)w()v z@HsWyem_G?&Wk0QpB=5QTh3JH*B~h_$&DJQxVkcUr*sS*Y}+$?Ros3V4p^)FGq(M0 z-ovn~Q0y<4pvlT%Mr@^Ylx{3=+VHW9w9qtoKERF3CR$b6 zlLW@RS1}CIRE58{DLLX|C49fa%f^XjItaaMhuJOcf^U2djCtH)r*wR_!@NTx@IDB# zw&o2qNbR!ZRB!@^NBTC|!~~2fI+rhoxxdEG-iu6KJPj=oWaD519SFF%GsLd08|gIy z#&owBp?oTpnln7bX+uPMcYx4+b9eE$f=<42L>=^ zDb(R+eN!p@PUWkndMD4lwwQBkqOLB@s`Pkc=BG&bIFyfHj&<~`Ku!KEEYA<{tw|0|L^ zOwGe*9*-hDX*vH6Ipjp%*6l!E7s2;;Wg$cPKbOZ7#y+g=^YY${_0Fpt7Oecj9ps$( zN~YmVL}<`YBYae50Cx(04N;cYU6sW8eHvH$t2Rr0PzxkW^wULgxrAHm2$+duGIrWe zEOgZPiI_N>RVIV#3Dr?GTR%=~T2_;lFO3(rqK=onzbe7M*sCQUO@F2OU(EG4|Jq0( zJU^18@E?Rg4f80RqEU7UKfxRGAOd;qMF05OzYXlZDlB#d`CWhn4R0ofeOAt9w6}IY zkHf68u^K!6?YU_D2^fqZN{I*X1xA!^M0R*^9kkcj*vK61p~_WlKh-G)~_S*kwotE^o9 znV2&m!H8HWL#58;_bV`_wXK^1ejpA$BwD1vG<882TE*U>e2h@hDhEcUy;evF7}Hlm zg~aP}>tLr~iDrv)QwWNAu}fuy!vJ=JzSV(n1=J@QahkR4nxT@Z2u$Rlf~tR64ua@k zPEmBHpngq5s`CJv;OqSOW$IWURfB_77|zO5GBE+K-uGT;vZ{iBZY;X^L<`utg`hN1 zw7X3-Lzdev=XM*|u3jwd(H_s14LH%Y&pE0CjbB|)6EaOkTWW8mHtdxrxbPgzE@jpi zbm7lpY~DTy;u8bRPWLAR8s>s!YzUvxJ}Pe?=9qGPMg@Z>(>S|NnE`848XsTF9fzJOu-MjRcdbyocZ28WBYyr z>w~PjfMT|0ZolrN!s-K^rG4(m5*byOg3uS*bUB)Ei0&8tmW|$8_U@^Cb)gRdhuK$! zc;611Dn1FSo&E?PYpd~xs8KoW=ZQj?BHD7i!L5Xtr)9m|e)NaAe#vO^bh3)}UcB#Jd z#Qk%_p@{tBMU5aZW}v7OkBe8gGkzF}2&>~n)oAW0w4fcCsERKy^#-m)1Q=5ZzKl6^ zaJbuuKkq85bzsAwW7i^E8D8So$(B4JQv!7Ej47)6N!@qH*zMBZ6;l3NJ}!91&n~im zE?HtT*Yw*CAXW8;pH>sw+&f>-z01Y73!;C9^Fl<)=82fT_srK!@`9AXmIB5+h9r7{ znRn8Y#KyVfB_s{JCz-#GR`nIf^6x0Ea17uE#`NL%vK%YzU&(~7eSpIDlXs)DRoUsx z?1)fV&Vi%A-U7ztj}*WpW4wcp07Fz$2TA7T5O{A5N$CtZr!KrY<-PG97^7~+t#=WS z!J}4Cu5obCyl#5HTV_&9wh2{o%oIUOQ|YRO5JL| zlgI-KRKg2}_t8hI7&Iatc zQp?a*@rg-Bcg5UrjQO9eyKuue8=)5}24ZN?)L7(CKx6@Sc5?Rs(Y~Q3JB8X8BjghD zk0u>asW8ZIPMGyzznS7IE#4S)Oc69-?byl5i4tKO5E8O4JG0H3b0F9z-`s3&D`M_)kFeN4b z&}o2{Y_8nL9)rGlqOW^EKSco;&B5>}z%a49Na`hP>az3MtP%m5nZWfDgNCKBWzJ>Z zZ()plfHv-=!&khdn#{DeFT}i^it?uYEzt?IR0S3xW}8us_cWto-G_8vKVc;`|IV0PMqlNC!N#ySYI7m0fb#(9I#TFaDR z(ke$>`-qo*akBzr3}2m6LZIV3ew^_@QnE<$jQ?z{R(4Icr0r(GR;JF7?|GIc&G!$Oy@=8i^{z%|?^?*0{qz1nUE6<5be(PnY6EjUIPh)r+4Z09xv$jXpD?v>xilCgK?e zS1>^P5Zx1a(PtgvudCp_7BKwJ6x{I;F{Opn#U4a?T=tnZj|9+expb^}A66{q3f29- z&`Rqbpf&d<2!w=)S$t+wWuuEJ`vTBf9!79T%crcz$q%@_<1)+uT6y;sX?zJcQVZOZ zO~Do>AXWD_M}l~3^M_Mp6M)MhRNF~fhga#Ot`|Jjj)B59h5oomadbb9E@}k2dnqYG zrf|E!l`5)JDU>45x}mUlbT_2?iED<%ijQlc59rb%N>A!*Nks>Ww9iZa;%D6!@Om8M z$nL!kX6e?3XU-|0>AZ7r0!5R0DZ#_@XeDt!Czxn?=B&0V&k)WMd73PvV{Ks9Gx;tp zFTwFUxaFj`@K@+NIIOXfa6Z#{CONqZjdcA$k4V`=b@$Mt~7nQ)_+xxiSRlgIn$I7}g8Wp6{rcPzZ=~ZK)eA zYqLvR0h*y#Yp`B2#@SI%nXXHj>K#B+V2A8WdFrd#iL7U-U9BzxXgTAb11o+BOcs3_ z?kx8WdXqrFrV+iPYl)+dSL^nF$6}oP(^1xDNKtYnA1v}Q2062K4bK4WHsKz?UYOQs zC_x}v3x^_oA|HKru zgMVhsH}3zZROPZC(>2+;%$tVy+R<|lrg^`}bmLF7W*J`0BlkFcp2(b2)?D%Pj@lA@ zZ&Y@ZzAHygP&VQEgX_7fgVXy@RvNAHfj_9aU&k~ppS|on`g2(@2_1ike2lrUhFanZ z-5Qdq0rlh_NRls*`@H6LwUE3`vn5)B4)#-DK7!~y{p|LZnEv;=>9ibpat>loJG#C! z)$0#3l|Nd4$j4!>E&ejcbe z6SV!2==FFO=84JP(i)8=k}z4OLgAyk0)w;oT~$=O1VYQ9#+bgL4@CFE7;1|9owmtW z1Q8EEsrBT_m@04uT#ORCXnbgzY|e|vm5k0G5P1u&A`wEMA37_+DbtQ*L`r|@IKV%F zTAE%vgcJIL;Upy2vc^nUcbJ&Zs@E=l=l&5~8pD>UkO$TY(AB#}dw z7TXBgv%Wai_?6%jb@3W8Y+`R22057+z2vS)=Y-zDYZPb0ow-9^o&E?<*Fw3lB87D+L?PIxq`Zoecw9^Lk?AzS%aR+rSHKayAF6Oa_u--e9 zn<)l11xJ2YgS$j_-%sd^$tBWX(R->xd`|VJR!BRfPs)`HP#XiHK<5dL4T-Agm>(3s zJVAFiSnD}9jzuUHR@l}FnpSz8+015A<|P;jK-;DY#X;E`h)0!j>pS?@E&jG7YL{g@#(i|jg_+-T3$frn%3BPVe&3s_yH<(p z8h=>_aFsvYD<>XQi@*;AFW<>^m0uC}b1r`z&PNaEMgl=nOPp{KprNq#Du3|tc!%>% zGcOUC$TJgslIXPeUQ>iRnQQExM~Ve7J8@ptVNAG|BT2*LADoiED@9?rg1f(`9&*+Y zyhZ*PJp_!|?a)>Vk<=?|_6vmTqZVe!B)Xy!XO1_u>CtDs1Cs&_d4F6F=nq?U;`4Bd z>C%4o&((q&@22?*yO`NfR}>}giGuimF7<~{!Nt|Z$~DJ86lw|xop~%W76>nVU0*2+EOyUmS4yo&4Uz`;$tI^OTPAvJgVm$6e=^7hsG@8nsB!H-^1| z-o_(_QTw5w!`=a{Rpd`Bm>k;u=ip($n6jo)jV~Gdd*1gm+RFWsWZc$QinNW#*tXbs zuTN0SfY|4cd!Vb?xLZzvN}Ym@B2@_TvB^Z+zEn>82lU=KtF?@-F$^$9N4(v)zeE3f zL)bdYHK=OWq_F+jFs91^p50ieD)%bTv}NoI_Gopi`V1ciR?QQ{eV{jda9QXt1${C` zxa&{Xx@&KC0CQ*{9Y+69ZJtL3yjwa%G4f+XYeEaA*%$}A3t9c)T+8on1a|wisoEaI zy>&nH{#nt&5fWPValUZ7Y4Ua{TR`Z>aCcS zI*C%YvA7!DcLqjJ6b*@Ng4>A_Z*HbPfixzl5404GvOFqHeytxWY<#bYVjG)klEAGG zGK^CSQSC0?MD6UonR4X?W3AWWu}~2m(8)-6ih{gIkw-`@7&4lMcF5c@FB_7AF9YEw z^YKG0JxLF0Y{y z-=|`<^3{uZpF7q+=tLB?s3`CL=yclZLY5mzAS`))9o%f!l}&JN%MMDR?45_Fe9!pI ze>9A{V1r&&QN~h={tiq!qt8t|@K$G+%f3PeYvkMQatL@T_C9*|xQHhsVqKovv8P;$ zAPFW)>t4q%JXHz9wxid^+bwVp8#Fc@M7xivE)_c2wP2L!Fnnn|)`=UvzO(fETmJ7t(bj_BhbaTA{Zg5%|KIKKPEZe$h##%8PAp z1P@5RmIEV%98uB7+wu7(gG4rt?JKo`((3I{yMZ4g9w4b?$S;bKT+x`y(125 zR9nsu1TcgXgjdd=-Xxdds0^NXaoP0u&Qpf(&# zURcqxi`EFow50vW=!u?Z%$3xEn8Z>*~XQ ze_11LTr^Zbw3Al)Olx!G+bCX0gJm-e-4CIXf&2sU9dFC^YK$e<8bc!T^X8c`Th_^N z`&vWOv^;MMIEJI~zE>)r<$WaXj8|@ZUIP=@0v%*}l7WE1+V8S5Vza02*bciR`!5g# z<+QwPku3^BoIMD&+)#T($gDCcUz$*4Ixy)P526=ASL6yR(DapE=FPA@P6kBLJj!pP z8#oXh{+9y(+q@?|#S;CP&0bB*HJh;;$kCaXaWg3}6nuzbRsTs|T|gb!c$c&a@=09~ zkMgCCR_+-s!HVi#Pphu46)G3#EQ>o+-V!k8OFiif>_gpvVL4KL%>IG@9Y@Vr>ZZu0I|NccE>s(#V=OGs08L}*+;cJ;U4 zqKhTF^N9q;5Hkx8bUlR%;%}jOw;h1{yKAX{HU^}i+f%#vqq_uW17k!J{i4aPn=f>p zTEpi+(A3T$5naEv%7;&MEU0j)@$2n9p#E(lJE0ezQf(+6rtj9Vs}#&H#-X0p)9T@m0GepBxJjtts%wCdl*O-T9yA%k5&kJW!lH4M7Z3JcAI2KmRIz$bW|_{ z%+7rVQ)r1x^sdLmv#f1ue-e!I6@mUUp0-vlly!=B2NW=dZc@(#>OzJ7v8BBkL8ChM zbg7wR(U9TEK*;Z#Y8)j{-`_Y25T@?F;pP-9oJfF%gb(?ie*^LT3E^=N;q!)o3?Mi5 z$5fKF}BIaju;6?<=$`cO~lqrb(xlM zA*lDVn`)CZ15E)auqKNR==9i|I2XipSS&;B!x0T41l|I<-^f|sJ{=~5)jz14TfoD( zQ;MkNea(zNa;8w<_3yd=&3`Z;4`{5iMyQC~&UNl2ZeLhuWuCY0B?FN^o%!1~FxmWj zod5dIWH{W0c%TAZvDyU7m=uqPM|0P{JEH1zJ-!6-8F~c@Fb3o@`rdl6OyY%!hu9=H zV(iM^YKq6{CG+v(TbX2fNgI($ma*u+dudwJGe zV0NewQjnHDPM?g-sp7(7stwtH}EUg(XuHqIKC!Ql`Gta9>(}XYDa6i1ti|l0Uhq6QB zqk-9h=QIlbDWB7A8?KRF%yQoHGE23SX^`X-uKShmC0}R+7(<5tXnKudO%@eQ@=DnJ zZb%PKK$!%0gVTyWBr>00o(&lD#55(Kd~lSwbzf{X5}YlnQ$uc8g%LEkZ!iDUpF{(6 zzAXqrn`q4uI|qg&xxwtMebNo{HZ=k zS?Of<#?vUCOnZgVMkL<@O{(L{N<`BT71jN6Sy$^7Y23_*NW$}XE00oNEj)vG=9ba6EwKUJ}8v&-w?s*xbY6HlwfKd>)Zq12osc|cE2-?|d1Ol`biyHyb@1@-}_Q?!Z(8++z zIhe1WW#Vds(RS{&2$Us?ARux9lUaG(EZXg|qCV8>csO>#c+>ut=mfd~x0G>MRBH*e ztBH!(xtEr@aS~CS5>=`DxLIK{4^mg1oyh;eGL6NSwoHC2=sZHZCTPE5na@MWw z=ew4%CyHL!pMd1-9}H;-6Qbze*aGyK2onU`&t|^-dahE)K1H3?H)eylb6-CD9pC z@((E`ZMzFH&Ld!q0c#|2oJk&`7NczRMsr=F?1?1QldJJtJ8;ap-2DNX zVg8|-jIgfez?e!OekSAT&_2uGCVrn5!(@&J<7V^NA4f5@o!aSmzi7TOfLZDPRt&70 zzLy`;rA_S;xK>(c?fv5nIKB04&aGQd78?wBY_@v?05I*TMM@e|33sR7qRh44=qo@g z_ue(R@y&}wB3^@OH2ww{?!a8=(}a2vDjGEmFi0{-I^Y3XduW202iKXZHXix&r$tCz zfVPZJ88kgVd`qzP)tcV0*B+qB{Y-}(+%~O8rdP))917I}XlpdS%T3aRhF{K=riIy4 z=027toe5DhWh?`XIWRIm z=A8_4!~5tZs)%l_@r{E>RL>D9|HC`VjzGUMYhX;)qLOe2jSiOc*A;e-DV~>bS66m# z_WR-$5txKv{0IqP3@8Me94s1$fn7d6cLvrOCV}Qyq(RcgH}m2mo}{lr|MaOh?*Dc? z{5mC)xRS#-8jY24SECW;w+3M538H97+HsgD!3}qjVRh#KO-8|-lmfJ%jG~%*(b6Q& z4WI>P-A;@uuvg#vyHRcInfz0bCoq$|akTWugnj!p;PFg7CO|ur1W^S6xte5|yM+ET z!B)V-0MkVuKHIWEZtZ3lNkCzS{TN~w} zn=`lIS6_fOY5Y7po}`55E9@|IUcU4LpecX+;=?*y;TY=!N+#lQ{ZGf+>d_Qn{JoMT z{Ni?a*9dP3XxErd#cMyJrHz(5paDS<4;U@M&c-0dK82*BfH#Mh&DPOw12j(XU$WyU z@yNcsoz!<lGG*-g6p>YeKin9bieCQdd@!7C^(|qd zzNQk+cXQIc!feqLP{jN~jS=TdwY`RRZ{p~1t(j426wcffqOS)>^4oY29e%^kdI6T? z3AQFq#cfQ|X`J2~Z50ougr^v0kMQpZ!}{2yv#^LoPjzQmYuVTYH?i0##Kg@X^{*F4 zkmHNHHkwf)#WRJcf1c+XVGcunP`I$v@H2ptz#JUTAw@I(9%%JmO*f7;K1WL#GjyJ6 z&60V!UI8g>)UJ{N6Ixh7)9CB>@<5A*E*nL$%y0dw8!0GFQ*F>ka!%AaqCxQAg5S2! z2O|~ZQp%TnFzK4xjquASlFbO}`Jq0xsbm+^uEji%)Sa2aWk1blmPOJ_InFn@ZwP-7 zEG3z4qCxuYS3z^dZw@%8U#I=DF9h+_0z$G108 z2)OL4f;5eW7ZSel!m}HH;`Y1b{3XV@HUpE}zi7?n!6K2kLBKEQz+U)$_|&;ig9KMn z`w+s2*3%ejp>tlZ{Q`E(P-5Jlu)=$OS%=>^*6@Y5(K#2z&mlo+h9c*ut<4j5kka4!;6E|_}E374^cZ_L-SR>x%vh{inyiI3%l zyx^t=HUG2y-({4`@YB5~!pKLdukJpVopUS)i#CdFPSl~;md@Rr{(=8Xf&7>8#(5qT zxI&GmC$k}>X`H^$k+RxZ=jIDvo?{Q%%{!>oyH4v7w3wE z5NaY{@Z8=7T$4`t*`tbOZ7Iw7I;DY>n@$Jm{0^{lL%OU1NwXn;e~7ul&SB7Vt-eIsLUB= zm#EQn8?D0L8p{JMJITX74JHr4PH9g!O7a(7(C1*mg?nq@?&EREz8`(K0J{9tCVeKE zJY$Q{z4D;o7mgMgSmq=2NQ_K%IwD0W=to$7J2yb^7Wg{f4J!OKx->&Tq2@hiRE?hQ zQzpp7mv+tRToZMvL&q)CAt`jNo&=$<9zT&IVyt%q82PcMsa^PnyxOuGQtBm#$E&nc z1WEN}qaX@k6%m8(37bNUD9-3gw>m%Ri4|w^AiY;_o^uwodUE3zuouMtPPBP}2U2h> z{iUTCrgeY-6}dsVHxp;>-A$UaN1NanYu}z_4;71>lGotvmNXlTBJs%BY&@^9roGe< zn#AXCQxZm5(H+Macb7?;T1PguMKY2{(^J&SlRMpC0<*j@Q8Eo>>Y7Zu)+K+N>#hhM zPQ7SH1(ohmf!=9{Fip{U>zyvL=ip#Wrc~$5p9ry&s=RC=o+BcYL2zBVG4ziF5=|Go zsX}-|33GajIWjTS7%}=Kdu&-a=`fo3MfiUgqq!vE_plS7N!l^ptKLHnpoKX$I#z)! zQs6+V#Yohr44%1$J34Jg!Ru7ULjz-IV)${19kzRK%ztIP@5+ecM6R9{z^Zm(Sljo- z5~lxZDeTI2mVg*Cczzr%D`2%xbyJf1|8e$~L3M4x+AdD8;KAL4dvJGmf?M$5!QI`0 zySqamxVyW%1$Phdv2tslyH90R?W*%*{dsFVtLGfEdr0?`Q+LuYG=4wKLKSV)vrKq! zY@+4rA6Gk-3;e?d(3*F{f=p;3-v^!(uM`z=-!vPHU=a8>qWddZy4j#lq;?3DYb3|75uy8M$?_Us z^EY~)5!t(;EPp&9&JP8?m$3b|ie za~_Uezu@y+`4k=<*c_WUW$SONPU{WoteA|L#{1JVXG9gNHY7FLXx*Kkt zUAS?Km=(@mn#$#}4lp=8+?8WKb?`}_aoJFR_NP3qt>}W~!TZD9rRAvnbZd6MhPEcR zUspOuA>PeJ1);iUg>dnBBorL6DJU2e{5suPQTfYZ-fSEL#gwSf0b|C8v2?5OkyR6f z2;bqAFg}5Vflwm{k{QQ#GK(C!qzT+0VU0M3bnrRP)#T)v47MzG*KJ64OMc^{snDk` z@d)x=cwX|X(Pwj*q<1z0SBPeX;t?2jEj~I1=lWd<-V9QbwSmJlmwJ^y>=~^mXfJL2 z5w-~lk2RdK#EAPMP_kxAWnF0cH{4ovO6>50bHhM0K_2+9_+c`aQTRT?*Gs~*7iUt+ z_F;`)@xly+_Uc`ukfh8nIsaHaX}7WNgPoP4R7#Vcmhy=DR-U8(@S!H*Jfm}0xm|1Y zS?7~-nogo``n0tuO_#>E258vq1iYON4kUy=b-!dN&&*SYuOB>8{u$f;YuEPmTu z7tZ~Vl$`$;(6sA!H5=6O9A0o*yDyxRTd<*md+VZ&2~$e*Lk1JR%J{%}f(2Lyc~wgk+$ zVGd0kK6S5w)IYD|`D-4}X`P45PrKfgi6~Pdh*HrJ{nD+s3?A$Ou9DzXqRHU{%+9%$ zRajATOPnSOch!wi?t~CjhtSjVH5e4Uv!WNLRVOfp)0JSh9w)G(m}+$so1Mayiof@E zM-Q^Vz;O_RV#66|%Kp)sRD-I-&G<9%;j6wZ_izG#?Ah$KL{ym4E#v22e_t2Qi*&X1?YcSWKJP+Ql9WN?; z4K%W6Fq!1dh&a=v=F1t0c~8~I<`m3m&`Hp+W~r#~Q1Eb$z33pT=;Z!l8*YS|aI0x{ ze~P>=O@74M&?;SvQN8crX&mVfFMO4IGK2+As5 zF}loRufn{N3`>B~l%4F)BJ)|zcn`GjMoPK}#&|p-Biq0L-=+U47yVa!;Y?ZLjs{FI zuo;ZVDQ}8R#AJOi(|GJw1k8uY|HGd&2zUF49Aq@V~zpIk}(d!ZhdLl z5PbDT2R;f|zrys2XE}EGBH1hKo;jF17~4)!SmZben{tY}H#ScqWdLKu3+7{_?!MHc zC!Mx#QdoQoKJgHCD{hN-+lGG#9D@TSBLDI&eP^o$msB zQ3)^HZ|5Te9WQKuaT8-2T3Zi8+nfIkhpqde?(~sN4GXpo%gyob_@Nw_o%Ej`TzL4^ z#0Faj^2TQSop-BeZSur$Q_iMneb#cOyTBOeM3TWyJ{RjVksX+m&#Uz@D>i2+Ngsr2 zKzkb+5Rff^F+pHNuyBGyXr;e}QL4MTWwAl&cutjMBYQd=#3-w+6w z%<;r@PqgmQarLvyJZ6%~bIJ}y;z58d{9pa%q-ILg`JMjWV+yTPV*8yh2b+osNM4+2 z@^ZgcIh_$8r}Y<;i(t&5l%Zr`PF)O+Z-vMLNl1E0M*8+aB)WJS=(;yGB@3h$j2e!H=)$Yv>Aij`@mb{a}8>Knw2*r#CUL(Q}9%(*f zh060V^1$#Of6yY`+`pkv#`W{2iD&s#hw&n{7TyOhlJ+^n&2U3Hfr)D!Y${vklX&A- za4-Ha=s?V7mz0&^vh%f^)Ea5SnlJIPQZkYVC19-j{mQJf8fI{mp1+hMnZelT4`cIu z@qV=d(m#LB_rKz&uyR_(mTBNnP6d)ge%!;kY>HlrCgv(=`l98-^6og$TPc>8i#v!c z5~*oL7Ribg-$&(u=XUJfS?`3HHNRvw3%J?=_r(BV%evGHL5s1-?dkR<4#-L0d2|hD?V(;e^d01tY3DsnR95I-uOo zc)-U99ZFSXcY8;39~iS0CllFM&1Vl{mP#1ZKy9cB!aQ z+v!LxO>!C~n0k~Tdnd!H=piesvsCNwc0nH)BVMDgY5gAa$MFyr+CgG1^!u_1_0(O4 z$Xq{G$O7uf5MWF;&NmRlkPqhx9}Xt$T^6L)anQ;ZFZ-QP^ZA}owuj8$nExnM?ab>` zA}b&V2M6^cXDSc@irruaf#G86lT}zHB9eaBv?)dajd_(6>1Q_HtL&|%z~^K&TY!d1 zT4~5l6@GnyDFegM$owZEx*E*PHSJc#o=*ZFy#Cbe3TSsiKXAFr*7I@~BsR}*Wi|%T z=JU64Eb)IGGbd@z8$@Pv0JQxlnC=ddyD#Mg^+Wo%KL9&kum=qDOdGE`d4cDa9)eKI!mU(uHA8NWRPcVtn5_%ir*EPq9B zMOxMUl%v@zsPi+TCk?p&kv7hZsPBDun>E|okP9WyW3wG;`*_^bc(JRXhY9K~oa57F zoh0o0%kKQ@Nmw<+_7<2OYMI=ndOJ<eY%r~ zg-=bn(Av?H>h-D@1B*Z2KI^)Uh-zs*EX&17ku* zT};K4VsXdL8SOJ+Oz^wGYD+UKY>aGn;v0dx9yLE*N zKpy~&gwq)ri+LdLFOw!!Ver)$0a{U*m|`2em52K9^$X>Hj>Sa&8fm5dii~ zG1K?rI1*(3ryPdK*rW!^36I@3o#2-SLJcV0fYrkF%ODAGr%85=>yt#c5(6~rW;uyT zl856NaBZ^+AUa{?sL+8Na1+b zJYY<7saJ-}$rv$~0#q~vjXHXM%4bGPdp{-~P}n(Ro|B6==5NOfItf>@edn5ofH6v0 z0%z3&X!KgLhiarly!UkWxu`<^dpAI{j-rHj@OOhYe~Hsq_!jZ!!ghd#QY|Vyo%3WV zZyv|&oCDf{`Zk~xMmrL{J1cb|o^=!hXdWzKL%IUyJ+1{-C?3Xr&Hzm~PzSn*6?>l* z-2O+y{DU$;n;U6Rx)g(hd>>XzRzUx&5TL~`fSI60PabW3t{!3AK{*6yLy->aC27^K znTUNj@|gpFg2g5P0(X>6gl?(~x*YxkG@$+mW(Xf7b$Od1L?kR(nB3u23D9scbbF%) z&!K+zfP`<0&Y1!o;4Iw9 z2JBe@7wZ2~sv=9-<%nz&R@JPCVbc4}fO>PD?I*XA^>MgVjcpR0l9ThX!D)C!)-ean_nIbCAMVp)quVlt< zZ0GmV=xmp*s!-I3uWm5K8=No7H^Czd?xrRk*FuWiPFHq&f#0N+Be$witfz`o3vyss zyWl5Xcqip7jM8S|6V)y911=!oBdxSvp?~sSER+8qhk!GPbuX_u2VDjAKE84tvdE642h#x)-;H(#tYnE(Y$g@r(ky-$q65 z{dWk3kTs}Vn5a?SUfUvi)300iWfJ!qfx0Fw>jQIU_jleYwUrx8X-M>|K6$8Ue3;+f z80X1hwwLgO4tZKl76-^D9GOROj9bR7^wMTJp`smvuczOQSMxhG?@cxAAyykr;=pNF)&sNDjYi1{`Ks*Cjmw=Qq{>*|YpnjF0IbPXm% zTfAXS22U0o{&%KnL{@yEuR9kuRuq%6L$e!LUZF^iB2jL&znc_FwG4hvDnn_zAu(~! zee^B->VeqQ60KMF_<;hf#s{p$YF>K{H_!VZhmIto~g*1TtrTE_P(hYp~wJ zAt-l-K*u$wK$M-NF(ae+p~^pD@n2h_m!8A3KI-w4u-(!ohy4VFGHV|QD!-@%^S+=3 z;dtQh?Jo;M9HeQOk{q{*wA+7zDzchiw>%UuG($2SkY`942D)X%z;du!%o4<(hT%IY zgW+R!yF7g%Y$tl^$4;hl7ej6Q=Xn3UjaoR6MMq%yee-lgq7qxJ@Zd_wm!?*(z5UF3 zp2T^J+5(ILYZZYwT6>iny@&JTaL!@{%@D={)r_?Z2JfogSsnBM#z-Y(8Rn5Oxw(He zigTFqb_ zBbo%D=>bP;(jmJ*+lUL|_wuvFq1Ymr$E=g$Lmuk+7(DZe`ha2auc1s#iwsv7#znJ= zwAnw?dM{VUz@;)^8b*pbYXC|rJ+}!MBb9zQB5AVBhnbIcRhUo5*t-82GN{OIWW0sZrINaXDt{L0f7yAUd!Ym2i3kcv*m82zK41xaXMbtQ@@#iy z88D_d$0hl8Y=EITNWr;DePH`2tf(MZ??@kcwd0n)o<~ttjkopod`0<}PhK;_w-U4b zm&Q^H7SBNpu;16_w3~8v_rbpcqHW}#_@{%+?>g# zj8MrwL^&dZ80TpYpB|&@;9s&CM7~AEhNQe+Vu#}uz)YF zanCe?(*IEM<3@Ac`DpnA7P7RxMmkEp<0rYr5wY!I38(SY>z+oB{>_9bB8#Ni;~voI z7>(uq<@AmhQ=-7$4+(}WDK@*+e0(-a*2&9C&F^O+=|Tm9;MXGS5P5_@b14(9-4$NW zfA@l>7IQ<@Q6(Bin_sjLcAfm(x|1ZhOg;`Fm?tji0U`F4b<~)}QGsVH7TV_LoIJTQ zS?5MF)z@Nl-Qs?&+l6qgEcQ>Grh-m#1J|DfN3r+yMZmwyY>X-|sE6Sw-LY}|^GUe3 z$cgek$>vUFzHW}1N`p&&OQaQ5fmf$|if@?tbA_P!4m3kIbmlDL zF-K!r`{d3?yhVkexQIW@Il4f%$-DuYDg+uf1-UyiQ2~NK!)55iD+<@DMeu}D_`q#v zSUr@Z>PkSEDnR*QhTErBD7F><03k?RJd>DFHcl>jjpfy zRM`zkFmumz&AUJ6WP+U|;0a$lWzPBbj*?ahuh!OX1-z+P=n*nEkbF+?s0ITzofo*~b z>@h~#SvWW-qSWH%Q5Ab`9Epprgc3V+ddFD!#`Q4yk=j|%<94{v>=`MI%e?07 zK%3C|;`Dd)=j#1^%;Rl$-{ZXxa0=AaP0HwdpW%FY zpGfRECU*>nd+r}-jNYD?SXwMGw85buMi3KRn#fB($ahxLumOWs#58C(uYI>wC~KEe z#I?*A;_%Pd_FwZ}uwKRxH%uG+@$m8J{%>gt6<3X274$B<(n5y_v+iNQ{_C%?i*p*q z$K`5MX?KZ1n7u*lbGi&&v4T9`m8o>^w!8cR7f;?urN)V@PQy=9)&mM^kF(ZQ%@2KdwQkbFWDdKA(Ky zgM$YBffgM69Jtu47{eV6vyK{N-AGE^DUs~j^Db~-vv2PcG%QZ&*06V4`Y-G)Mn&t9 zmT!p}Yg?nnn_jP&4`ocVKYrLBz|FwKmTlQxrFxOszoyyft$Y~TZnwje%AeF|Kq%1d zTP-*u4-m?n`=8s8{wux+HXojjoA}9DsS4=sw9+tMIN#^$>RW8CCpK%mxyt zSC!c@SKX>^<4&G(LBp2z`*V|-uz~`IZrBy8dO#lHuWQb)wwLt*+y*yT!EbB@8naS0 z+T=|4N8`FMyu1r%6agMkh77EXk|NZheEC@*KMe0v5(!*pDFZC$?U=Y%hx9j~rBm+! zQf&t|hWD&~aCF#CaF2N*@s4WvHA5GiFx<4)R^?TG!e<(0b}4uU$8HFZ9(p;iDZ-levmVb$`p$f5HSRbn2YqRn*sIvjc=^Y z?s0NdqS?Qhy3$iXRm56kzD9-q>f4Sa(A6Mk0cK}KS)(rZ$VB$!ZTq<()5E2WL$TFI z&qB`w(tRerSaAT1ks*G}B@~5iwItGlAXOtOQD&}(v_}7&74!Q&@{<770x;$)JoZf} z*cu0p8&ND-P(r8&9L1CImeH&J^#+sYE-KJ52J`v?Pdd(|wT@QBG&5U8l%#X#jzJ9f z{nic`d~C7t3@|%)Jfp>9A1{#o6kHGEduNX9M)T>c`+rd`lI=tzfj7IqF@X3&!t(lA zuJ-) z%U@JR$;^h|J`Enx!!NsTap<$aCe&xirCdB5sPm;qR2=2ZI~m2Z4@X?0^0^WD{8(o; z$Bh1f@nUV9Soba#y6T`Gf|pKk0&pCEeE7fO#}o%|JcsA2PDI*wt%c-wyg}6=vsVrO&PhhaXn2!sl zjPFzw8_MO_7#Qibaah3luD1ts{P|_r)~XF_fsTL1cu|9h(C?j+3`d9wawFQ`r(4*} z3WrpMi|1}@i+FzrX2+JM(j=)Eo3x2ELWRC=7=Qh`3f6FK7u=&6XF207BM~@%Ee*kD~$15tx zVkGR-ax0~LQBp%yrce$2rVkBEE2vtFev*4M1tQ z_#VC4p4Iru;Y}Z4%&yu>bEio*pF_~W#8{rF;&7yQ;gtsJN@R+@1B7+9D=;SUd&gvE zQ?*k}^*pXf<=3ywPNX9$tu&`4tLbjxhJDq*m>R1L$|6ZEv*aaxIoJ}wRHnf>UYy!~z9N}O*5*s&i@>KCcxlc~4$>)uIhD?nS4 z#Bll@7R*+iw|vTC;8FTVqi^L3>{^%Lf+`AeEe-&b7r=^7E8yYs!qe(OB=ce3Ze#;! z$=9DRy$}(8vUSxdojq3y2 z0PPrLApW=C<$lHG!?aE7pBpK`@}bzG0vPXla=I@Je$Ss10NPn^NpbYNMjfx{KC0$n zu)YAa>(bNj5)&nROZe>HkH2-&0<@K^l==6=4I2^T{OwpsMc)8gI(zX`K$@E%DQb*s z8+~#bKqELFb;eGrFlFAz8yET!{Rq$;TDPIfc6pJ0m7>};P6tW9Y5$ez1X>OnT;dP< zTFcn&hx`7Mm-$ZYEb*)Vo;$HN;)+*Tfw=|E+yDL*RRP2FVS%@2qTSfzbcCeJOp)qk z8b1xNL!@)*-`V3ypaWxC63?@p> zW)2!;=wMm9bFyFx6SK&2jWMnpVrFYtxL`C)I)E`5@n{86k<;L3h$UDD*F=93rh7GmNg9o#5@ZvY~!8-9x+@$9M=uzjdVQH|BLckbkb^38G zOx&1v2*2xT8m+x?Rc7&uUowY2(B&6Eyk7%ckH7j&8!-#i0b$<@R7zvS@w9u~%tQd6 za(;;~!o;+8ef#b`Fos4Z{fuJ%``)}#c5yi)wd3L1m&Z?e;QIIJcF86Y)3R?2U{?Cy zrK%pwPO}(MX7zm;UQExAOMmL8A1H*NtU_si#OGb&a{B(J1Aw<0)wV1>klS)vGiiP~ zDS-MKm`W#g2!Wh9ILl*vB2=sjV8{n!9Ze)x*KYBWiC%&aX4?P^XJA~n{aWW7+~rS# zVJ2!3d7S_)cH5O0c`E_lxT(eY6U!?VKnpCn3IS>VEk|EgGNx(EMd<>kq4`iycIGgi?_J+HIQGJSG5W*PmK$0{+Bfj~7+Or&7Sq2G9s<8(!{U za5hdOf+(bsg8pdxS`S?(Gt{N5i=EapMl683_kRTv&{CB`9-_7huR;QJVo&6AHybM@ z#niheM3RIK@}bkcS6_;^|NYA$x@4e^)xP{D734b~@XX#~&@I}9EW-Rv`@lfjaDK(> z2#lHQ{5D&`+d`}aKk>6GSo^BykRzXBIItf77%ugMSyVgk!hov}p82iW zrZ?Nh0F7UGuBEML6f2+2E$~n+?~jvZmW9(*wNz8rGzQV(;IjbM;$WW4=!qYNr=4Uc z#1nd9xBsm1fPB|B~G_pN~C4km`mu$i>xGdL!OVeg>a~KNHd{1hTs0v&a zzoyoE=D=kD<}ol=4^ceHR2G-RZ*MZA`k=erlL_oVpb<{(Jvl$eX^NW2A^9MhGrtky8 zzr#;8N^YWmN&aH>&ul_hXOhZ~J|A_nP>L+L=?^%!|8hKl1O4ShES0I1VaM-DKez_+ z;D}qGE0ZBr8Mdqc9D+B7of~~I1lWK3{a;E|@}ho=bfn1=Sud!&3JEoS?p9vTc|=Oi zP@|uQ@|Hh>rOjS4BGV71*>bztl<vp-%snfgD#TG)r)>6gRchw(2KDd;kPW|3$!-Xr#`E~8G4y`wqA zR1m~UGy{Pi{CyOvMO#H#?QMCalG7ncoc4kJu4f+GSD3BD0^*w5LUNBN#?x`#EwFAL zjSgn$BuTme9d;CIxEjhV%o<@+iTWa3`$oE;n+i#wxWLr09}~=0Aq*$S-j}U;MrTe+ z&pw0JY;EdeUhXu2T zRbFPchQ_y`gG~;2$YhYqqarKH_g_0kq}Yco6=avclByHZ_74O%UuJB;;X8V3)7!cr zKw->)F!>rtVMr-xhm-Fc1qXonhxo~+N)&FIgJ9mV2Mm=P;^hdtCo?g=nvjFJIbTIg zI-2-T{N&}1UT+nHxo67wXqGKzhi#d7D;SV_rV5`lSvcwSeyP|_NKT89wKNN(gz`I+ zh-X01?2CUb^S1FgE_#IU_u2c!J&bzA#T3J~ zM%WbHOc2yRw*SpU6ei2Q!^dHzqfs^_kb9Goaf3*ARoQQg5*> zKQ)|;R<=>5Ak#L`@Wf-PoBI<&_=Us;y;}DLWKmbVIGqsdu+WwC1o)3wrl1TY8irU$#NAFd!-8%(LsZvCJ^HqlN8sVdEYzr)`>{+K1uNESbFhZc#d9CrW`cYg zD`#;4C4Lf47S=+*G_y5`ben2c%O@Fqd%ySW!Th@Zfrwr*YexEt6^? z{AecZBB=K*>47NvGeQs?Ud;Ofc{E&as@*2du;obxLH{HB(H>*SThbQ|aMHXa?>@ZY z046EiagJlL%=OnNH5gE##eI+39h&MGF zIDVcx{EF?{lo(Z70pZF`F}o(~xHqux3XU3dribR_RuOX*218=MBxUz` zVv%{gZ;&6{&Nnt4hn`UiDlP9p=J9oWzR2%j8{Kp)?s(A{LlJK%{-EO3M5 zOc#sjP@y_Qb%5rtA2KvH6G{eC66z-@& zb3q&CJ$&RO$^-?%l<`*UzokFYo7bTdT&yf(#I^svg|6Exqi(YCO;xY7-b81u`KKNC z>Gcn2Ok(~cCYZC&!{$%hj-Vd8cnpFXu1F0zQ3>GjYXNGjB#~+$93hnY53AQ5U%JV^ zCJ=bx3Pf%B@pSj;sMu%WPLJix=Jik`?oy#(X;GPfyKp&b5O zVa)es7G+LK=5z_@{A!(ZHa_AWtb=m)}~ zSUa8kgdU7ZI3^@Le24r2ky5FEWt1L*?&gaoV9a49_J?CIFvH~jj{Hcf=XV@il58-6 z9^}?PJ=SFi@`3gNFVdXkWJ(yl^?(h?xPaFdbWLsr6TV;h0%&o&}Yg+X*9wN#1aVi-?;HZenjPFlN3t7rCXh zvIikPMF3)@m*aB6%~@$_4OO-YbmS-Vpg%C?()|^y>0!p5~2KSz^ zMNzfjpa1#y8u5VomN&IZg(}bv^%v~w^oM1QQeuyj3|Oc`;suxIOrZTL?R2T1UV{;q z@$Olhznx|b{Eo=txxTZ+u{)!v$KQ1Yn4R-@u2MAiZVB@1FNkdEo_j4_2vCKwl7U%Q z_53hon?TDaAWoo$gWaexqDMcy>vBS?KamRDZ&7(7o5DAXN7l@B0JG!MVQrWD!ngOc z8=2@#rH3$)>c1Dz4T|O<*TkP>bIImb5lG+A+z&3T5I@_qBN3b0g@bGc2e~@bIqmaW2=iJ zTG2b|H_?9S=g6qiWYN{LLyg~?0JiOa#Y%x{Ybtt;=UBk%aCZ3#qhaQ$3yvWv2;;-{ zb2Dw@1kl^FoE5zl7}t36aeSpHJ3q2czde=pXzt*_!-41KwPu5y0L+f5ncT3JkM8&l zB5_JTKU_w=`5Bq$R-7M}N`JEH+NKULCLzvqFU)|&Vb?w^+w<`g|3UGTg9wi)7@;Ko zi*Hc3${PcSFC-YJ{92KGSvWTVxuw`eH|M_FNY>zD{8NMSJqMu zuK8r4Wo@-8Hit)Rw{xqmq0Mrcv+lDq3j{&d!xU5F;HiW*~s@VK{L` zwzRA`_yS`BX^h6t>no4G_S3jycfY=~!Vb3q?GGELedc*mTaS4L#vDymeZ#9JZ+1AO zQwo8@4NRMP zt<4AqW(Oj}_r$7KoJ1+{p{^uz*g_1K9F1sN3TrE|7!BX4g_ezt??o)&seQ-idt}f%zmx_&3g%? zG5^G!8edBLQ%xz^06;5!w1sym(3pw1}LXOY7%l-z)kbueMg;%w;Qw-qXqn4kI?RNn* z=B-(JqFHb>!((YxN6{S-fX3t!fzi+1i)W_$93NS=2Pou&C8meGl-F+3hS__Sc_a;J z0yLw9sa>JrPu%FtrQiDz`2SQHptC%3$pWPDYPuNrGC=Jh0qrsk=#L((<5i(A=~dz^6>5qADa*dAWG|-@m-$ljock z6(+P6lq<;>l3~c9Ocw8$Q-_b*2@MR?W%gTur0ZXd0z~L4X~nGJ$8Hts&(j#`=Co*Tb}*fBmoW+N>R zrmmipsS5j-{r|57|MyDcIp}AEjDMGGc}x-mo$3!B2Z0aM(8;R2+0qb1LaGcvD-&c} zT^p2c>e15=7VmhRhy{Tl;_`u|<3G8Qp-xRZ39vQmC#KO{cN1~h76*DM!^e|tCOehYlk z1b#k1YsHlk{xM$i6;!-5&0{+56F@_$YA-|BB^=X?9!p(T8UEws;D@8VWco(bYcZ)u zES6dufOcZP#+*@z1e}|maMov;!ruWjYy;5DTfK7OALZ-FLD5S2G}$HrTAiiMtr=wh zMtVb*5o@K}p8)Ptaf!$0HtI0hJYSG26G z0|psk2o#58JuaZ;3bqI_^yR7RwjKoeT?ghlhjtBi5gKPB<|iBSoD~IMc~YHc?A7nunTR=0}fc8|HYWsu`lfLvzjF0 z1e?snMyaQ5DJIto6A2m#P_POlwDAFBKn635n-S_|@<#m`%yT%EJP|56U!Q4oPVKP~ zIUb`PfH9?z?qFI)Z|}x*)7??`X`*ARzcUDS?kjuyp0RKVsgFKT6238iJ6;a|bOhNcgT_a33$lB~gf&1TH7fRlxySqx zh8`6r=5&ZJ04=^t#I5~PLUUzTo%UCDGa`USebOeuah3GG-WsHQ$ot_JK$C!_E>7U{ zmya{S>~i9d76fQVu{366vOD~{8~oq45-Dy0n&F*mY>;%d#!{KT&+wU~7(h#R78h#3 zYAwTrrcDn|FG&Ju?9M`4KlR<~rc3RF^Dc_o0a{%2Lm@|f@O<*6-xOhnYYae37M7st zan@?Z-cXd(H90{5XfXUBCU}zyS}q7=oR8=_8UW4Z0MCVqebB!izf+H=-|J5;wQ?53 zXQTzfpW_;Tx|$#EPhccfecWDR1=D?|DY|V$k@o?xCZ}zJ!g^+d)6_=!)S!R9y!T&@ z2XLUjoamM}^8s|*LM^w}&HcEpOp(eqjBX_Qv#kv!EQ@)p#7}^&x8MJzRJFFarAs`9 z<7dgkkjC*o3x1ewIhC!{;W{?c`qh;<plH+WH$gU53b%LMdIGysO}jy&pDO|k zecJ4A2+XEKYbSI(eJ-8Ge_d5q&Q0g-lgnbe9Dk5)?yNfL8NK=}G*X9W-Wp@Fm!f21 z`QkMHwR|!Re|D7X^hA?|cqlfm*#)VWa-g0tj#Xml0B!gi&vM=@xqC|pQ9;PB{R5pX z!Gp2z-S7aOqY9z64w8Y!BaO_{L>q!88m`gR4v8!~6{pJex+~_sS%MO0I%Bg$^*{`+ z`y5-TdsT)kZRiBgg*0=cQ628^k306|QN)PE^0c35l-|c<_HS^zhUKu^Zqg!jdf>7` z$*;6mb5XJ8=Bw4z6AYMZcOKKkA=g=I#IHHXKE+WP#@x&%$MhU&ka~Cruyjf$3sDaWH#_Z;xpgO-IsgbEUs9?|=qdNW@KI_L7EVS`ik2?`Ck@nXwL4 zc=PW6FD(9ROGLzXoS@%Zb4SJu$7ZvwOntbx?w7Sk&|4D*{wrW|0IW%c8<2w8hAhR)5UaDYp2Pt4seTUD$s2G7U?D?738${z(b}X6JEAA*a!WA$4O)J!1 zZsI>#pjH$AC&l>h1%;GOtbp$7=d2eUPh%?xch_Y>A<-=(4i&)@F=}3|1Xy5pP|hHa zJ`jG#IrfB`jvAWI%hgxGk@ID2DPCNQvcYl@2ga~aHATZ5y%X76qCHWb&*o+^{B2np zn5ZKiQDIVAI}EfBK5>l1h^OnVql*sje<6TM0D%d)9mBm*zHz}I7p~FX1!f0d9>>P0 zYSAyxjLTU3^FxE~-76Ui*WPbZIK!7Knp2?twpdd2;QW!b$cwQ4+0vcXux-w}Fu&zP zVG5&m^HXt-128+e_VE?!tdk*pQ(PPCMRNoB&o?YvKUf7dp5j3vj^K`fF_v5kDBFIV zt@tu=5bw~e{k`<-DW0}gR0E|@(H)3ffo^ZCLvzL~8$G_+#?8F4KuWoSUcFZf50!Ui zgx1lx{t*lGZp0`nL|vCYL$G|OT?vQK27fV4Q!2*zPWguCXjQeagNwIg0}RbU%&TfY zgg?GNO(YxG#cT+Ldw~|#A%|4Kz~&)=^?vVmpVEsfL4FY81WJ2k_1~-b^L~P<}yvVYI zfNME}nuS*Gt*jm2{f%dRI>*cPcO(W?3Unx5npDc-T*se&D0lMT&b4rFvVI%cw$-vS zG?o~qkhjuyT5jill@fb+`0iJ;cO?#mI;%$4so>k@>8o%@m$nSuaA~-G;41O_dUnwL z_Fya*)V030v6S~R?vnQll&Z@Pnu7@6|v zz0PRLr8Nvq<@ZU}+W}3EvEkXkj;9!vD?cd_%G9=^nVYTe_yR?}Rij*Pb!h36qk*TX zMJG=4%EVHST-4N6!HP?wa*4*O8Nb>=lTokT?19k zjvXX;Y$LfSQ4bJ&85OYWwsNF96yU+#t-0S}5WCyy4GVE-^A8of3|sp6G5^xhe#n6@ z!-&BZ*8Ay<*UK+ff2;xwtgbno&ibo!yMUR}tO;*o@;s4x6i+LmBv?>c@PjgGug6ad z=;rHsuJ^<_E1h;#W9!h-m5&Bt=RdN~V$E2SOikC(=jgO^=WdO7{7Lx^i$HsL>3Cbe zAb9xdHEyhar+b+93kR>V){9=DixilN5Yp6=dV3$w3ym-GP^sR+!nQNL!`#j8Q>vd9 z5Aq=`{B==Uh5(FG} z%b(G}jV&akP~O{C(PZ!#dgdE__sn9^F^)ScLH-!X>tVsHrY`$aeg+<+mgzfatFywY zfEhc)pxY)Jm0kCp8T#Nh;wwa&{pkY-1l?`PoQ|6b)Mk;d<|%Rw7ncMt%6imHulwju zs%MnnNq>y3`n#hbJ4V)oRZBAlw`SPobY`3zG$-Q&Z=>{#oTbZkS<}3C@na3SBhwgH zd`)POxume8zT<2;Tq5iBtgAv_8}HIu=3HBj+>JO^cZ?17z}1X)5TxcbErQ?W&fn>M zp^tP332IK8s=VdxlM9JN98K+s$ zr}5M@e)%FqE7nC&zG5}%I_>cDmy9JGj+GW87I9&&UI&AKE9g0YARiiEuyB2|T{u4O?{P&p^j$(N<#^r^YP*+D1}NqEi_%f3dlpXkRu z{&+V5H}vx|&${_a?g;ET0jJkaXZQyUS7^(wR%{i1y{>|AKXJ$i_A+AFP6s@4>c2 zACZh64`%SwF5$cQfTqO_uO#-%2ajf=DU6igK?u>>h7U%QUn?q+$Ww>~6@sGyv-9wY zv;L=jL!j<49$Y9Srtk9y70Xr`7t-%9FnvoMFF?y^0lrT2Upxm1PV5W#%Z(IVM>5DH zB`Ror@Qd!hhf&`EZln8a9*@N<<=AF+T%gbSbb?2W%_$K#yE#f@;u4ObbD65=;Na_6t} zF_?(=#4zYuhKl5ha`7qQ(&^A5Z@d-e;aoF`f28}ysNXI zF$y8fwdk9yQBGIgvhn|vX8ye{x%!nayddv`5_Ql4eO!3>sd@Ja;!Iwy2ix!p)v8;! z6qp@Q$YnM<2(zzZzC+b3#6ib=B~>=*JWzRK8}0sd+nNqYxWnh!3s>-cld?=dvlr2M`WMSB;MtpPcmCLrK*EV>hskjZaicrSUT8~*IV z17g1394KX7Q{dd!J@^Z^f!8Hst{ck!hYI8WgbwqZGyYIyE_DTch}(V?(PL2=hSoRJ(XRRs_)1CbJx12*UWS;>7G4vr6M=(x!;edgK?PB zE^PphB`tnyrkSTb$?@~qKHv#`xzTpfw&w0NdNus{i=;h)eupiXa(`HaX#oEAL|B0Y z&I~Nxf9LkE_}ZKJuWd>zv@Ut(CgO8k@3!G0UDJ%G9voE}UiGa@!O(>7W*!f|jCQ z&V>_ zV&}(nAxjDt>%~tt;!~)*uXBhK2=(SI0JiXd`J)3Czc;O{yi%h>#P<;Eg^9M-XH-jh z#h7|KHO|$AQ$k?O?x7XqwLKYBsY1TNw01Q_ycy~YT*Ec|wtyaI`?g9iGAi4Dq0^`C>o>$6utNjZx84&ZubzVNCk$a?^bH=K*2>B_WK%)u z^wD99KGe{tJ7A1Vd_#(KH?^mg0epyf8iQz5_&^pNN1fbs@^yFR_xFIZ24G!@9PDU^ z&SCpuBkXQ>vQdT@#fyoaUfivW7tF#*p-w!uA_E$dno@s?a^2xWtM}1lLZyRBcKX#Z zaxHQ8?N&?=<$`Si9m;zd9w_Un!G%)+Uy@5g<86Z?LiA@5F%d>KJ+q^FkmS|aNW z7sChn*qio$=6C)~WuYDa9W0Jy>-AsX{}n$Fdvd!Heo1qx=h?RDnN#}o@GR*a#~+Tb zH}N9}gPj16)&F%**NlTRz~+9>(}5$^WBvMZZ6pkTSQ=nSQuR&B0s1J80vL0s%a5RT z+-=tULio|+jC|2ZgEPMk`U@C0ldYmAZM!8f=2R`XUlh7VAy_IAbkYGd8_B)JwX;`q zZ0~dr1LkpN1Q>HhSnu~@WG!YkE`2@nJ_Nj~a^iO8{d|;;k#GU!OKO zGN3y1vg{JRSzsf6j24Jdw&U!M#C!)x!ToiAY7P!dQLXm60NF~I*oAyL&NMH&P?Nf0%K-j>&0=p`wzjPR1)ZwL7}9GFX$d|F1bH$ z25C59XL~mVfN^G(b8W+U*0(>Y&vbuNhlNCq^L8<`2P*0Sf@lAuQ~% zFPTD*LBqMa4}Rp2mi&m_OAhiXl<^Q27CGnk=h=Ofn@l17*7t|FBEPIZ7f*ZvumSU$ zMPAue2;vHc^T-XbbmdHqm23CO9 zk1*<;!IvBO8l~7y{77I;i(TqBrShxL&ft{M&=yw0|W!ftIQS?ods4YkY~^ zt{eqjPcm(g8dnV1@+K?LGk+(D5V@Ma9rrIUGxnXrU>@Z#CoSg*14vn(QF}ms`%Sh^A-VP*c@Ed^t>EG zw5sSADmNK~@z*Mdd2GzeSwH?3)LgMe0mgWn&s@@=hH@Ngo_ujZMncpz6iwoLv=Fl zUb|hs8W`iqu5Na3hrher(>d6VJ?I!Aqaq*>oc9PjEe18q>3vzUO{a&Kdi{|9?KJHgBl) z82Re8pCx$oP_!wY3t;(r;2FQlt<@4#myYf3vI1&qpi7AGvF$F=vEy5btyEZM-vOEq zspF7jk%XQ{jx8NL!3n^5KnWcqhwvZA7T{+LIH?I9A^@6guLiC@xyv;~SW<9iOCgZ1hPoTsA3UVw-R`Wo`e5G* zXxA=36r5EY;vD4JaiEPA^d|)*WM&u972a^q4m*3sB_RCgLXjd5&~%487%z%^!uK%D z1Pn=_;)G;&);BMW?_H{-+ZV`h-n4%O62x1Zzk;Gy24hv*&a0ZdKvO^;Vq(RI^;a_c zpnj!=KBc&@UlpLAe=)<-;lID)gLF2tEgF5dle=n-XeG%p>WfipYS!jRC$9y@oF)yb zuYeJt?-W!AU^-*7cWJLsPg-h}VKIzq?8%)h17q|M@82OGps5e6W0Vm0$u4*O9<7nM ze=KEbRP*Jy;D!RmTv&q(q#dQlgMi2Rdw%d|F!(g;i|FP}fL?VjGcq;|=o?@;^#3{@ zsgfGxJWIgc(i2l(ELOlYpb~Br4KwNzZ4q3y!JivMl^tnbi&R|&1oubiW`rVBk z;DUmF9XUMZ;SGO+XCz@0M4iF{XuN0LC_np1AvHE|R5{1+3;`Ok`uQ_+lpKeQ2e>RV z)^RdG134BUBV9f9m)e>f_$l{82B7^c$FGB2tX95!6@;)WT|fqCTm+3o&wE;Al>SCj z>O4%U04)i>_S(>gvdL~lI3dVG9T%WcihSYVonDmPGYHb^UbX{^fHfqjxY#e0ua&z~!va0(-Vwxrkq^{Y%_Z2HT=`hSa@FiJgn$n~v!>00nGb^- zg!B-5B+8a}0BE}VxHbA`OmMk)=zJ99ke%qm4bR7qb5n8+mxki zX2QheoJU5T&Gd;WGzQd!{>t@fuG{63b~m>K6PWNR_BF zG?7dmD|MZ+Z~7J#!;v>!+ePIEONL`)%eS3s8#Xqcq`)!EZH-jt^1f_7*bz?Id4sPK zR>G70an#7kz550xNyk$6H<28bo5K3*7<&yp({DPQ1Q{~Kv<>Oux~|?|iT*G$$6P5< zU!vNBVfi|YvBILesK=7W_(#vYZf|_~& zVULPSX}#{G3-8F|B}vX>z)MEwv9_&Jb#d<*pYKj@ImwCKTeT!1!n(hQX}3Xj7vmtj zbZU`rbY{|(L!pF>qZ#&yLUoIKqe#;xmEr2cg!>kuBxt^VQP|oP2tOwI-EkB1XlQ~m zc3HCRrMv>}KnqoqX_O*Q`*Si2VE-2*tJ>O#XR<)g(%U(_^FA)Hze$tDyZFQ z?x@Z`vnX_76BDb3>Ib`$rmEDSO~7|yT4J2Qm~(RM#MaIyM&~+6S9?Pe1dQ9havHaB zwS=vrALnUP_m(!(oUv^BS*-#0ywq6!=3+Hy0!CvNquXbmTklJ7ci7p{ar7m+G1R$c z#>@(OO2|4z>wBtO%?neq+;2Eb(8G@S-<#%Rr+68{A)`z&svhLf8pR`uW>dCNid96 z^<6#HV42A2ED8CAevrrHzvKLGNU*G8-5ti#>@c5@%9SU;y0`QAbjx4PXbDjoN{; zygz;T96?Kk^;+%aCR!QmF(!8anA85U1LtYXQkOHJlho++6#^C=qr@z3yR#>bj^FSe zvMFtG3>fp4*XlePR#D~UO=A6duttK`1M;FiwxP+BJw8q76bW?Ua&FhYnyr7X%n5%= zF^10cEl{Dzt*9dG>)BG28Z*ZH8ZbMfB5@SkEK@In1b!W0afr!@3vk34EB2c(@4Lbd zq^VMXG1Xy})l!8ljYq$Hf)bbu*walz?g?hKDl|!HM|IScpMWvePV`9y^xQ#a_e}3n z4roa%BL_9z;t^@hL-ib4-L8P9N7)t}8JiTfF=++G619Zu4&hd94M^pU!iIaAR5q;+ z0Be-LuC;kHyjOjrhbnaB>L)>Y7z0vk2J>!nX^; z2XPNf857(1R;4?x!idkrxG=MT1vy}7j<6kO4gF0^4M!9ea6sf$9;}?aMfC~(3kN=E zHR&~tmEZSI`%Mmmu}kD(0h=x@U|*$69mGDxG({8;`UQm^{XnpSqnYs{s6LGFCYJ#H zKz>Gq3M!aFicoc2csc`O_EAWeY|8Z*a(~@Qkqh(yF6kuU{q>n+Kjok#dU3k*SHDC` zf!^AIrD}IqZxe-sP|NgU<^$O_#tQU`vGZWa{Ay;B-wtg))*~ph{10m(pHwqXyG$qT z&BUh1iC4JO>Xs}Fg$j%>KS8s&1#ZkQug&BK^-tb}?%DB+Yts7nAI!!*P~oL~&5XT3 z4fg?SXP2xh&5{;E=o~nKZacJnd+XwNje~L;>pAOX8LcU__?8-eQKi+skvrB5vFa@J zK*)sYEbYcE%cq*}djy!$s@R$nVtW$DlE-Q_7K*X@)ih1YA${QB=(DlrDw5D_u|sa8 z(UOxEVcmw+pJ=f={}<9^BRkZ!$- zXvo%;D&qVKz57#Sq1*O(GP(>Zh3QNE&0W~+c>(;e&q6KT;7rqSO}5#buWc|mr*!QI zdc_7ZlV>*roPg=A%u4o<%;z8-?K0Eu_$L1o(AoT$^qsVZJ!0d1>*tF>^XQyYzcQL; zsYrzGGOOGvn*cI@k^}DoRbkQKlI{95mzj#l)VS8T6ZVBBzwIU*iW@5er?}WceF__F zAHs^<#P^}qTEUtZPE+TB@_yUtw<2jB%FrLW-9Lw~SG?ce!n|2H0!d1>O+rcE9Xd0z zo?|GheugK3bAVR^Plpw}xvLATF&gm7zJWW@1!Ge%>|SxeuaiEfub@H`>lQ|#__`xO zLSi|W?8t2xCRs&{%n%meUKsOLI_JWsd|07ffqd;*z&G=`FKWo4w{zR3M*7xQ|HGY0 zoUaJw%oQ;`S`0-Y0vXep2yMk^U|yW+cYEf#u+ghRudvOhf_CFUrP#&%_`4Vut#V#m zN(X@q(Y>Z~*X0!z2{=@xr60v`lpB2Tv3Eml?`RQ|4g3w9`+ld#VCq}-+}hYK(82Mm zv>0^S6MWQf(#VgAJA=((B=LXJW`P(o@tVQD8$C35B!*&|y`>PObEmgKi z_TZtZ`xgGC5u%NHxmWMO^=|*~hVftXo;XN6%b{gLz@b{@p0Xzy_UnLaVwKR*#`MN# zp|3_EE5OFC?0A`cjd|+tk{7>FDwdIN%Ry7->_OJWCO8|LHF2zxMPSU&Ni3cDNRLdUAJsH_hBq(yj2AA~PNzF% zrkUhX@&!Osj>U`oC+Zrp!j&^RE#hD-_HipXDMA^(rL$*77y%o%*}&}F;d(+|%DQH- zPkl~1Il~e0i{8?^k|3J_<4L2$dw2KOj2Zc=+!fWD>TD>}S zA%X1!h4R7bj@dnrYNREr1NH&6vg0#TJsi{926@`u9j24RlAyMT#|Hg_wa;1-vJ8RNKn@ zYA5yPT%Vuca3(_Wq_)l{rIC;?!0f~Xk~h>(=a_N8o>>v1Lk$cMo zl3{sc0P`MtGY3J{_?YZ=)|8I&D_JV>3VT{s5egOAj~qx#1nW=Ay-#6%2Wh+^$>@7o zIfkpUf}usT5?Qk6XaqB)u5IOwtlfpvBZNs{_2l$A(f1<~1fW?=+MG5cIfsqAmq)u? z7`o>%pVjrW@9|u|Fw^wgFMVEU#&roMtahp1-Xql&-aF8p)(H=Wi0T{{?$JO{ZhFQ@ z7AW%lvBlU&IvbcA_TRbvE52kq)f~!iQEp^Eg}S)xH%4;&+8Ue&IfaS#m1^V3m5}=H zIRCq@G_14pM2mx`L0Q>mL@t{Dtunru4^R=fe^zNe6!xCosmU=TZlr&VcKp*Is%_ zp?XQ@W-Kxh&WrM@GX>q}a0_UHkB+EdfSH4p$@@VEZOUBPSyQ9l4B0A&JJ4Pjqmz{m z6PO*7Cs0$79PzOrA$(|o7D35Jj6~jc*jbR5$bcHR{Z62<0=~BP>0{Pj`{t`}E#HD` zhM}Qt=d~sSjxOjN^DWI7Ab0cEc=4ecJ}IQF&-m$1=F`X3MZE>PubQa^$ohDwHEyU1 zxNX3gaC*?7RM-gA`ax>b(oSbpC*QJNfBBL2fg)}^I2K_HU<_FD?Lr{4$Q0I$Lzb&q zl777w!MOD8C;h#d?OremgI%R*^e|7J9APW5&hv}_5`Qq@cE?4oai5{#}p8qJY` z^Rjc(xiEg>H;$xT11I0%DOq54xSAnWD#FDii3|26Y>V4G8wt+BJYhre6UtF$#nkK@ z-WWi9Ay@w#=f);O%N@H_G^Au1aU~Xt|K%%sn5&j*a}X+#UP%j??PTz6werI1-I_F* zQ1&!ZJve=0zc@&fOBWbzIuz{1S{nC>$A+&e=Sk_00`{mHF&-rvmiiHxW~?#Dcg`RX z@M}~llRVB^d>_a4BcP+IOZ82pSp(7SnaYnmS7QI``@iA`1o4~)+c?(#!4|%NHFM*T zAjC!nQCGO(2+2o)CemEr-H+uZ2^rl{nuiV>g3N0Q;gKpmnqeUJM1V zdwPHAf-87K5#jg4H^};yEOtNvo`C*~8F`u(Y`?{GV#m0fJ1vG}UM%PO33Hf_mCP&>TGU5 zIc@{9vt^0)BfZaFqQG^2NC=rf%9s$HJJQb#?yKfOEM@d(Z*v4E4eoUlpS6cD)Sro zCI5AKX&PFJH9%7nRbR$cqzCa02)6w8WWM|pY#HFJ~!n2kWWQ)%mOqYEi5ZPcm1bYc(#w5rHg z*kvJ1Lj+3d5%1YVH-Kiw`Au{(z6T-GtlooSq8hM62MxIO*)_(a^jJJ`n~USVV+UwV zZTsPe&S?oD4dHaG<~Yg#Ehr1o*^{c|I?PP@WlWY98lWltgt$enj-oe>9vIzY#RC-g zL1#4NWm-;9*YQf5_T_#n2L2!Ii&tPJhg3|Io2?*3zAEd2ur8E`@+LuWgfMrN)=;%cCg$YSoaE>{|4cmyJa zO2;{`Pvovjg)ZdwJ9#2ybij<8=B+P(c?Y@{?TU&bq>I%!{sYQkaFUwp7zKZap#`(M zIg%<`SsyTFwQiE}+a5TUV1GINAwzH_38fl>BJayynLus($MEE9V9WxJYMyA@_(yzA z%!u##rTqPw+ylk+oDae-Y_}#d!b89qQKl+Ob$fWOk7#+bEvmV_T<#xWKc1&krN#awQT6RPQe z!+16u`zO8;-gz#3eaKEG9Idh6<5k*miSFlB&}mF7mKLC{z$vlGSeS#AE?9N)DQewju2TIw`!>=?ShK!i&kqN`;^GC-R#n_BI3&ykVIV598jYy=F~ zpkZGJC5j@drMllcxMJYId<1BU<>$s)-jG8L_aSB%?6; zBtXNXI4+nktt8nKwX354CMONhDn28t4>eY3e~S4T5dT7Y@TUDMkRaaL{N)fm^-qQ^ zM5sNDtZ*+c_~m-dIZdp;xWNv|%Q}cxE{l7CF`~$u3SwSb_j%Wirg;vdfsrBGAVP@x8mAVVDd1pHXh7FQ(8`q3Z)v&)!ea_VyA$ zJ1FghFZ{@p@>l4E`5w`hL;y|S6e5U1k-rrS7esLbNA8c)G8Jh=k$oduplR}f6iTuE z2586HPkbgJ3afZDH@Yi{*ZvitNeUS{F)QryNcUppF|KX=1ZdJb-Weuloh0jbRlP-; zeY*f{ee#Z7&QrzK6`eK&qF>t#pj9@k?`^Yxhm2-s{*tWI_@~cOt+o$ka1&Cv-hhUipg`XK_DQazxSpVrk3wMJ; zb*55vq)Tvv;|tx_@&Hl97xJ!=b)nZySxZ!6kpshOq#5pQ8kOk{xk-nFehaklxi#rL zO=6{9zI*sfk9x~zin5(Kgam3Ff1-yDzLpFg@gfdrog|nf1ekp$G=%Xh_yi=f5X1Nk z5BsaGh#_m9D2A^VdW`wMNY|2Y16T4O{B#dClKZjA3U19zcAd8G2QE}fJ3z=3QozU# zhZ7(d9dLw4Ow(q$L=cmZt5Q!eGWVW8XXLr%QnE`{zkEYlryx*B?g_!#eb@1&t{-i{TjKDRv3gw9;dm0 zGvtXlPRc3LMTA7_rJezyKQB&jCEOi?<`V)7T{FiFjpoZQic^>h^imQFCjU;G2doW_ z_gDRt807I=p)L0eXk8<>UJnWip=t=G9aA=hsl8O9{n$!9P?=Zf9h`<5x-fWOVcn^4w!+MGuiDjG&QlGboML8L<{>pr>+7D;jch z(6LOfp|v|(LhFZK_^b)vWx8T}#VZ$IIRnwzG@>cc65rFjTL%&EiUeDx?WS%&LXM&= z)}7ZkccJ0vaDJR^?(^RJzFfG^VIYX)^OJf+?fxv4BTX<&k9o}`Um>O99Bq!7YFX}_ z5~SiWj37x$CRPqeyOXEQDt~tL%vGASJ);MHgsx(I)EOFqrSx6p!-Qdb5Dt5r)HC|{&zNZ$iv=w2!*?DG+!KuMYVJeq&J zyMy&J`^>pr zqXdVH75q@ho0mZ-LZ*?~fc({*NPPojO0vKn)P8ImP|5%68k7)P4~=Cs2c3esV9x&gH= zT1jAp3qqogq74C`Cs_x+nZZX*<&P24CbwZ&_$@qW2ScTXXr{M~bU#WYhDC3TeC5O5 z=C%7**jp0xMeU7(z1)hr1^%b;x!cW0a=pn^r`xbH(wXF=%N=jyz8axfR!JGs?1ZZO z?Mmv&0^U6QGwm)~|K+B9CrJfp1Jq245woK2dJxGI(1w*yVM)~tInvNCYtN%_(aY1( z9*MdLyrE1VWthBJwiZJz%#Goe8qgS(#c}vaoT9^r^1VesjGgl^Y)oH8XPH3CqdkmW z!gv`zA2x``27$ZafG^k7vpb>CPaO^H#kr1X^p#O*z+#Dd+HTgKmzIfH6mqB= zMjy;7y%X<_T-%r>>Qth5*W=MquxJ~qt9gP@J>VFYyo4pFX6!^j(wWcl+v3L-t;;Yg z3EP$Tk}2LglU<(?0-63-XuSQm~kZSs;locck@ ztji(HZ*TQAXcbKxIjmzKZ+@RdFA|$bvBw*E5Q9DwBsC&Dwe`?$<*Xw8=(L|F^nnHO z>Y2LSS$0&HLLI|kl;iq!vrkzc6&?Sbi5QmP)`e?I{b*~*FURk)S5>YJ@S;~MqWo@4 z{o9L(8J`2)zyxd4ZG-#DX_pNmckWSPDAc;vYn3alxJ5K#X}~Y2tx2FtFsr0BE(s-h z$>5Da2&HRI*45*a53k*#KZJ_7-S4Jf3fuQg^>Fmp1;3VRv{k0K+$Hs$89KM!;~lSm zBbdIIz-JG?fHHR{qOO^MiF+<^smWA90{^TtM@H6h7Rf)}l1A98%oc z6*M^sPc&qHRF}8}j|9#}jn$H1IZ&CxoD2R5OtwW$KAFjw1^h!#u+7u=xbL@UG;gRa zyhnSThV+(0@gIr;>0Hn>jy9xfym8&fdb1a|6|Afb^;88vBf8^HOULuzWBPV|#4b1H z`YI*swC&VG8*Hu2z&T!UJEIzT6~%7KT87r`fK)R%+1MsazDaKf{WZJ5CoI#`QsA2g z+n`NPAe3Q3nOi4(T8WmC{#{{i#wsDw#CB0m8s}gV=a4}<>rn?ZLQ`DTM(5Hq9_Oyd zoetC2r=1igC{Y|MBdU=Za>R`-&k7WrPg3)xDF1g)@vnIg!a(1%UA-G=>St({{#bx% zZBb;LVa{iiIFh|$g_Le+HD1Ce*(a8ttoF-usGjVdYU(w5~F<%(= zfiam-8%=yn_l^*|!e!gP+F`Y=K#F9EAbL;9=i2dBJC1=dqDdgK6O{7b?dXI(w&iR& zyRxb6v!-sT@&fW~S^I4TfiZ5koaG?eBFE4)$`40!S}@h|mlQvw(HTd2a%xh0PJt#= z1}Q$3c}8jz;KL`7&74YHo9vgG>JG&x_Nh}GOUJ`r0<)vZ+h@}pN?Cr9a|gGLhL@an zu*3e?g947KW{jB+9#J9<9Fs8#Ew(R~`M;X>4JFuM+ocOJ)BO*=R(=H&dEgdn3x zr859?lasE+?BWf1Rr1?TAb6fLQ|xz2L@}Sz7NV_jnPm!!t0Zr^mrp@KJ!SbG+qum~ zuB>ROQr)*cFXs>2@?$?oQBjQ@bfb|+4B_n+Cm}a8^T6i|w zR&(}Rr|sUF_J7Cu-*x5F&PiHnQc|0|ac)F~BOXKA08v?!#J&I+#JEZRw?RNT?=Qbs zM>$-Y{`s9s66t{ml{VC-Nr2pMhwyZJ@jkOgsZi4f7!ycEs#YAFO$dv1DB{TXSwQ+| zX{a%n;P+R)2%$_<-cn#p5dsLwRshup^$iE5#TJknFhe9KMs0OxXW@|{B_c(@w)wBV z(KPdp%Cvq7lGVGhk=xMXt3tMdmYhWtIzDR`w))utbc{Kp9|@kB)r?uliekoq{pf0% zfujCOsi|?JJf&N^oLd9T&Uj4^7LWaR_!-V|D>Vwg@8HTvrRu_8tDNu%ODpY<08gp@ z)i*@ca^|$jjpll7+0P$a;CNqE@3M9lEv*}wXd7J6XiR`H4{;ktB#k%>J>8D{d*bTj zlB_vF-8=G2ZA*%+;SA0Rz?ea05g!36_920Izh7OnDRq2{uNBujeLjPGX7@EbyFk~; z^vx%%R@t109JF%#Btv^*PI1l76sCtaWV2mw??|qv2WBVNXE*KLdZI?(LlB4~r^boF zvUY=q7BL)urVmasRlnXF16WrgbJA*GfR>41X}Rpy$^Bd_@5_*EpBLA~b@o^P&;%W} z=TISdu}Zwr?V7+a?RCPJzJ2~XpE1E9ispnN7tPE9I zwQ=vU;Mi*b_&c=5#V{~!qW7Z|OZwl{!SyVP@|{dSwl>vMTC=ByYApCc!2Z|wf5lJk zJ8#|UoS=ZKG}v7w)X(FX2ZF;cKa)5rk1WXEtIGg#hJW4D%-RcK_CVOZ-zfSi!6(qJ zRnS+5=4ir&pI0!FF~Ne~kiVI-prsfGwUcQviDQstsTecE73ci52^elrYNikTUOHF6 zn7ut>-6PvTC6!326>yHpitNlhanD!^-90FRNK?TgpyfxrAtAL5+u^m8MZaYdKa4a= zQCz>HC=dU>09gMh<3Jr?c3g!uH4g7fOA35wNA+E*1g_W!q(zW8=E!At%P(C1508GWGNHzbWX=G($6`C)D8x+l%*?+Nfx~GP@es7{ zgc1`}XJul{?~sWmaspi&eZ)KvuPk3##+pF2i zdxd@PUpLs58n6l`k!IVc475&e4`|P|Y!_7|B$2=v0Tes7IXQzuuAHt0=l0>F$cr{TV$eXD=+F3VHv^f}-nT_O7q2&U+`yQn z;M<8f^$#wM-jqMw2FDH?z-4It%GD?Mnkwsb+KD&IadA&dP6===kDw?Wg254sdMSd38DOYm+X4D%k z3e*4%Zd)QsQGWUNQ)X8eWIJsHKr85vmq(WB==-t%;>lEeTL;i+qLenP_Diq*6`TDA z)M@@?;=gdaDxY+W=KZJ?2kGhz&jhp+sB9+DzN6{3349mMdUPcU&^VihjHSM)JXZ4m zSPAe{#{+2C{BV|d&q@m(?Z%jH4zsQRP3^@r77oW*{`{S!up|~PU_=GQl}Z*?H>*N2 z=D%Fw(FOAWXxc0l5M@mHwmn&41;_(m07Z3BJ#t8Y!U5i$a$I3rDUuKbfTmJ&axMj) zfbA=G-|tJyBJ!sFE71wKo`2nGGf#7Dq5FJC*M+r=8y0=SgPB*}!ETHlcu4mZlWi%W z585n0)jbP&fH3qHrf@q19Hk|!{RoR2z?#s&vo4Vh1ycANXj+)xQ($;o`nW%AvV(rvVNyX2x%vh!_GYPB2aFc~X4quGIA0=Jdf4+u} z0v%nSEYG>VWw|&;%hP$Oqd$!i_K~&)*0)rvn?hD{*oR+~-^*JR z(Ru@6^J}U7#)#}4@j1C1-~Ivr<_mAX|F={{ZUg=MyZr_Xn*esj=WH5AKqHdM<#Wb9 z@7nF7ZT7}FO~4Z?pzdZbMFq+NNn^uHpq(O80syUUiBU}^0#+*()qkdv)(I7$aqNtP z#N_u7dM*f|>t98j1GL4?tOr;wFz^2Q4ipW`c0lJr^>H2AC%OmfLHeweY37}~0a_{U z;-!S+JL$#G@(Y6rKLE=dP?sD`Sew8^JB7?8__gm(f7lkf600F}Rg9;-?gU;`Ff2g3 zpzUq=eH)LH<$5egIPLjafTpZV3VLS4kCht_6TF2V1sL{0N7dyS#l}lMnX-++fw-(a z0kkws+Bt#~2kB;&hDwz(b6S9wyacOr^0sGq4h>3$L?!uCZjrqt6EUo#xh_BS>4aK6 z2UJ7;6-W?oZT@m1VyYyBY}&moQ5gO64-fh(Av5D`+Z{C1CNRRicptt1b%;W-E5dj6 zH#k28592T_Er(`)N#4}Kd^;4q4=2F1@wel_mJG>D7S&+Rp~q3dA|*8g8ePx9 zMSYVS8YUqbhkosEVFPIBeIA8(OJBck6jg-dmt6p&A9T;*$nG#)Y;zS})X^ULV>Li~ zG5lJe_YzVD@9Dm3i;u4Y(AshLMq#Om8LPky@;``E{29Sn&I<$216PJ5bY-n@owC0G z+KuSB#vM9*G=+K9woum*wghN&mY77d1^VJ-%KLd9H2f6+?a{PjBq~41;Un>9ChyO* z`T&ilTiCJ6JXt9Ar%n?njEFEm`*Kj0+vUhpbhcN!1)fCT3DAD4*}VURR+dv6Y^5bX zT{sHRDqp7=7y2pi~(U*%#8oiDvUpni_Ib5~5`!$tlM z`0vi=dpw{%QW~>;o1?%Rdbhi=!qx!;BXm|B_yuvHH-u_z=z~83%R>8Rv@l+HF|*!& z058M4i!)S8<+o3gNewF@Kh)RpQe z%Z`MML(X~mAc1~!Zw|_7*@^p{3Yl4mt-`I>$5tQI`Bi}QtCnxrvJ*(F8sOA{O zRC!gZ&dDD9MYo^sC?Kd&WlUg^dLO!#5{0%#j&^K#_d& zirfAsEucKQLff=$vJ^So6G9)6D{orE%c7eQ$S6!C)gMBd0*BG4QBhGr+l~&?gSF?; zx^TaN{{Hg)s9iX*o-XyC&v&|C>fRr-sOju84$x1?Pq5vIYW#yx2`geIw-J1V;PE3M z*X*~*_Rl<#Y(Bk4LVW@kyk#65rAtNpcyqaU?W9_V6q;4MW{~-Qp6FbvJ?fp!@-QZC z#YmNz5tfXoHfkDTeiZ>8Bq8PXu!^}K^f}$dRfQ9kG6gz3`VJdX_m67fXuj~p&(Z__ zJLf|hL6v?zSw)(n;!ny3^^$(ZQ&c&tjAD)vqII)amjJ+3Kh)A&y-qW^2 z5;|~cG9-o0k`eVBPe@&ZIV6hd`AZ4Nw0EvDW)^n@_AttdMw5xyhcSs+Fw*bh7`~z) z_sOmve;2k^Myxip*4rUX_LqCxOdT*)!)pG!tC)o zQ}h0z<9JYk&YA4g*HR3A@B83Fkde5g@1YWnoORV(dF<9k$(4ZYufI&u%1hK+(|d0d z^h;63)r_oRS%vzNkR{qxhI3%JkBH{{8E2u;&i1tcw6F*8`NzJUILo-k% zUg|8nIRz^!MFr(AEB6x(@a%fOr9y5eGJBvxJh9YLWL#0B$q7)Txv!U+@5C_=yf0gj zhd)Ol3vOrJ2i+E<>0S*oIC{u>#TE^&8Q66BB8YzyJ@MMloycCHzy$fUTN~ilqiKz~ zxEC7WK2eobAM9qiZ8co?3xxC8`!fYoJ-=@8*yiVIULlmYpNBuz$W-`ShjXXPO|-Z! z8g9~i1QfP-xszSXUc(s5E1Y*g*iwzeeivV?+f z%j#KT7i@?kc^S?k=|`naENp0MCshTMef_#f@A{=_!~I65T@RYZut!=4i>-U3DnDh- z5cV0VFpQFfOZgO8X(A#IeC!Bp`I`n(!UDM!YiJ{{!$yX_wtOFQn7T@2*7!w98xaLP zW#aS?Y46Uc8~wozr}vIoHH=pEeFbSJ<3VVbpiFO(6`wQO<6P1O_;?3&NwwH=cvwKa z85Ck->YDp*czQrkzU54|U`l*1AAI`d5=Brg$1t&Oeb8 zvOvW50)-%{4cu7?fH6KS6Unle-LJl-zaAd+%A80cF+AybpFqc2T?br>2? zGr`=i6t;INBY>vp@C3UY_2gK=)14aJg||luw(6LrTcIzFCo(-zUk!ji<^4783sdcw zq@=cW%k&p*!;B2JBqQ5RzK?w5R6iP;H3NY4&5|vlQG@MTwnJ*4XC9`D1m$tptbB^_ zR`$Bdm}~_BuqFCy37;==@T5vfye+wH)ws#7#DJVgY*-;yjKGVnQaD7G4%p=X#rPoM zE#e7`TN)QWFW6LNmT{YNrV{V6e z);Su(8e5TE-XtUy06JGXT4jejjalJln_{c1iCRKN0*Rwem>dq9~N4g?yaGavW zGKe9I#`tk`zHpd5FS=vUV{&01g9H_;k5wPJa1oIg-b>QsiMQ*Po}xQ;lXq0*U{zgG zXV6Hq`H4X}%X-#fK15%!(x~ZzM*qCJvj#BrHk+V|3lV!~cQ_inqYdF}2odF2Ln% zffQ_lm)z$r!k79QB?*j4&8gY%{+JVlQJkTXAAcOtw2arb)tGlwmZQQ!_iViijA``U zvs6inf=~aM?;BluuNlc=n;t^hUlgAMuiP^@0SSz0G4VgjhsPh>^SPXOJZwOaa)(OM z*8UW!tPWxsgY%ZC0&)!suV^2&SKJGq_Bt-6aVAzvye5cVtU`K5&>9?abKLuYF@o@j zRk^haMyw*KjHC!$bm-abH>Y$5*F zfevpkY5UViLI`SLjEx_e5Uzh~`)5aNgf*vCCYHy}87coD>kVbk4*Vb}pt%`$$NEAH zB`D#yHDBCGt+tf1+WJ0hi8g836SdflXQ;@V9YA~`i?20vR(qy=T3t`eW$u}8)gKZf zcwASNLuQOd`95L=-UGF$F-vEI4YDEdgUIRRz@a~+HA3G%)qv;a9>!s|(kSd^j7s0o z-#_56xoSr!YP*TwEdqD(OAr)i3`2vDsShl=apPTg0Mqo4xMcIn33ejl?|08IE^(_o zF(Sp9KL4HXzv5>@Kthy8#WG2Ad4d5WC!FC^glzwCb?FZ#Zv@&x7rgraj`P3q6R7BQ z1=EkU92HiyXwOu>Y1i>uJ8?*t*n(3JKH zKOF6fb!_?m3^WPNb%A!Ea@0WOcOuI6Ec}S7NB#@^s-iBrg2B~0o8dDczxmgA@Ca&L zk!2_r*qI8RX$Hl(%i$4GMhL^#xRlrIcH z?wSs_%O=6209Byfh6!qjhtN89MZOBS0x(olR;kI6C=ys(NNe5C3Gk*~5BAp|u@0gQEKGUyU0{0PPCe zE`H#TnWjH+!v=2m?f@bcv`ChhS^`2C0u8AojtzY7PbMB`VYihQe<%K0>YH-;_x(R* zE__V{*?A1N)y;wQ9ESXYb^!bTarTx$bv(iTH}3B49z3`^!5xCTJHb7;1SdGbEw~4F zcMmSX-3k71QuVuaZ{<|wss9V!e5*e@b9Q=Wdb*cgZcGkP<Gt zA|fZqS+A>S)+OZcHV4p5??pkmS~Q8$f^pbg$#D$;T0DN1jMq7_Bg7~Mde*n57l4-k zJ8G80_{gk67g*BQKB_b+c37jIw?{dwARV7zEHClmbTVkU-@exTj> zipr3BF0p+I7}MiF>IB8pMk7H(b0~gG8S8evHWt-5w8WdV!L%)T-wlijr5icv#*)MN@A^x+G5!NybP{_C zZZ_msPq&1caz|ETeo|Jl(skCa0zjkxkorS;LM4JqBfD|t=`Z?0B+ON-^wb0~5X1ey zutKzfMgWv&z1`Vpj7G|73R#ifd6jn`Nr*t~4AGo3i+&{7Qz4h<^ma0e-&sh&0 zH0~=i3U0C_ueII`zyxo5ZO;Q>q7V>~)M+w{03kD26QX_4bi z+IZ0ef0J9%A<6aXGcw<~5U;ZBPJcIy&S}1RjnnwYHg^)n|i$ zDiFm^tk0FwMM;E$sPjn(ObYyOpVQ#0b9?%CKAvz88~WaQLp9E^w*MAu%3zlTA^dk zD91T*Yb;}dq_^w-HIW{xz*=GWvugGdBwzhEG4aEsrEPyiSm4Wq=Xseh6`ufO#7L3n z;U#55BnKEw%?NQ*%g!;qX1U7P?dvD&U4^BrfH5wuC6cTT)ZdxfaAaka10+|R92-uK zRW^PMRe$5?Ta5t53@I4JOWseCg$pKBNtmj&oB0w+m^+;oqTb{oU=+hizcGMC_WwFw zBIV60bK5)1?~Kz(e0l8gSP=-UEjQ@m{kY?zkIz)`;gY3 z)ev0Yz&hfIvB4U5mO%8%Y8-f zKcy-x{C!qh%?RpAp}n8+l#;XnyZu;0hHsxX@7V_Zl0a{-|Fl6ViEGr#+Lp75+qWda z64nN=8v>^zkMUZvlcPe?CI5Ey=fQ$w!H3wa#6#LF7}{U0=cHT!yJeZ4SgaS@`9MP4 zlBFECKMrN1w6D0Pp-We?qRg6l`|(fz5DjM^M>D*Yp61p`hiW-i0j#qyD0`BitzX@B zuM4we3m_ft2rTf7AZucmN0b%ZZXS2s+6>#oF#{^!a_?l#KSF zd)dMYpWJ!jfLQ;YKYase>+SFVrBp>=33sFuhcLxMc8X^~4vCP)NsQf?jHmG{-+rL} zmY_i>hvw74?ljLgS;uqdmII2tac|?iNDbtNp~9%vOwVeX$Priw^TzvGkA$DLKjt(x zn@cebgNgV~Z38}Vy7eQA&9Q7q@unfvQ%EFMf{quTrR2na*~FeOK-^j9anSJ7S4S2$ z>4$$BJ((+gKO9DJp*q>s!%iq9PeIy+cKMr}tH+$!BE5p^Q z;-oqQ&5t$v+NY0KFzUn~d$(*ES9f8ZqA#=mszL1ILTB!88IYomGt$$^6ca?_9Zln0`y;*$9(rNXlK5d0w?7X}_lNF?Pmq3%tM^eHQKD z1jgLqE+v))&YSYGT#+LAG_T{~FqahCA!sY@HdRPuMPUc4Ie9Jty@Yk zG%zMLcB3<5DK-ygrSK@FNhs8N`hdGgs$V#u?_N{#$-fsE+u8e zy5^8*R<)2kLA(^fdm3`OH{|cWRV585~k32~+8>FtEi9eNh3%kWu(Zi!<~zU7a8q4XA7w zGfcxPePfvHj8!gW-#P&PnczeMU&5eT#c?u1xN4GC;vp$QOjhB2;w4b$i&FCiKfo6C z*S*HJLv=m~2>yxB{LBsmeomhS{wc$%nUPG@ONu3rZjlQT%%?>uD)hL+M6Y6Gc^0QQRXZ zdUL%a`jR{E9&@UFdVcjrg+^W`F?7$WZ4(B=;OlQ;`q#m4vc?qWkPrlQ=^JUH3E^sb zy3D5}bwdn6xm?erzgcsj;~!D*YMVaS@UYh^&r7_>@DT3{Lbb=!gTPV_&d#35;(oTn z86b3J_PY~Na{fk*k5YnA^-(Ee#hk}C#J=JY3&1>{xpcje(1*M|`e<^RUVC9f|2som^%aA5LsPCO zEAUzYPSB(oRqp8P_BW|a6RNCFB6!PX%cmB|pf4XIY~-A&B!=5-lBF%T!8K6SW9Y~6X-RKz7>!M$jyHH9?^pBSoSfZB9td!WqGWj7o(N_|1bmSV zAx7%}$;bX?-g$*yDzHoB81r?r+HIS{FF6{Xi(hl`*7d&8=QP^XhB=7$VEz!P@1?P7 zY9gk_tn+w1cE)5W^XP;_EiM~EM)PPNZC*bxGSfsT%M4*-ayrH+co$3rf=9BU^f~LL zB$a6e{&($x%dXR7Qm~gy%@Ezu46dhKcMnbz1lmHMtO)A)bPSXj(e@RMKnE!k=a$}t zSA;&Jc%g@TLxL=SDu|Slo}R^SPukn(`3#$!JuB&Jsxe@oVc`|QRvAoeJrg&(Ivn!g zjzIAjf^Z|aO z(f9;sTcM&Q?e5tOHBPh#6Md8Z1g&TVvVZkO->^xi4CZJ?Cnc*+R8uR4i;WNTL%Iw# z&u3zf?3h^#YF?A?g1y=n9O!wkb0KbU++VHeIyypJCXg3aM%@Nl>U|ts^g%bia^1|^ zRi^G;oQ3&ViJfEkJWmb~-s?owO<6oGSf`IQB&_mn6*|D#NVp4EGu#C(*+ zVYTf4uJgZBfnR%)Gmq8s_k>TCIAS0h(S(#V>@}O>bkpiKjlpqagn%(o)PfOVbtEtn ztsUfnFYR_Pr0qhK(1N5Os0kL!qeO7Pm^w=W!^c5w=B)XUmW|K*)a}n%)2mQ$K|cZs z!_8j#(tt6gB~TA<-+~zol=B*ZRfiY?x5pS=cow4d@nAe zBpU3!qn(QFApyqhwO%cf;opDiPo^TLQ33Iw27&T4N>aL{e`Et9h@Ty zt!C$o9`aKhkRSpaNif>W@<8QhPqRmic1A*F10?5=^z165kjg=vTp&L|`&l*+lk zPLXznw*zWcJiOF&(A#YMeZ1i&)+{vP5aTKF(;5^pGIg_ z#5IKxprxun(!QFCZ=KirPAfK7Ja*^csKo7}AtthBRbO4WEq?+nx!CKIe%A@q%Zp{N z(Uve|7Ss?(bdVu!9k{K;7-&&g13caNm!Dkgb)PuE5x{D;7>ESUKdT@$W+l*(ay|sj z6=iKufIkCcK!<{9NH*hsyck__(Lty?d&3fD1i2_h-oT@Me0CEC8jD(cPm13|z6&ID zT@io#E~0&VZ4~{R@9qAL>fR-)A$`1(sRGrNjqgZ@t8|4vU3SE-176_3babO z85x9~)qwS_ar1E7+jI~^X_+&3op%NY*WN5CyPbe;f;AMEk`wrUx#&F#GfCTL6;!d7 zen*dr#vP|s&jziM&Ia1c(qW0@$|*oVhE1YPt?OM z6~#j&lm5py{`ZzFBHG^wsXpz8X0k|lThhr#8gv)JKQ*Ibo0ZW$US&4S@P}>fgfeC zE*N)y>RM_p4*32k$5H1vllU&78$Cm8TFOEC3pu!-9WUqi!>xzrJ#jg5Ge*HrcSdN& z6Rtllfbp2KmQZcglpb`3sLQRGCp9?L%AB(_6HkB{5<05+4*vf>muU&8IAe$}g;lF+ zgI z`{uEL@@PSDPkyU?u@6VZd)d0if;2$)0NrbevTA)wzVEQCEcF5#4!mAJ)XfO`B7Ir$ z(g!@b06EaV+WA>*{GdrOIM;W*BcmvS_F3@hB$SV zV|`w7!CHsb%j@bnDq1~)_3t;V(zxu8pTOu&D z-d5pc*a>0=7`Bn*V7N07?-u2;vs~c;V`joe(!Poeb~E`~ug>gly-@daPB>SXxA2kL z)zH^;wE|sgJ>iXbMjEzV-`hM~lAxzl-W8T*k`!o2ezT)?8 zY%wBP>P(N8CcOOMA$TA;8>OSE`TfTHqf~V^(Balz_JT16cWs>liu>mzM-2{o7(&8p zV98M6A_T*${&p2GcI_{=Q{7ENO>Ha&9B6720PWU!)HSIr3Gd-4O5nqU*q zKHr*FUAyrlFtAOx`*{Lp9at7Ft4lwc08~k-Pxra!04qR~ehNd}XpkOHt@H%Ho_{MOFcc);xy z;PqhBVxJnu`B9OMdc;OBIOawHngr#FYOb&yl!YX1uMXYnAwWwhj6r}Io1_wnT@7^k zEE)Bt{VUN4v{WUK1H)0)Yw%6h2r`mgjtU+F?eTrDz^?bFrkS$@Aqk+_a&W@sk+VT$ z-k&x^%~S)vY#__H>CTns>E;;-3TRxOx=Pl=_0aws9QP#HAZPbiKy-pXL}VpOx^R_j;_jNx`oQ6sHg z3iok)?o8d9c8wl?GKp_aBz!l2F%Xqq12pPW5dK&Xogs`L8y2!=E?`+%%vOm;e{DIs zfud1cK9L**tQ}9!XR6!fnqGC*P`DCN#Gw|x-YG|;x0D$ zMj|uxwd!7OG`g9ay;n%>*Ion0ppQEt)uVM%yj}@@v^c4N*KHelF6z_Y zz)xb;6?6JP@x}mlrT<$o&>1wrT@=V*49oQ#ATYdM2Nki#eO1GKJyw+|6F%PV7J-^TFp-q-=OZcZC>v`f&4^w$BD_rH)4 z0orR-Dz5(m3;R0Ad&9i1tJeTc?pj+Qv2~o6y-Z5H+ z=>%wm4xxPn)vM~%Q6G%kxCZ}BknPG2Ez0ev5JfI6`k|W;d4OG^0Pb^_Ny}2E7Uj!5 zHuoJs6AHMSpTrq0a{75z#w+M&56~he^Ir?@lbztXJ4?8a82?N{VSA2TIivD-0%Zhh-x$jTc>S0<8@6*;vK zM^6HGw!{`?5iG`LJ=2oNR$nBNpk1WrRtLp0+_6~GulUtu~;Lqzc)d2AM{^?M9kcq8vk zn$lC$L0-06o2JS)=5NRQJ<(0is~BbM!`;ghki04cF#5n`L>~s$EyQHnH{Llx_h+#8 zaNZezfuNPguafx4<^TnV$G}WCNuog6_E?vN=?88^vAJ$rSCo#BJVr?*k^=b+nCjd_{aixvLYPC>f%MrE$NGEtu1@6;w}C zE6n8Ywg=R-zSpRZ#Sv&e3Z{0zrX06~OY>@IaEC@`oWYFP^6-xn``9IZ<1ses`4JHo z?`tKRqpxtfQ{i>;L(cOV##T<=SjLY8+#^s4oOUvEco>)6V@wLAKoMU7LuzoJgzOgv zWnxCSbzoGHiOT0MonA&_7>hg7mV=URHkoX}0fgL$qZ{c^&+h7l3%1erLyg)qj93Bf^Ejc=o z*6t_hTIN@2JTAl%(|IwTl(Oc#*5GgQ8;@Z2W5K*pM%g5C_pZTg{+1BoW$7Ub->rFm zaF8>wofH4MR^E@nz{M?vf+KU8?MLFvIY0afn-5L#VuMv(6)LG*PeQv6s;jh@@qTVI z(-oq4P-%j|F?HeL1@6VXAeQFkoHPHf9o4W;RmW`k_1RJ4paW%EYiU0$SD5coeRoNZ zQg>3587b)}a`HJjn6K1q_!%+X{W;xBlD<=lzab5>xI=eigrmpnuuUlurL8IpN$K|p zsp*LibPGMn`ln|Us&`*FJ62sj9X~o-FqH}Z(l&3KbTK(H&WX+{xh;mlsU1opU4<$V zC5yqltFCTCifl!T5S>l&4%Xgr&vgkoxxC>&-M*tPAm=~YeqzaLXO91Ih%PW9Hmwp= zSH1S`^A^7R3jbq#>)`LUwtIb|O;D+=1WN{d&>G{WFcF1E_uuDAd!^{hu7V3;|4oa3 zr4(=pCiKhJkJsbfR-mdPYM@|WPv*gnuE}9CYRqxT0sza)U(?IVd&FP!)F_ZU02{8w(%+tmw~PWZ!6IC77FuqZ=6)0#UN6MexeXornYjADBKtc1_Ea#RF$a@ zXi8`>0I#+}E?|C86buqDXgp!ZSOQE3y zV~kf7OxJ5IzH>?;rHEUFFbhT05_eS$rRgCXSq*q~bh-Zyu5ru8j@n z+G~m^#}x6%)!k`odd~-RKjaYDD6n~4)wPh#ArQdyCA|~;*f>9Ku5C?8ldNDBzyPeB zXQ4ny!TB>qdP}L8mm1S4Ed;F`85XY`S5ri6=Cz&%V9a15^0%{k<0u-s7g6o=^HR-E zz8Ie9dEjxSI52+c6C}VGywt(Z&Q8^pMOvS#AI5lxQbVkUXPN|E+DhmX`(Vn5fiW?5 z$od}r#$W|*J5tUOjX{#y7PKs1yA&IrW7Rbx4=&yqz|tK0v;TCbrn*p9aOz#d5&G#5 zZ1Ys6VF)FuurAiZ`W*&_-{MoCimqr9VdVyc#*fjpn9v~FaK*oZ50+p~cVEWm=y7gsq$^(50r-#p;QN_D)Ri3boLtNU=F{JD((qdHc&u z&eT74=y5`cAZBX+3TFgSFKgf-`BE#Q>iy(yVjG`xc01nDTvEC{Q>LguTYXm?~D5wD`K`3PrI}f6yY3Nq#1L2Wn`M zU^4G9Nd!qPP9~Ny8KM8)>K0D2lVW9B*L+#$mTEq7vM6UCM`nwpvn12%;){VD{kIe~ zc_Fe`aRl0aEM;-Ai*TPQO6xs56?=0I?r09ApK`|H7++Xx3LX1J7r3wj9ZWltTOhoC zI7oqAM0;4%OLmA|8XG5%F!!VF)ymhER9=)GsJLENZ~uUsbrM9;`QYGAoho!d8cU2Zi(!y%AITXAA92mXU3L~yY`U$)bi0dK4Ef!nVY)Ttm%%D!djEv!d~KLW$j2lLyGzd`z$k12+bOF z4puj1ukJ8!6ka@&4*MM9Gg4|n1^7>FSmPbXhA!Tt?x9km1DuHH|81HrnWQy=FhNDB6)1ICps3-p<_G@6Ax#q-frX` z1%*TAP!`5~iR9}CYL5)ud5uKHvqLGV*a5sx1CvxgtqV0j7d2r`wmk|<a%^`ha`yWWB8^}9;p{noBwv5N2n1uy@$vkY^@`Q0r|60h6w7Xh4dnBu zl&^J%pD*xHKIrKk39esco;Ec9UiVz|lWo-#W@BbR0^|GmC8%U3-Z3voBBQH=8)Q+Z z8e}estIn%+Gx?c91tThWo{l5MQK4)~F|zLftMq?TH~-rA%4YA^?|U;mwGWjDcp@Y} z(Imbs3Y1wl;GxE5gLNuFYJ#7u#rQSTNiz+F5#Q#UIND0b{?~$u^(r$btz1gXPm0l zbi%BxnKyl`r*R)L9abU*#w;6a-Ad8TTjzHXyVUh7t%yzl$Pz}-1D*^8~b=xS3xmKnM|JC_V8ldipj~KqSJ#=ebC+zv{{MB3NM{|S@{TmO} zRX0<1*rRPrClbD#Qda!p7kkn3A>ZNJeG!cHdIz|e7I?h}^lDr)J|0^-d^d%?bfql5 z!Eg~&khFSis_*PSs&J$ItlB?TOx{KP-*5ZZ{5n%%@Rb_WZlnKrK(^e)xhhB=Hg>t1 z=YH2S3qR{D0yJG(o}Dh+CsB0}rn^4p#fKS38_8GvV1YWxr0vuDT=@5mvn61SE)`KcT0VQK=Bj?(eRMIjCUM0 zvQvrIo#i9!e^MuJ9LkN_C`+k}&rqp?`UkkXEj316N{Pv#=0{&mUX%N z%_%Zr$}Bgq!tCi^p}&;(P`-z^#EDlVbemy3v!vj}N@p;Qxu1_Lc*N94LbZTB<`h>% zX;a;PyW0p=iriRz!Hfx}KejFQ#&!x&&Oz=B@YQkg88%|0Jr@42@Bf-Vo)9IAz_7lMup9?a^O|V=d#d1%R!)M3Ii4h!g_7G@_{FgKN14_sV2kU=R@p_ z(`KqikpWUbf895X5^h+H6Ih(5H51C*sSzn;oN)$*_bQXP7^^~r4c&pj7@GxXCjk=9G$~UoYv#ZDV&`-gS2aW?66F2t@JH?}nngYFM9!JzJLUmM&U6-T?gGpK* zcHW!;=-&BgSXT9srdMUKJ%+>oIz_5%ahLxrx(Yf!oUPxfiW|1wc@y)y$2A` z%5n5cV9*~(F5W%jUUEll`f>QLBk#U3|0q?_bZ*F(!Gz)}hdcC_UO#}p5nwsN;V>zU zADwovIY7549Weo#Vy1O6?&FUe&CBY{kCa#W0Bu9=dee40$GwCTzfxV&4RFW7gmI&x zv+xv+@l|aqMOWh0P$&~|MCXgUtJ%_rL-t&73}@_Tc(A^^>b z0epo+J=XJjVPjU!SNzX2`QTvnmk?7QTm_79yc%q(-vR7IT;oQ~ztlL9QFtA}Kye%Z zv@z<+pn6C=HUWA%HLC1^KRYvK?pY)A4(9voIVfc763(Yw@ZV0**z;2| z*P0A$va(Oh^#c*JzYnf}F=US#{68dp#f?q-NG=jhyR_0LpFp|Iu+hU2R@f^&tAR1I zJ3E?1PY#22v{>~RaMxSiR0z;p_s_ifT?Dye){N_2UjI!ShtK4hHbKMpv3-F7}&dvby zYy=2vz|h%~GVD*6OpIQ}Eoz3h$N}0zs$k~>M`s{{fZX8nJsTxJ8_wtcn1ei%*f}AY z@ysO;1<+jTT;6v|EF@eX2)f@Y6aA_0ra#Y|XVyh;O6@pG+(_U4DH%x@Hf|G5aY`Y4 zuT2`#q$KAq?xULkxd zsvhh+<>68e!0u@;g$aq{x8mgVDz`Yltqedz{Cvo{=2PDaf6P1RHzxUKqWkP|2nn4x z^-BJ%IJ;{0|C1I{?zV}X&#GD$l^MCGbO#R)-O=>VMSUlR#v zsY)2#joomaDqZ=^nh2>9HHsD-CqE1N7DQDK*WvAB7(ll{Pxo3Mo#Y~#U1n}Y+e+l-!No5=2oTm2?7pQnnY1UUeU%wO$XSV0J+9Hz#CK*adE zYxy$he;M{ha`7a@s5qA%8XW{U_}`94rl<-v$KrSQ^NFb^8ryFQV1z&e_gllmA5Tw$ zL&jh?8;}bHd#=)n(I1p`rL1?G0==;X+)%KBp@UN%-jF8*M$-3!Xp`6gjrXh*b)$z2 zN_`zyg>w|&0HBemoj)^&%W_D&LC7#;A0+}bkRuUtvgK3X4_gy`8?tMEN?IGG1T|0# zl}eYdf{?Z)^C$p2F2Z`^=iQIwRKA9jYCKFT04;%_`r5#Ys=;|KuKwqbtxUo306UytWm0ZG@Hxth!ql=X(e416xY#jjLHW+)pg@!l+v22GAIfu=NT-G<;9LP1sQ;HzReUB1 zt3({4ENwQYevla+d|ti#@;ZAu&QirH_GHJm_J>qz3aYBsquGjrvLzBV+(5lG8Dzfn z_y#_Uc5^r#oA~J(0UWAAx{>l~8`@3P(jSghCM{4gv2&AxvuD5SgUQ7wjRlGdDcR!+ z_dE~#O?lFSpKOAe+48Ww!k8U43XehRx!>NoL|qD-Nw!g_cayi>gO95Dgmh;k~6;oF}{CYX5hNwHoB2r92?n6#p2v`78;)JM$zt86K1o9e! zHfW4Xa4>hn=f18%Ni6oV-hE3{_p)Y^nTr()pSGTYpoL_d^pp8Z+AnwNXgm6J#MhA% zpdg3Cs1Isb71#^}lB*|5LUtx*-{cdpk4ba$-nG6H`*ozeN?tBwko??I*=mF8?&R~) zl<_c)TM4hJOpQNOPPNiT2+GKhs?Sb7NBrg` zK;_iiizXj#=>Kh^YRZX+?$pU@%iurOxPV(RcD~=o$n7Ms{gL@ztaP# z;oNlDKMGzvug8m3aP?DuxPh>+`?{kCgJ}d#E{>D}W1!k&$9wZPiMAyoP!}pS7v5e> zbsp18;E{vD+ZLG){TUdOF!`-oByc;O=Y~-NEv_OgP5@nXro*Ij4JSVibXSWG7}Hk4 z`+F7dq=XX|!G>TX-O$Sz_rnTX;ci#pbh~%A5MWRKYq_{(Q#fkEud==6BLy|ZYD0#O2r9`NkKNH|JB+u3>N7+7;H?K{fic~ z8`&=_#{0%Njd_9z@c7POzvn3BIo-Ms|DEW5m75V#TRkcjqGXTcNS;ir)!{C(^DaN-eMxP48Ici9@EFnu ziNSt2oTTFlD(Oc0_^!gMLY8n2U$p3 z@{GW5Ll-NO(ve$@r0*5!>eV||z3fjKrrIdzV*2xFr7>3$1w6X5jAM4ZVJ^8gnP_FA zsMLO*W~yOKm}vEkV}0DY(9uq_n~S-dWM&i8El-F2ni zLX@Qtw(j{$g5$eGEG)yJ!ttKL*8NNsolE`bst~O)tRBP|{I%fyFXPX7Avuv?I>+n_ z^^;=;$1qg5#+>r!Mj-jmgpI?6pCAup4(ic2KHs%M&~<;h`8{*6hc({Y{Amf%2wO^H zzt5eHL2ETipezEVS=2{*(Zfz11Z~9qwVHY?F4QV$FVvZtYuEc7y~tcHq9=FWq4BF+ zF014~7_vyMXf5J*E9FS+6}U+L`LG1iadHEs&Q71*_e8>GRD+PB>4QzIY=#b5hB z=#mw|d?6h?dWNp3I`U2IP{6tHul3H`1myB5o43>%?ZNGc%%eqCxvZK}y7gPLQ2Xik z=!61b%t1I6Cr;;k_$}V`E?V%+Zo+<15Z=;r2%**1#IIZ;oxm7|`=Ca$AFB5r8J!Ns ztyFUqL$J$LMPPwpyTO{>h8}=^{na<)Jku|ACHk!7~gc@Vx-LcRz!MU{0d_)P=X9WWC@J1%tPeEnT)wv<}~T) zJlGx=jwB5KsJ)G}25$6jut+#!!t<$;f*z8r3t7|w@*162v#eI2aXSN%xM55eQ z3pCO3Vz#xm_M>*y_d$9_IV||c{XjCSgXXU0F}bGpkY%LtTi*ct9tJ|N_Qxme@HpS1 zr3n2yIIVjgN~s<)zy7lnsrE+geT3Td1*iDYJmQo>tgBb98+3fy;toGvho{mZAwybt#-k7u-7r3qvhC@H$vPxjkHkC5CssAV4{jd2I zLOFmNa*&{B?tZdM9rHDEhu^^)2g^dRGjl(_>-{hwN%Pm36Hc`hI@w5|KKKL%WvGFt zJgKDL-o4bc%wyP>=k zB^k7L@hh~>E%^!T(_|_z#!Im-JM4@)5bh+cUY z;Tn!(pXAu?ozGOHMHYZDPNCmhC5)u`9^yL9B0C@7zG+uz&zhlc3p>*wL$u z4&uPma(bf~1?F@IRN4HN-kd2Lfzb_bLa(nc}5Vwvj9$tfd2kHO2&i_7_ zbqp>Y`MvXGTFFbklOiceE2&XUb8gz@F3-;yvp1> zn7VNyOU7gLVTXn93We;Swt+E$C0%8UGzax-ZgAHfW$B{|X?T3qoyuvhADH`l)vNb_ zF&71o2V8_KpT$-s849Nir z2nP$Fid+JfUVE>rPDXlxF^N+26t$h(SKEiY32g)U+QJ&f^g(Qe6+1&SFC~Vi3BZ`R zY%^4*Jo#$OuLh9v=J^z(;MFuoBSy`Pb4dqDZ86Tkn9d&j@fuMQjbyS}skYUM_x*#8 zZ~*zm9 zRWOjLrzPs!;D!0Wgz)gs;NA!@T@xo3F6Dgg1H)NT*Yj(CfF@YZwvKW}NlQeYo&*Ml z`6tmSgff?{hyJc=IA$DFG?VO4Hhqc>0da0^aR2+P7uLFz&Y#S=7XGCFt38vxMAU_hsU1IECN~QMMi2~}{zqk*w7e&( zQveC2f*;@)flYeA!n948&V$m;kd`3~OaipV&&etkqj0og?nj@LntoUSG=>FI1HYe#@5=|Pb;Wyy|18;-$SxzR&I^puz5PkXC~nxq#Mt{p83k_6klaie#_Z}|W=iw?L9p-y z7z2io885IB5+=Mv^r#)zEm3j|(I{s~M4K=Yc`DiZ_C|If_id3TVeOZuN5peRA{vGc z3OVZ~Ej6nkTzoHd-Eyms={Yb4s~YDDJ7&Yv%*`1+ipX@~67=#{J(?RZcdRJFfwj(qf{- zWw9JA$D0Az^3A|^8MT;{vJ~f(b-K**a4E)LKnw%6jv{Eg^9Lf)mdbNqR!5m<|$IwXkf zd&h25fgOn!Dn)?ZWnW#@rh^T{jAV{g3&u7yK!e=lRw;t><+3E61Z!SUxC3Z|-@}?N z4>YINV84lf*KH36XvkD#CB2_pL3%Q>4Qx%^sR0@>h05&%|I}hFI1ToE9KsDi3+Cg> zck57kvg$bG@c7{Vr#euaQ@Q!on1E6e@@D61?dLSWE>YjaRyZz7v(x;0N_cbGDnP>) znOe<_Ru$>^l_2h9UiSE={c9ot7M#B(Ql+e0|G|O8sqp5J^|a0xd(6)^_|!4FbI?o{ zgmvRFK#v>bJ%!&bNZB;|AB^2oQykB6o5|@J(iEfF;Eilc%B3NIwL_{Nopkj~>{HGu zrfL;K1yQYE*nVh}6vFS)%FIo01@y`D?)kW+U>a6oCKP$-9z5>MC%KK2EzXR~p7%~` zZiWItLp3$i`OIA6>8<&G1qub5M_qqD$>C4rdwQokA{RtF9{)YL^M4($XLQ|M-E&J2 z^gZJ8X%#FM;0Ev2f5}8$%thrlT<-p;HTNfuGKKq@O<~+qFfKwMgmNUe01a5 z13^TRs|RgCE_MfKWhoqcJ%n;`SPP}XZU)$ZnFxlR&Ev&WKrWKF4=P0JK-B7fe_0uts>CK)rXQ$jkt3LsEtR^>=BOXw{TmbTf)SKx@(7 zJPyZUz>9u8V&!V2*aT>qcq=#-9Ms>nn9m)^a$|=98Zyg)T}1>&$`J*FwUXe-A3F-4 zR%U^aFlLs3;CHt#yh8vxwSg0TrkMHUtO(&jX$UMp%m^mg@YC3~Uj^ckD?3m6@$LYi zIYE_(Os1nDPO-k~)H&eIzG?q*Jb=^v<#?-k_11Ild54J}F`V-1S{*!-u;VGQ2qXQ8 zVt9G~U#Dgdl28}`q7>Cypacm)i_j7@ z)X-v(O+tl2MqxBWThP?d68+dc(hKp@;aXwgoDYS z6Iy&>e;^>f1jL)nc(eF8S^TtI%w_EN<5#`nFFeL+>+_d=b3S`}+Icy$-&g+tm5yy) z%iGnl(v)+z%gdav|$hyVgiJ;Yld5kUtu=t=4K!Yvuv9wnpL$ zLB;1$LXmh(y}PMHE&qDNYyABnH%gp=J!B9)6LXN~oY|A*|MtAc_j861@|?5GL(i1$ z!_zy5&(zw7&mJ<*Wm(qqIq;b5HJbUnMzhv^I1iqTG7mk7ePj^5jPO8s$V|*-gwJ#C z^=7>u?qeT46CM*D_sE!o+;fH}qs&JSVjo#Xy&m@2*PG#iI8R1+O!j$>%pNl4GP1`R zd)#w|2g>H$bH+Z1xfZp2%(W=HM{BP>KRekIe*!fO^)DR?4&S-NZ|H_xsp1sudChkV r@*|cj`Qk_B&FL_oD=#xEyOk|#YWCq^FxhTfPlt}8j{1(tRmSc&Ua1sH literal 0 HcmV?d00001 diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts index 02f237da3..527847c15 100755 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -5,6 +5,7 @@ import { BeaconApi } from '../../../relay/implementations/beacon-api'; import { bytesToHex } from '../../../libs/typescript/ts-utils/bls'; import { hexToBits } from '../../../libs/typescript/ts-utils/hex-utils'; import { bigint_to_array } from '../../solidity/test/utils/bls'; +import * as fs from 'fs'; const { KeyPrefix, WorkQueue, @@ -13,7 +14,6 @@ const { import validator_commitment_constants from '../constants/validator_commitment_constants.json'; import yargs from 'yargs'; import { computeEpochAt } from '../../../libs/typescript/ts-utils/ssz-utils'; - const CIRCUIT_SIZE = 8; let TAKE; @@ -51,6 +51,13 @@ let TAKE; type: 'number', default: Infinity, description: 'Sets the number of validators to take', + }) + .option('mock', { + alias: 'mock', + describe: 'Runs the tool without doing actual calculations', + type: 'boolean', + default: false, + description: 'Runs the tool without doing actual calculations.' }).argv; const redis = new RedisLocal(options['redis-host'], options['redis-port']); @@ -60,6 +67,7 @@ let TAKE; ); TAKE = options['take']; + let MOCK = options['mock']; const queues: any[] = []; @@ -83,7 +91,7 @@ let TAKE; const beaconApi = new BeaconApi([options['beacon-node']]); - const { beaconState } = await beaconApi.getBeaconState(6953401); + const { beaconState } = MOCK ? {beaconState: ssz.capella.BeaconState.deserialize(fs.readFileSync('mock_data/beaconState.bin'))} : await beaconApi.getBeaconState(6953401); const validators = beaconState.validators.slice(0, TAKE); TAKE = validators.length; diff --git a/beacon-light-client/plonky2/get_balances_input/mock_data/beaconState.bin b/beacon-light-client/plonky2/get_balances_input/mock_data/beaconState.bin new file mode 100644 index 000000000..4b4037f16 --- /dev/null +++ b/beacon-light-client/plonky2/get_balances_input/mock_data/beaconState.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b096ba750b0ff9dd1bb9e74814896833f08cafe37351c81bc38d8ef71ca07f8 +size 120793525 diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index ff5b595ab..2b6a7c2a9 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -18,6 +18,7 @@ import validator_commitment_constants from '../constants/validator_commitment_co import yargs from 'yargs'; let TAKE: number | undefined; +let MOCK: boolean; (async () => { const { ssz } = await import('@lodestar/types'); @@ -53,6 +54,13 @@ let TAKE: number | undefined; type: 'number', default: Infinity, description: 'Sets the number of validators to take', + }) + .option('mock', { + alias: 'mock', + describe: 'Runs the tool without doing actual calculations', + type: 'boolean', + default: false, + description: 'Runs the tool without doing actual calculations.' }).argv; const redis = new RedisLocal(options['redis-host'], options['redis-port']); @@ -62,6 +70,7 @@ let TAKE: number | undefined; ); TAKE = options['take']; + MOCK = options['mock']; const work_queue = new WorkQueue( new KeyPrefix(`${validator_commitment_constants.validatorProofsQueue}`), @@ -130,7 +139,28 @@ let TAKE: number | undefined; while (true) { const timeBefore = Date.now(); - const validators = (await beaconApi.getValidators()).slice(0, TAKE); + const validators = MOCK ? Array(TAKE).fill( { + pubkey: [ + 147, 58, 217, 73, 27, 98, 5, 157, 208, + 101, 181, 96, 210, 86, 216, 149, 122, 140, + 64, 44, 198, 232, 216, 238, 114, 144, 174, + 17, 232, 247, 50, 146, 103, 168, 129, 28, + 57, 117, 41, 218, 197, 42, 225, 52, 43, + 165, 140, 149 + ], + withdrawalCredentials: [ + 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 13, 54, 155, 180, 158, 250, + 81, 0, 253, 59, 134, 169, 248, 40, 197, + 93, 160, 77, 45, 80 + ], + effectiveBalance: 32000000000, + slashed: false, + activationEligibilityEpoch: 0, + activationEpoch: 0, + exitEpoch: Infinity, + withdrawableEpoch: Infinity + }) :(await beaconApi.getValidators()).slice(0, TAKE); if (prevValidators.length === 0) { console.log('prev validators are empty. Saving to redis'); @@ -151,13 +181,15 @@ let TAKE: number | undefined; prevValidators = validators; - await sleep(384000); + if (!MOCK) { + await sleep(384000); + } continue; } const changedValidators = validators .map((validator, index) => ({ validator, index })) - .filter(hasValidatorChanged(prevValidators)); + .filter(() => {return MOCK ? true : hasValidatorChanged(prevValidators)}); await saveValidatorsInBatches(changedValidators); @@ -168,7 +200,7 @@ let TAKE: number | undefined; const timeAfter = Date.now(); // wait for the next epoch - if (timeAfter - timeBefore < 384000) { + if (!MOCK && timeAfter - timeBefore < 384000) { await sleep(384000 - (timeBefore - timeAfter)); } } @@ -240,6 +272,10 @@ let TAKE: number | undefined; function calculateIndexes(validator_index: bigint, depth: bigint) { let first: bigint, second: bigint; + if (MOCK) { + return { first: BigInt(0), second: BigInt(0) }; + } + if (validator_index % 2n == 0n) { first = validator_index; second = validator_index + 1n; diff --git a/docker-compose.yaml b/docker-compose.yaml index f24e240d6..718358748 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -15,7 +15,7 @@ services: image: get_changed_validators environment: - COMPOSE_PROJECT_NAME - command: get-changed-validators --redis-host redis --redis-port 6379 --take 32 + command: get-changed-validators --redis-host redis --redis-port 6379 --mock ports: - "6379" depends_on: @@ -26,7 +26,7 @@ services: environment: - COMPOSE_PROJECT_NAME working_dir: /bin - command: commitment_mapper --redis redis://redis:6379 + command: commitment_mapper --redis redis://redis:6379 --mock true depends_on: redis: condition: service_healthy @@ -36,7 +36,7 @@ services: image: get_balances_input environment: - COMPOSE_PROJECT_NAME - command: get-balances-input --redis-host redis --redis-port 6379 --take 32 + command: get-balances-input --redis-host redis --redis-port 6379 --mock depends_on: redis: condition: service_healthy @@ -47,7 +47,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 0 + command: balance_verification --redis redis://redis:6379 --level 0 --mock true depends_on: redis: condition: service_healthy @@ -64,7 +64,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 1 + command: balance_verification --redis redis://redis:6379 --level 1 --mock true depends_on: redis: condition: service_healthy @@ -83,7 +83,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 2 + command: balance_verification --redis redis://redis:6379 --level 2 --mock true depends_on: redis: condition: service_healthy @@ -102,7 +102,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 3 + command: balance_verification --redis redis://redis:6379 --level 3 --mock true depends_on: redis: condition: service_healthy @@ -121,7 +121,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 4 + command: balance_verification --redis redis://redis:6379 --level 4 --mock true depends_on: redis: condition: service_healthy @@ -140,7 +140,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 5 + command: balance_verification --redis redis://redis:6379 --level 5 --mock true depends_on: redis: condition: service_healthy @@ -159,7 +159,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 6 + command: balance_verification --redis redis://redis:6379 --level 6 --mock true depends_on: redis: condition: service_healthy @@ -178,7 +178,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 7 + command: balance_verification --redis redis://redis:6379 --level 7 --mock true depends_on: redis: condition: service_healthy @@ -197,7 +197,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 8 + command: balance_verification --redis redis://redis:6379 --level 8 --mock true depends_on: redis: condition: service_healthy @@ -216,7 +216,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 9 + command: balance_verification --redis redis://redis:6379 --level 9 --mock true depends_on: redis: condition: service_healthy @@ -235,7 +235,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 10 + command: balance_verification --redis redis://redis:6379 --level 10 --mock true depends_on: redis: condition: service_healthy @@ -254,7 +254,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 11 + command: balance_verification --redis redis://redis:6379 --level 11 --mock true depends_on: redis: condition: service_healthy @@ -273,7 +273,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 12 + command: balance_verification --redis redis://redis:6379 --level 12 --mock true depends_on: redis: condition: service_healthy @@ -292,7 +292,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 13 + command: balance_verification --redis redis://redis:6379 --level 13 --mock true depends_on: redis: condition: service_healthy @@ -311,7 +311,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 14 + command: balance_verification --redis redis://redis:6379 --level 14 --mock true depends_on: redis: condition: service_healthy @@ -330,7 +330,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 15 + command: balance_verification --redis redis://redis:6379 --level 15 --mock true depends_on: redis: condition: service_healthy @@ -349,7 +349,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 16 + command: balance_verification --redis redis://redis:6379 --level 16 --mock true depends_on: redis: condition: service_healthy @@ -368,7 +368,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 17 + command: balance_verification --redis redis://redis:6379 --level 17 --mock true depends_on: redis: condition: service_healthy @@ -387,7 +387,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 18 + command: balance_verification --redis redis://redis:6379 --level 18 --mock true depends_on: redis: condition: service_healthy @@ -406,7 +406,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 19 + command: balance_verification --redis redis://redis:6379 --level 19 --mock true depends_on: redis: condition: service_healthy @@ -425,7 +425,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 20 + command: balance_verification --redis redis://redis:6379 --level 20 --mock true depends_on: redis: condition: service_healthy @@ -444,7 +444,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 21 + command: balance_verification --redis redis://redis:6379 --level 21 --mock true depends_on: redis: condition: service_healthy @@ -463,7 +463,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 22 + command: balance_verification --redis redis://redis:6379 --level 22 --mock true depends_on: redis: condition: service_healthy @@ -482,7 +482,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 23 + command: balance_verification --redis redis://redis:6379 --level 23 --mock true depends_on: redis: condition: service_healthy @@ -501,7 +501,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 24 + command: balance_verification --redis redis://redis:6379 --level 24 --mock true depends_on: redis: condition: service_healthy @@ -520,7 +520,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 25 + command: balance_verification --redis redis://redis:6379 --level 25 --mock true depends_on: redis: condition: service_healthy @@ -539,7 +539,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 26 + command: balance_verification --redis redis://redis:6379 --level 26 --mock true depends_on: redis: condition: service_healthy @@ -558,7 +558,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 27 + command: balance_verification --redis redis://redis:6379 --level 27 --mock true depends_on: redis: condition: service_healthy @@ -577,7 +577,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 28 + command: balance_verification --redis redis://redis:6379 --level 28 --mock true depends_on: redis: condition: service_healthy @@ -596,7 +596,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 29 + command: balance_verification --redis redis://redis:6379 --level 29 --mock true depends_on: redis: condition: service_healthy @@ -615,7 +615,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 30 + command: balance_verification --redis redis://redis:6379 --level 30 --mock true depends_on: redis: condition: service_healthy @@ -634,7 +634,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 31 + command: balance_verification --redis redis://redis:6379 --level 31 --mock true depends_on: redis: condition: service_healthy @@ -653,7 +653,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 32 + command: balance_verification --redis redis://redis:6379 --level 32 --mock true depends_on: redis: condition: service_healthy @@ -672,7 +672,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 33 + command: balance_verification --redis redis://redis:6379 --level 33 --mock true depends_on: redis: condition: service_healthy @@ -691,7 +691,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 34 + command: balance_verification --redis redis://redis:6379 --level 34 --mock true depends_on: redis: condition: service_healthy @@ -710,7 +710,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 35 + command: balance_verification --redis redis://redis:6379 --level 35 --mock true depends_on: redis: condition: service_healthy @@ -729,7 +729,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 36 + command: balance_verification --redis redis://redis:6379 --level 36 --mock true depends_on: redis: condition: service_healthy @@ -748,7 +748,7 @@ services: environment: - COMPOSE_PROJECT_NAME entrypoint: '' - command: balance_verification --redis redis://redis:6379 --level 37 + command: balance_verification --redis redis://redis:6379 --level 37 --mock true depends_on: redis: condition: service_healthy diff --git a/libs/nix/get_balances_input/default.nix b/libs/nix/get_balances_input/default.nix index 0725101c5..fb1b2df49 100644 --- a/libs/nix/get_balances_input/default.nix +++ b/libs/nix/get_balances_input/default.nix @@ -36,4 +36,7 @@ in buildPhase = '' yarn build-plonky-2 ''; + postInstall = '' + mkdir -p $out/bin + cp -r beacon-light-client/plonky2/get_balances_input/mock_data $out/bin''; }) From d137489f44c439cd2bee0232403bd0f91265f7f0 Mon Sep 17 00:00:00 2001 From: Dimo99 Date: Fri, 15 Dec 2023 14:44:11 +0200 Subject: [PATCH 21/59] Remove unused imports and logs --- .../bin/balance_verification.rs | 53 +++++++++++-------- ...ce_verification_circuit_data_generation.rs | 37 +++++++++---- .../bin/commitment_mapper.rs | 35 ++++++------ 3 files changed, 74 insertions(+), 51 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs index 5e1076f29..28ad9607d 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs @@ -15,14 +15,16 @@ use circuits_executables::{ save_balance_proof, BalanceProof, }, provers::{handle_balance_inner_level_proof, SetPWValues}, - validator_commitment_constants::get_validator_commitment_constants, validator_balances_input::ValidatorBalancesInput, + validator_commitment_constants::get_validator_commitment_constants, }; use futures_lite::future; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::PartialWitness, - plonk::{circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs}, + plonk::{ + circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs, + }, util::serialization::Buffer, }; @@ -33,13 +35,12 @@ use redis_work_queue::{Item, KeyPrefix, WorkQueue}; use jemallocator::Jemalloc; -use std::fs::File; -use std::io::Write; use serde_binary::binary_stream; #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; -static INNER_PROOF_MOCK_BINARY: &[u8; 214532] = include_bytes!("../mock_data/inner_proof_verified.mock"); +static INNER_PROOF_MOCK_BINARY: &[u8; 214532] = + include_bytes!("../mock_data/inner_proof_verified.mock"); static PROOF_MOCK_BINARY: &[u8; 204016] = include_bytes!("../mock_data/proof_verified.mock"); enum Targets { @@ -129,11 +130,7 @@ async fn async_main() -> Result<()> { .parse::() .unwrap(); - let mock = matches - .value_of("mock") - .unwrap() - .parse::() - .unwrap(); + let mock = matches.value_of("mock").unwrap().parse::().unwrap(); let redis_connection = matches.value_of("redis_connection").unwrap(); @@ -183,7 +180,7 @@ async fn async_main() -> Result<()> { time_to_run, stop_after, lease_for, - mock + mock, ) .await } @@ -235,7 +232,7 @@ async fn process_queue( job, circuit_data, targets.as_ref().unwrap(), - mock + mock, ) .await { @@ -255,7 +252,7 @@ async fn process_queue( inner_circuit_data.unwrap(), inner_circuit_targets, level, - mock + mock, ) .await { @@ -299,9 +296,12 @@ async fn process_first_level_job( targets.set_pw_values(&mut pw, &validator_balance_input); let proof = if mock { - let proof_mock: ProofWithPublicInputs = serde_binary::from_slice(PROOF_MOCK_BINARY, binary_stream::Endian::Big).unwrap(); + let proof_mock: ProofWithPublicInputs = + serde_binary::from_slice(PROOF_MOCK_BINARY, binary_stream::Endian::Big).unwrap(); proof_mock - } else { circuit_data.prove(pw)?}; + } else { + circuit_data.prove(pw)? + }; match save_balance_proof(con, proof, 0, balance_input_index).await { Err(err) => { @@ -348,15 +348,22 @@ async fn process_inner_level_job( let start = Instant::now(); let proof = if mock { - let inner_proof_mock: ProofWithPublicInputs = serde_binary::from_slice(INNER_PROOF_MOCK_BINARY, binary_stream::Endian::Big).unwrap(); + let inner_proof_mock: ProofWithPublicInputs< + GoldilocksField, + PoseidonGoldilocksConfig, + 2, + > = serde_binary::from_slice(INNER_PROOF_MOCK_BINARY, binary_stream::Endian::Big) + .unwrap(); inner_proof_mock - } else { handle_balance_inner_level_proof( - proofs.0, - proofs.1, - &inner_circuit_data, - &inner_circuit_targets.as_ref().unwrap(), - &circuit_data, - )?}; + } else { + handle_balance_inner_level_proof( + proofs.0, + proofs.1, + &inner_circuit_data, + &inner_circuit_targets.as_ref().unwrap(), + &circuit_data, + )? + }; match save_balance_proof(con, proof, level, proof_indexes[1]).await { Err(err) => { diff --git a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs index 0952d4581..145ab945c 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification_circuit_data_generation.rs @@ -1,17 +1,18 @@ -use std::{fs, marker::PhantomData, ops::RangeInclusive, path::Path, process}; -use num::clamp; use anyhow::Result; use circuits::{ build_balance_inner_level_circuit::build_inner_level_circuit, build_validator_balance_circuit::build_validator_balance_circuit, - generator_serializer::{DendrETHGateSerializer, DendrETHGeneratorSerializer}, targets_serialization::WriteTargets, + generator_serializer::{DendrETHGateSerializer, DendrETHGeneratorSerializer}, + targets_serialization::WriteTargets, }; +use num::clamp; +use std::{fs, marker::PhantomData, path::Path}; use clap::{App, Arg}; use futures_lite::future; use jemallocator::Jemalloc; -use plonky2::{plonk::config::PoseidonGoldilocksConfig}; +use plonky2::plonk::config::PoseidonGoldilocksConfig; #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; @@ -21,11 +22,11 @@ fn write_to_file(file_path: &str, data: &[u8]) -> Result<()> { Ok(()) } -fn main() -> Result<(),String> { +fn main() -> Result<(), String> { future::block_on(async_main()) } -pub async fn async_main() -> Result<(),String> { +pub async fn async_main() -> Result<(), String> { let matches = App::new("") .arg( Arg::with_name("circuit_level") @@ -60,7 +61,10 @@ pub async fn async_main() -> Result<(),String> { }; if level != None && level.unwrap() > 37 { - return Err(String::from(format!("Supplied level {} is larger than the maximum allowed level 37",level.unwrap()))); + return Err(String::from(format!( + "Supplied level {} is larger than the maximum allowed level 37", + level.unwrap() + ))); } if level == None || level == Some(0) { @@ -77,7 +81,11 @@ pub async fn async_main() -> Result<(),String> { } let mut prev_circuit_data = first_level_data; - let max_level = if level == None {37} else {clamp(level.unwrap(),1,37)}; + let max_level = if level == None { + 37 + } else { + clamp(level.unwrap(), 1, 37) + }; for i in 1..=max_level { let (targets, data) = build_inner_level_circuit(&prev_circuit_data); if level == Some(i) || level == None { @@ -101,13 +109,18 @@ pub async fn async_main() -> Result<(),String> { let mut exists = false; for i in 1..=max_level { - if Path::new(&format!("{}.plonky2_circuit",i)).exists() || Path::new(&format!("{}.plonky2_targets",i)).exists() { + if Path::new(&format!("{}.plonky2_circuit", i)).exists() + || Path::new(&format!("{}.plonky2_targets", i)).exists() + { exists = true; break; } } if !exists { - return Err(String::from(format!("No plonky2 output created. Level used was: {}", level_str))); + return Err(String::from(format!( + "No plonky2 output created. Level used was: {}", + level_str + ))); } Ok(()) @@ -129,7 +142,9 @@ fn write_first_level_circuit( write_to_file(&format!("{}.plonky2_circuit", 0), &circuit_bytes).unwrap(); - let validator_balance_verification_targets_bytes = validators_balance_verification_targets.write_targets().unwrap(); + let validator_balance_verification_targets_bytes = validators_balance_verification_targets + .write_targets() + .unwrap(); write_to_file( &format!("{}.plonky2_targets", 0), diff --git a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs index bfb144d32..13116ad62 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs @@ -17,7 +17,9 @@ use futures_lite::future; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::PartialWitness, - plonk::{circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs}, + plonk::{ + circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs, + }, util::serialization::Buffer, }; use redis_work_queue::{KeyPrefix, WorkQueue}; @@ -27,9 +29,6 @@ use validator_commitment_constants::get_validator_commitment_constants; use jemallocator::Jemalloc; -use serde::{Deserialize, Serialize}; -use std::fs::File; -use std::io::Write; use serde_binary::binary_stream; #[global_allocator] @@ -104,18 +103,13 @@ async fn async_main() -> Result<()> { .unwrap() .parse::() .unwrap(); - println!("{}", matches - .value_of("lease_for").unwrap()); + let lease_for = matches .value_of("lease_for") .unwrap() .parse::() .unwrap(); - let mock = matches - .value_of("mock") - .unwrap() - .parse::() - .unwrap(); + let mock = matches.value_of("mock").unwrap().parse::().unwrap(); let inner_proof_mock_binary = include_bytes!("../mock_data/inner_proof_mapper.mock"); let proof_mock_binary = include_bytes!("../mock_data/proof_mapper.mock"); @@ -152,12 +146,10 @@ async fn async_main() -> Result<()> { validator_commitment .validator .set_pw_values(&mut pw, &validator); - - let proof = if mock { - let proof_mock: ProofWithPublicInputs = serde_binary::from_slice(proof_mock_binary, binary_stream::Endian::Big).unwrap(); - proof_mock + serde_binary::from_slice(proof_mock_binary, binary_stream::Endian::Big) + .unwrap() } else { first_level_circuit_data.prove(pw)? }; @@ -196,7 +188,15 @@ async fn async_main() -> Result<()> { }; let proof = if mock { - let inner_proof_mock: ProofWithPublicInputs = serde_binary::from_slice(inner_proof_mock_binary, binary_stream::Endian::Big).unwrap(); + let inner_proof_mock: ProofWithPublicInputs< + GoldilocksField, + PoseidonGoldilocksConfig, + 2, + > = serde_binary::from_slice( + inner_proof_mock_binary, + binary_stream::Endian::Big, + ) + .unwrap(); inner_proof_mock } else { handle_commitment_mapper_inner_level_proof( @@ -206,7 +206,8 @@ async fn async_main() -> Result<()> { &inner_circuits[proof_indexes[0]].0, &inner_circuits[proof_indexes[0]].1, proof_indexes[2] == VALIDATOR_REGISTRY_LIMIT && proof_indexes[0] == 0, - )?}; + )? + }; match save_validator_proof( &mut con, From e3b72b76c20931c1568e69b3a7e8684b24c1e9c3 Mon Sep 17 00:00:00 2001 From: Dimo99 Date: Fri, 15 Dec 2023 15:37:58 +0200 Subject: [PATCH 22/59] fix mock for changed validators --- .../get_changed_validators.ts | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index 2b6a7c2a9..cafd4de0b 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -60,7 +60,7 @@ let MOCK: boolean; describe: 'Runs the tool without doing actual calculations', type: 'boolean', default: false, - description: 'Runs the tool without doing actual calculations.' + description: 'Runs the tool without doing actual calculations.', }).argv; const redis = new RedisLocal(options['redis-host'], options['redis-port']); @@ -139,28 +139,26 @@ let MOCK: boolean; while (true) { const timeBefore = Date.now(); - const validators = MOCK ? Array(TAKE).fill( { - pubkey: [ - 147, 58, 217, 73, 27, 98, 5, 157, 208, - 101, 181, 96, 210, 86, 216, 149, 122, 140, - 64, 44, 198, 232, 216, 238, 114, 144, 174, - 17, 232, 247, 50, 146, 103, 168, 129, 28, - 57, 117, 41, 218, 197, 42, 225, 52, 43, - 165, 140, 149 - ], - withdrawalCredentials: [ - 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 54, 155, 180, 158, 250, - 81, 0, 253, 59, 134, 169, 248, 40, 197, - 93, 160, 77, 45, 80 - ], - effectiveBalance: 32000000000, - slashed: false, - activationEligibilityEpoch: 0, - activationEpoch: 0, - exitEpoch: Infinity, - withdrawableEpoch: Infinity - }) :(await beaconApi.getValidators()).slice(0, TAKE); + const validators = MOCK + ? Array(TAKE).fill({ + pubkey: [ + 147, 58, 217, 73, 27, 98, 5, 157, 208, 101, 181, 96, 210, 86, 216, + 149, 122, 140, 64, 44, 198, 232, 216, 238, 114, 144, 174, 17, 232, + 247, 50, 146, 103, 168, 129, 28, 57, 117, 41, 218, 197, 42, 225, 52, + 43, 165, 140, 149, + ], + withdrawalCredentials: [ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 54, 155, 180, 158, 250, 81, + 0, 253, 59, 134, 169, 248, 40, 197, 93, 160, 77, 45, 80, + ], + effectiveBalance: 32000000000, + slashed: false, + activationEligibilityEpoch: 0, + activationEpoch: 0, + exitEpoch: Infinity, + withdrawableEpoch: Infinity, + }) + : (await beaconApi.getValidators()).slice(0, TAKE); if (prevValidators.length === 0) { console.log('prev validators are empty. Saving to redis'); @@ -189,7 +187,7 @@ let MOCK: boolean; const changedValidators = validators .map((validator, index) => ({ validator, index })) - .filter(() => {return MOCK ? true : hasValidatorChanged(prevValidators)}); + .filter(() => hasValidatorChanged(prevValidators)); await saveValidatorsInBatches(changedValidators); @@ -200,7 +198,7 @@ let MOCK: boolean; const timeAfter = Date.now(); // wait for the next epoch - if (!MOCK && timeAfter - timeBefore < 384000) { + if (timeAfter - timeBefore < 384000) { await sleep(384000 - (timeBefore - timeAfter)); } } From d74aac2342d6b70e945290568488fa5d74157acf Mon Sep 17 00:00:00 2001 From: Dimo99 Date: Fri, 15 Dec 2023 16:02:33 +0200 Subject: [PATCH 23/59] improved serialization and fixed some mock bugs in commitment mapper --- ...d_commitment_mapper_first_level_circuit.rs | 207 +++------- .../circuits/src/build_final_circuit.rs | 1 + .../plonky2/circuits/src/hash_tree_root.rs | 355 ++++-------------- .../plonky2/circuits/src/utils.rs | 93 +++-- .../src/validator_commitment_mapper.rs | 198 +++------- .../circuits/src/validator_hash_tree_root.rs | 196 +++------- .../plonky2/circuits_executables/Cargo.lock | 1 + .../plonky2/circuits_executables/Cargo.toml | 1 + .../circuits_executables/src/provers.rs | 33 +- .../circuits_executables/src/validator.rs | 60 ++- .../get_changed_validators.ts | 72 ++-- relay/implementations/redis.ts | 27 +- 12 files changed, 364 insertions(+), 880 deletions(-) diff --git a/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_first_level_circuit.rs b/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_first_level_circuit.rs index 46357ba4c..afd720e53 100644 --- a/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_first_level_circuit.rs +++ b/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_first_level_circuit.rs @@ -108,11 +108,11 @@ pub fn build_commitment_mapper_first_level_circuit() -> ( #[cfg(test)] mod test { use anyhow::Result; - use plonky2::iop::witness::{PartialWitness, WitnessWrite}; + use plonky2::iop::witness::{PartialWitness}; use crate::{ build_commitment_mapper_first_level_circuit::build_commitment_mapper_first_level_circuit, - utils::ETH_SHA256_BIT_SIZE, + utils::{SetBytesArray, ETH_SHA256_BIT_SIZE}, }; #[test] @@ -121,126 +121,34 @@ mod test { let mut pw = PartialWitness::new(); - let validator_pubkey = [ - "1", "0", "0", "1", "0", "0", "1", "1", "0", "0", "1", "1", "1", "0", "1", "0", "1", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "0", "1", "0", "0", - "0", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", "0", "0", - "0", "0", "1", "0", "1", "1", "0", "0", "1", "1", "1", "0", "1", "1", "1", "0", "1", - "0", "0", "0", "0", "0", "1", "1", "0", "0", "1", "0", "1", "1", "0", "1", "1", "0", - "1", "0", "1", "0", "1", "1", "0", "0", "0", "0", "0", "1", "1", "0", "1", "0", "0", - "1", "0", "0", "1", "0", "1", "0", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", - "0", "1", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "1", "0", "1", "0", - "1", "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", - "0", "1", "0", "1", "1", "0", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", "1", - "1", "0", "1", "0", "0", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "1", "1", - "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", - "0", "0", "0", "0", "1", "0", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", - "0", "0", "1", "1", "1", "1", "0", "1", "0", "0", "0", "1", "1", "1", "1", "0", "1", - "1", "1", "0", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "0", "1", - "0", "0", "1", "1", "0", "0", "1", "1", "1", "1", "0", "1", "0", "1", "0", "0", "0", - "1", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "1", "1", "1", "0", "0", "0", - "0", "1", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", "0", "0", - "1", "0", "1", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "0", "1", "1", "0", - "0", "0", "1", "0", "1", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "0", - "0", "0", "0", "1", "0", "0", "1", "1", "0", "1", "0", "0", "0", "0", "1", "0", "1", - "0", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "1", "0", "0", "0", "1", "1", - "0", "0", "1", "0", "0", "1", "0", "1", "0", "1", - ]; + let validator_pubkey =hex::decode("933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c95").unwrap(); + let withdrawal_credentials = + hex::decode("0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50") + .unwrap(); - let withdraw_credentials = [ - "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", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1", - "0", "1", "0", "0", "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "1", "0", "1", - "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "0", "0", "1", "1", "1", "1", "0", - "1", "1", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "0", "0", "0", "1", "0", - "0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "1", "0", "0", - "1", "1", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "0", "1", "0", "1", - "0", "1", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "0", - "1", "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", - "1", "0", "1", "1", "0", "1", "0", "0", "0", "0", "0", "0", "1", "0", "0", "1", "1", - "0", "1", "0", "0", "1", "0", "1", "1", "0", "1", "0", "1", "0", "1", "0", "0", "0", - "0", - ]; + let effective_balance = + hex::decode("0040597307000000000000000000000000000000000000000000000000000000") + .unwrap(); - let effective_balance = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "0", "1", "1", "0", "0", - "0", "0", "0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let slashed = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let slashed = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let activation_eligibility_epoch = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let activation_eligibility_epoch = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let activation_epoch = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let withdrawable_epoch = [ - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let exit_epoch = + hex::decode("ffffffffffffffff000000000000000000000000000000000000000000000000") + .unwrap(); + + let withdrawable_epoch = + hex::decode("ffffffffffffffff000000000000000000000000000000000000000000000000") + .unwrap(); let validator_hash_tree_root = [ "0", "0", "1", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", "1", "1", "1", "0", @@ -261,43 +169,36 @@ mod test { "1", ]; - for i in 0..384 { - pw.set_bool_target( - validator_commitment.validator.pubkey[i], - validator_pubkey[i] == "1", - ); - } + pw.set_bytes_array(&validator_commitment.validator.pubkey, &validator_pubkey); - for i in 0..ETH_SHA256_BIT_SIZE { - pw.set_bool_target( - validator_commitment.validator.withdrawal_credentials[i], - withdraw_credentials[i] == "1", - ); - - pw.set_bool_target( - validator_commitment.validator.effective_balance[i], - effective_balance[i] == "1", - ); - - pw.set_bool_target(validator_commitment.validator.slashed[i], slashed[i] == "1"); - - pw.set_bool_target( - validator_commitment.validator.activation_eligibility_epoch[i], - activation_eligibility_epoch[i] == "1", - ); - - pw.set_bool_target(validator_commitment.validator.activation_epoch[i], false); - - pw.set_bool_target( - validator_commitment.validator.exit_epoch[i], - if i < 64 { true } else { false }, - ); - - pw.set_bool_target( - validator_commitment.validator.withdrawable_epoch[i], - withdrawable_epoch[i] == "1", - ); - } + pw.set_bytes_array( + &validator_commitment.validator.withdrawal_credentials, + &withdrawal_credentials, + ); + + pw.set_bytes_array( + &validator_commitment.validator.effective_balance, + &effective_balance, + ); + + pw.set_bytes_array(&validator_commitment.validator.slashed, &slashed); + + pw.set_bytes_array( + &validator_commitment.validator.activation_eligibility_epoch, + &activation_eligibility_epoch, + ); + + pw.set_bytes_array( + &validator_commitment.validator.activation_epoch, + &activation_epoch, + ); + + pw.set_bytes_array(&validator_commitment.validator.exit_epoch, &exit_epoch); + + pw.set_bytes_array( + &validator_commitment.validator.withdrawable_epoch, + &withdrawable_epoch, + ); let proof = data.prove(pw).unwrap(); diff --git a/beacon-light-client/plonky2/circuits/src/build_final_circuit.rs b/beacon-light-client/plonky2/circuits/src/build_final_circuit.rs index b3c3d060e..aad926b6d 100644 --- a/beacon-light-client/plonky2/circuits/src/build_final_circuit.rs +++ b/beacon-light-client/plonky2/circuits/src/build_final_circuit.rs @@ -331,6 +331,7 @@ fn create_and_connect_merkle_branch( merkle_branch } +#[allow(dead_code)] fn create_final_config() -> CircuitConfig { let standard_recursion_config = CircuitConfig::standard_recursion_config(); diff --git a/beacon-light-client/plonky2/circuits/src/hash_tree_root.rs b/beacon-light-client/plonky2/circuits/src/hash_tree_root.rs index 845ffc45c..b2e5b35d4 100644 --- a/beacon-light-client/plonky2/circuits/src/hash_tree_root.rs +++ b/beacon-light-client/plonky2/circuits/src/hash_tree_root.rs @@ -64,7 +64,7 @@ mod tests { use anyhow::Result; use plonky2::{ field::goldilocks_field::GoldilocksField, - iop::witness::{PartialWitness, WitnessWrite}, + iop::witness::{PartialWitness}, plonk::{ circuit_builder::CircuitBuilder, circuit_data::CircuitConfig, config::PoseidonGoldilocksConfig, @@ -73,7 +73,7 @@ mod tests { use crate::{ hash_tree_root::hash_tree_root, - utils::{hash_bit_array, ETH_SHA256_BIT_SIZE}, + utils::{hash_bytes, SetBytesArray, ETH_SHA256_BIT_SIZE}, }; #[test] @@ -88,81 +88,19 @@ mod tests { let mut pw: PartialWitness = PartialWitness::new(); - let first = vec![ - "0", "1", "1", "0", "0", "1", "1", "1", "0", "0", "1", "1", "0", "1", "0", "1", "0", - "0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "0", "1", "0", "1", "1", "1", - "0", "0", "0", "1", "1", "0", "1", "0", "0", "0", "0", "0", "1", "1", "0", "1", "1", - "1", "0", "1", "1", "1", "0", "1", "1", "1", "1", "1", "1", "0", "0", "1", "0", "1", - "1", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "1", "0", "0", "1", "1", "0", - "1", "1", "1", "1", "1", "0", "0", "1", "1", "0", "0", "1", "1", "1", "0", "0", "0", - "0", "1", "1", "1", "1", "1", "0", "1", "1", "0", "0", "1", "1", "0", "0", "1", "0", - "1", "0", "0", "1", "0", "0", "0", "1", "1", "0", "0", "0", "0", "0", "0", "1", "0", - "0", "1", "1", "1", "0", "1", "1", "0", "1", "0", "0", "0", "1", "1", "0", "0", "0", - "0", "1", "0", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", "1", "0", "1", "0", - "1", "1", "1", "0", "0", "0", "0", "1", "0", "1", "1", "1", "0", "0", "0", "1", "1", - "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "1", "1", "0", "0", "0", "1", - "1", "1", "0", "0", "0", "1", "0", "0", "0", "1", "0", "0", "1", "0", "1", "1", "0", - "1", "1", "0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "1", "1", "0", - "0", "0", "0", "0", "0", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "1", "0", - "1", - ]; + let first = hex::decode("67350f85c683777e5ec537cce1f6652302768c2636b85c6d8b1c44b67f981d2d") + .unwrap(); - let second = vec![ - "0", "0", "1", "1", "0", "1", "0", "1", "1", "1", "0", "0", "1", "1", "0", "1", "1", - "0", "0", "1", "0", "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", - "1", "0", "1", "0", "1", "1", "0", "1", "1", "0", "1", "0", "0", "0", "1", "1", "1", - "1", "1", "0", "1", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", - "0", "0", "1", "0", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", "1", "0", "1", - "0", "0", "0", "0", "0", "1", "1", "1", "0", "1", "0", "0", "1", "1", "1", "1", "0", - "1", "0", "1", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "1", "0", "0", "1", - "0", "1", "0", "1", "1", "1", "0", "1", "1", "0", "0", "1", "1", "1", "1", "1", "1", - "0", "1", "0", "1", "1", "0", "1", "0", "0", "1", "1", "0", "0", "0", "1", "0", "0", - "0", "1", "0", "0", "1", "0", "1", "0", "0", "0", "0", "1", "0", "0", "0", "1", "0", - "1", "1", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "1", "1", "1", - "1", "1", "0", "0", "1", "0", "1", "1", "1", "1", "0", "1", "1", "1", "1", "1", "0", - "1", "0", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "1", "1", "0", "1", - "0", "0", "1", "1", "1", "1", "0", "1", "0", "1", "1", "0", "0", "0", "0", "0", "0", - "1", "1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", "1", - "0", - ]; + let second = + hex::decode("35cd95976b68fad8d270a83a7a8092bb3f5a622508b3b6f97be8ede9eb03ddb2") + .unwrap(); - let third = vec![ - "1", "0", "0", "1", "1", "1", "0", "1", "1", "1", "0", "0", "1", "1", "0", "0", "0", - "0", "0", "0", "0", "0", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", - "1", "1", "0", "0", "0", "0", "0", "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", - "0", "1", "0", "1", "0", "1", "1", "1", "1", "1", "1", "0", "0", "1", "0", "0", "1", - "1", "0", "0", "0", "1", "1", "0", "1", "1", "0", "0", "1", "0", "0", "0", "0", "1", - "1", "1", "0", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "0", "1", "0", - "1", "0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "1", "1", "0", "0", "1", "0", - "0", "1", "1", "1", "1", "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "1", - "1", "0", "0", "0", "1", "1", "0", "0", "1", "1", "0", "1", "1", "1", "0", "0", "1", - "0", "0", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", "0", "0", "1", - "1", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0", "1", "0", - "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "1", "0", "0", "0", "0", "1", "1", - "1", "0", "1", "0", "0", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "0", - "1", "1", "0", "0", "0", "1", "0", "0", "1", "1", "1", "0", "1", "0", "0", "0", "0", - "0", "0", "0", "1", "0", "0", "0", "1", "1", "1", "0", "0", "1", "1", "0", "1", "0", - "0", - ]; + let third = hex::decode("9dcc025d70596afc98d90e2aeaff64fb2f8cdc8cba67c743143a783627404734") + .unwrap(); - let fourth = vec![ - "1", "1", "0", "0", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "1", "1", "0", "0", - "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", "1", "1", "0", "1", "0", - "0", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", - "1", "0", "1", "1", "1", "1", "0", "0", "1", "0", "0", "1", "0", "1", "0", "1", "1", - "0", "1", "0", "0", "1", "1", "0", "1", "0", "0", "1", "0", "0", "0", "1", "1", "0", - "0", "1", "0", "0", "0", "0", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", - "1", "1", "1", "0", "1", "1", "0", "1", "0", "1", "1", "0", "1", "1", "1", "1", "1", - "0", "1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", - "0", "0", "0", "0", "1", "0", "1", "1", "0", "0", "1", "0", "0", "1", "0", "0", "0", - "0", "1", "1", "0", "1", "1", "1", "1", "1", "0", "1", "0", "0", "0", "1", "0", "1", - "0", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "1", "1", "1", "0", "1", "0", - "1", "1", "0", "1", "1", "0", "1", "1", "1", "1", "0", "1", "0", "0", "1", "1", "1", - "0", "0", "1", "1", "1", "0", "0", "1", "1", "0", "0", "1", "0", "0", "1", "0", "0", - "0", "0", "0", "1", "1", "0", "1", "1", "1", "1", "0", "1", "0", "0", "0", "0", "0", - "1", - ]; + let fourth = + hex::decode("c3b6594b1b1343b69bc95a69190b85dadf776205921be8a1f3adbd39cc906f41") + .unwrap(); let hash_tree_root = vec![ "1", "0", "0", "1", "0", "1", "0", "0", "0", "0", "1", "1", "1", "1", "0", "0", "1", @@ -183,12 +121,10 @@ mod tests { "0", ]; - for i in 0..256 { - pw.set_bool_target(targets.leaves[0][i], first[i] == "1"); - pw.set_bool_target(targets.leaves[1][i], second[i] == "1"); - pw.set_bool_target(targets.leaves[2][i], third[i] == "1"); - pw.set_bool_target(targets.leaves[3][i], fourth[i] == "1"); - } + pw.set_bytes_array(&targets.leaves[0], &first); + pw.set_bytes_array(&targets.leaves[1], &second); + pw.set_bytes_array(&targets.leaves[2], &third); + pw.set_bytes_array(&targets.leaves[3], &fourth); for i in 0..256 { if hash_tree_root[i] == "1" { @@ -206,126 +142,36 @@ mod tests { #[test] fn validators_hash_tree_root() -> Result<()> { - let validator_pubkey = [ - "1", "0", "0", "1", "0", "0", "1", "1", "0", "0", "1", "1", "1", "0", "1", "0", "1", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "0", "1", "0", "0", - "0", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", "0", "0", - "0", "0", "1", "0", "1", "1", "0", "0", "1", "1", "1", "0", "1", "1", "1", "0", "1", - "0", "0", "0", "0", "0", "1", "1", "0", "0", "1", "0", "1", "1", "0", "1", "1", "0", - "1", "0", "1", "0", "1", "1", "0", "0", "0", "0", "0", "1", "1", "0", "1", "0", "0", - "1", "0", "0", "1", "0", "1", "0", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", - "0", "1", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "1", "0", "1", "0", - "1", "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", - "0", "1", "0", "1", "1", "0", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", "1", - "1", "0", "1", "0", "0", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "1", "1", - "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", - "0", "0", "0", "0", "1", "0", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", - "0", "0", "1", "1", "1", "1", "0", "1", "0", "0", "0", "1", "1", "1", "1", "0", "1", - "1", "1", "0", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "0", "1", - "0", "0", "1", "1", "0", "0", "1", "1", "1", "1", "0", "1", "0", "1", "0", "0", "0", - "1", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "1", "1", "1", "0", "0", "0", - "0", "1", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", "0", "0", - "1", "0", "1", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "0", "1", "1", "0", - "0", "0", "1", "0", "1", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "0", - "0", "0", "0", "1", "0", "0", "1", "1", "0", "1", "0", "0", "0", "0", "1", "0", "1", - "0", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "1", "0", "0", "0", "1", "1", - "0", "0", "1", "0", "0", "1", "0", "1", "0", "1", - ]; + let validator_pubkey =hex::decode("933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c9500000000000000000000000000000000").unwrap(); + let validator_pubkey = hash_bytes(&validator_pubkey); - let withdraw_credentials = [ - "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", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1", - "0", "1", "0", "0", "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "1", "0", "1", - "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "0", "0", "1", "1", "1", "1", "0", - "1", "1", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "0", "0", "0", "1", "0", - "0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "1", "0", "0", - "1", "1", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "0", "1", "0", "1", - "0", "1", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "0", - "1", "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", - "1", "0", "1", "1", "0", "1", "0", "0", "0", "0", "0", "0", "1", "0", "0", "1", "1", - "0", "1", "0", "0", "1", "0", "1", "1", "0", "1", "0", "1", "0", "1", "0", "0", "0", - "0", - ]; + let withdrawal_credentials = + hex::decode("0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50") + .unwrap(); - let effective_balance = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "0", "1", "1", "0", "0", - "0", "0", "0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let effective_balance = + hex::decode("0040597307000000000000000000000000000000000000000000000000000000") + .unwrap(); - let slashed = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let slashed = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let activation_eligibility_epoch = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let activation_eligibility_epoch = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let withdrawable_epoch = [ - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let activation_epoch = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); + + let exit_epoch = + hex::decode("ffffffffffffffff000000000000000000000000000000000000000000000000") + .unwrap(); + + let withdrawable_epoch = + hex::decode("ffffffffffffffff000000000000000000000000000000000000000000000000") + .unwrap(); let validator_hash_tree_root = [ "0", "0", "1", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", "1", "1", "1", "0", @@ -350,24 +196,27 @@ mod tests { type C = PoseidonGoldilocksConfig; type F = GoldilocksField; - let pubkey_binary_result = hash_bit_array(validator_pubkey.to_vec()); - let mut builder = CircuitBuilder::::new(CircuitConfig::standard_recursion_config()); let targets = hash_tree_root(&mut builder, 8); let mut pw: PartialWitness = PartialWitness::new(); - for i in 0..ETH_SHA256_BIT_SIZE { - pw.set_bool_target(targets.leaves[0][i], pubkey_binary_result[i] == "1"); - pw.set_bool_target(targets.leaves[1][i], withdraw_credentials[i] == "1"); - pw.set_bool_target(targets.leaves[2][i], effective_balance[i] == "1"); - pw.set_bool_target(targets.leaves[3][i], slashed[i] == "1"); - pw.set_bool_target(targets.leaves[4][i], activation_eligibility_epoch[i] == "1"); - pw.set_bool_target(targets.leaves[5][i], false); - pw.set_bool_target(targets.leaves[6][i], if i < 64 { true } else { false }); - pw.set_bool_target(targets.leaves[7][i], withdrawable_epoch[i] == "1"); - } + pw.set_bytes_array(&targets.leaves[0], &validator_pubkey); + + pw.set_bytes_array(&targets.leaves[1], &withdrawal_credentials); + + pw.set_bytes_array(&targets.leaves[2], &effective_balance); + + pw.set_bytes_array(&targets.leaves[3], &slashed); + + pw.set_bytes_array(&targets.leaves[4], &activation_eligibility_epoch); + + pw.set_bytes_array(&targets.leaves[5], &activation_epoch); + + pw.set_bytes_array(&targets.leaves[6], &exit_epoch); + + pw.set_bytes_array(&targets.leaves[7], &withdrawable_epoch); for i in 0..ETH_SHA256_BIT_SIZE { if validator_hash_tree_root[i] == "1" { @@ -396,81 +245,19 @@ mod tests { let mut pw: PartialWitness = PartialWitness::new(); - let first = vec![ - "0", "1", "1", "0", "0", "1", "1", "1", "0", "0", "1", "1", "0", "1", "0", "1", "0", - "0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "0", "1", "0", "1", "1", "1", - "0", "0", "0", "1", "1", "0", "1", "0", "0", "0", "0", "0", "1", "1", "0", "1", "1", - "1", "0", "1", "1", "1", "0", "1", "1", "1", "1", "1", "1", "0", "0", "1", "0", "1", - "1", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "1", "0", "0", "1", "1", "0", - "1", "1", "1", "1", "1", "0", "0", "1", "1", "0", "0", "1", "1", "1", "0", "0", "0", - "0", "1", "1", "1", "1", "1", "0", "1", "1", "0", "0", "1", "1", "0", "0", "1", "0", - "1", "0", "0", "1", "0", "0", "0", "1", "1", "0", "0", "0", "0", "0", "0", "1", "0", - "0", "1", "1", "1", "0", "1", "1", "0", "1", "0", "0", "0", "1", "1", "0", "0", "0", - "0", "1", "0", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", "1", "0", "1", "0", - "1", "1", "1", "0", "0", "0", "0", "1", "0", "1", "1", "1", "0", "0", "0", "1", "1", - "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "1", "1", "0", "0", "0", "1", - "1", "1", "0", "0", "0", "1", "0", "0", "0", "1", "0", "0", "1", "0", "1", "1", "0", - "1", "1", "0", "0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "1", "1", "0", - "0", "0", "0", "0", "0", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "1", "0", - "1", - ]; + let first = hex::decode("67350f85c683777e5ec537cce1f6652302768c2636b85c6d8b1c44b67f981d2d") + .unwrap(); - let second = vec![ - "0", "0", "1", "1", "0", "1", "0", "1", "1", "1", "0", "0", "1", "1", "0", "1", "1", - "0", "0", "1", "0", "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", - "1", "0", "1", "0", "1", "1", "0", "1", "1", "0", "1", "0", "0", "0", "1", "1", "1", - "1", "1", "0", "1", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", - "0", "0", "1", "0", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", "1", "0", "1", - "0", "0", "0", "0", "0", "1", "1", "1", "0", "1", "0", "0", "1", "1", "1", "1", "0", - "1", "0", "1", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "1", "0", "0", "1", - "0", "1", "0", "1", "1", "1", "0", "1", "1", "0", "0", "1", "1", "1", "1", "1", "1", - "0", "1", "0", "1", "1", "0", "1", "0", "0", "1", "1", "0", "0", "0", "1", "0", "0", - "0", "1", "0", "0", "1", "0", "1", "0", "0", "0", "0", "1", "0", "0", "0", "1", "0", - "1", "1", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "1", "1", "1", - "1", "1", "0", "0", "1", "0", "1", "1", "1", "1", "0", "1", "1", "1", "1", "1", "0", - "1", "0", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "1", "1", "0", "1", - "0", "0", "1", "1", "1", "1", "0", "1", "0", "1", "1", "0", "0", "0", "0", "0", "0", - "1", "1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", "1", - "0", - ]; + let second = + hex::decode("35cd95976b68fad8d270a83a7a8092bb3f5a622508b3b6f97be8ede9eb03ddb2") + .unwrap(); - let third = vec![ - "1", "0", "0", "1", "1", "1", "0", "1", "1", "1", "0", "0", "1", "1", "0", "0", "0", - "0", "0", "0", "0", "0", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", - "1", "1", "0", "0", "0", "0", "0", "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", - "0", "1", "0", "1", "0", "1", "1", "1", "1", "1", "1", "0", "0", "1", "0", "0", "1", - "1", "0", "0", "0", "1", "1", "0", "1", "1", "0", "0", "1", "0", "0", "0", "0", "1", - "1", "1", "0", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "0", "1", "0", - "1", "0", "1", "1", "1", "1", "1", "1", "1", "1", "0", "1", "1", "0", "0", "1", "0", - "0", "1", "1", "1", "1", "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "1", - "1", "0", "0", "0", "1", "1", "0", "0", "1", "1", "0", "1", "1", "1", "0", "0", "1", - "0", "0", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", "0", "0", "1", - "1", "0", "0", "1", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0", "1", "0", - "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "1", "0", "0", "0", "0", "1", "1", - "1", "0", "1", "0", "0", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "1", "0", - "1", "1", "0", "0", "0", "1", "0", "0", "1", "1", "1", "0", "1", "0", "0", "0", "0", - "0", "0", "0", "1", "0", "0", "0", "1", "1", "1", "0", "0", "1", "1", "0", "1", "0", - "0", - ]; + let third = hex::decode("9dcc025d70596afc98d90e2aeaff64fb2f8cdc8cba67c743143a783627404734") + .unwrap(); - let fourth = vec![ - "1", "1", "0", "0", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "1", "1", "0", "0", - "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", "1", "1", "0", "1", "0", - "0", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", - "1", "0", "1", "1", "1", "1", "0", "0", "1", "0", "0", "1", "0", "1", "0", "1", "1", - "0", "1", "0", "0", "1", "1", "0", "1", "0", "0", "1", "0", "0", "0", "1", "1", "0", - "0", "1", "0", "0", "0", "0", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", - "1", "1", "1", "0", "1", "1", "0", "1", "0", "1", "1", "0", "1", "1", "1", "1", "1", - "0", "1", "1", "1", "0", "1", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", - "0", "0", "0", "0", "1", "0", "1", "1", "0", "0", "1", "0", "0", "1", "0", "0", "0", - "0", "1", "1", "0", "1", "1", "1", "1", "1", "0", "1", "0", "0", "0", "1", "0", "1", - "0", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "1", "1", "1", "0", "1", "0", - "1", "1", "0", "1", "1", "0", "1", "1", "1", "1", "0", "1", "0", "0", "1", "1", "1", - "0", "0", "1", "1", "1", "0", "0", "1", "1", "0", "0", "1", "0", "0", "1", "0", "0", - "0", "0", "0", "1", "1", "0", "1", "1", "1", "1", "0", "1", "0", "0", "0", "0", "0", - "1", - ]; + let fourth = + hex::decode("c3b6594b1b1343b69bc95a69190b85dadf776205921be8a1f3adbd39cc906f41") + .unwrap(); let hash_tree_root = vec![ "1", "0", "0", "1", "0", "1", "0", "0", "0", "0", "1", "1", "1", "1", "0", "0", "1", @@ -491,12 +278,10 @@ mod tests { "1", ]; - for i in 0..ETH_SHA256_BIT_SIZE { - pw.set_bool_target(targets.leaves[0][i], first[i] == "1"); - pw.set_bool_target(targets.leaves[1][i], second[i] == "1"); - pw.set_bool_target(targets.leaves[2][i], third[i] == "1"); - pw.set_bool_target(targets.leaves[3][i], fourth[i] == "1"); - } + pw.set_bytes_array(&targets.leaves[0], &first); + pw.set_bytes_array(&targets.leaves[1], &second); + pw.set_bytes_array(&targets.leaves[2], &third); + pw.set_bytes_array(&targets.leaves[3], &fourth); for i in 0..ETH_SHA256_BIT_SIZE { if hash_tree_root[i] == "1" { diff --git a/beacon-light-client/plonky2/circuits/src/utils.rs b/beacon-light-client/plonky2/circuits/src/utils.rs index c17db665c..786de5e5c 100644 --- a/beacon-light-client/plonky2/circuits/src/utils.rs +++ b/beacon-light-client/plonky2/circuits/src/utils.rs @@ -1,5 +1,10 @@ use plonky2::{ - field::extension::Extendable, hash::hash_types::RichField, iop::target::BoolTarget, + field::{extension::Extendable, types::Field}, + hash::hash_types::RichField, + iop::{ + target::BoolTarget, + witness::{PartialWitness, WitnessWrite}, + }, plonk::circuit_builder::CircuitBuilder, }; use plonky2_u32::gadgets::arithmetic_u32::U32Target; @@ -10,39 +15,10 @@ use crate::biguint::{BigUintTarget, CircuitBuilderBiguint}; pub const ETH_SHA256_BIT_SIZE: usize = 256; pub const POSEIDON_HASH_SIZE: usize = 4; -pub fn hash_bit_array(validator_pubkey: Vec<&str>) -> Vec { - // Concatenate the array into a single binary string - let binary_string: String = validator_pubkey.join(""); - - // Convert binary string to bytes - let mut byte_string: Vec = binary_string - .as_str() - .chars() - .collect::>() - .chunks(8) - .map(|chunk| { - let byte_str: String = chunk.into_iter().collect(); - u8::from_str_radix(&byte_str, 2).unwrap() - }) - .collect(); - - byte_string.resize(64, 0); - +pub fn hash_bytes(bytes: &[u8]) -> Vec { let mut hasher = Sha256::new(); - hasher.update(byte_string); - let result = hasher.finalize(); - - let pubkey_binary_result: Vec = result - .iter() - .map(|byte| { - format!("{:08b}", byte) - .chars() - .map(|ch| ch.to_string()) - .collect::>() - }) - .flatten() - .collect(); - pubkey_binary_result + hasher.update(bytes); + hasher.finalize().to_vec() } pub fn biguint_is_equal, const D: usize>( @@ -187,6 +163,57 @@ pub fn if_biguint, const D: usize>( result } +pub fn bytes_to_bools(bytes: &[u8]) -> Vec { + let mut bool_values = Vec::new(); + + for value in bytes { + for i in (0..8).rev() { + let mask = 1 << i; + bool_values.push(value & mask != 0); + } + } + + bool_values +} + +pub fn bools_to_bytes(bools: &[bool]) -> Vec { + let mut bytes = Vec::new(); + let mut byte = 0u8; + + for (index, bit) in bools.iter().enumerate() { + if *bit { + byte |= 1 << (7 - (index % 8)); + } + + if index % 8 == 7 { + bytes.push(byte); + byte = 0; + } + } + + if bools.len() % 8 != 0 { + bytes.push(byte); + } + + bytes +} + +pub trait SetBytesArray { + fn set_bytes_array(&mut self, targets: &[BoolTarget], values: &[u8]); +} + +impl SetBytesArray for PartialWitness { + fn set_bytes_array(&mut self, targets: &[BoolTarget], values: &[u8]) { + assert!(targets.len() == values.len() * 8); + + let bool_values = bytes_to_bools(values); + + for i in 0..targets.len() { + self.set_bool_target(targets[i], bool_values[i]); + } + } +} + #[cfg(test)] mod test_ssz_num_from_bits { use anyhow::Result; diff --git a/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs b/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs index ccbecb785..265334662 100644 --- a/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs @@ -123,7 +123,9 @@ mod test { use anyhow::Result; use plonky2::{ field::goldilocks_field::GoldilocksField, - iop::witness::{PartialWitness, WitnessWrite}, + iop::{ + witness::{PartialWitness}, + }, plonk::{ circuit_builder::CircuitBuilder, circuit_data::CircuitConfig, config::PoseidonGoldilocksConfig, @@ -131,7 +133,8 @@ mod test { }; use crate::{ - utils::ETH_SHA256_BIT_SIZE, validator_commitment_mapper::validator_commitment_mapper, + utils::{SetBytesArray, ETH_SHA256_BIT_SIZE}, + validator_commitment_mapper::validator_commitment_mapper, }; #[test] @@ -146,126 +149,34 @@ mod test { let mut pw = PartialWitness::new(); - let validator_pubkey = [ - "1", "0", "0", "1", "0", "0", "1", "1", "0", "0", "1", "1", "1", "0", "1", "0", "1", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "0", "1", "0", "0", - "0", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", "0", "0", - "0", "0", "1", "0", "1", "1", "0", "0", "1", "1", "1", "0", "1", "1", "1", "0", "1", - "0", "0", "0", "0", "0", "1", "1", "0", "0", "1", "0", "1", "1", "0", "1", "1", "0", - "1", "0", "1", "0", "1", "1", "0", "0", "0", "0", "0", "1", "1", "0", "1", "0", "0", - "1", "0", "0", "1", "0", "1", "0", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", - "0", "1", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "1", "0", "1", "0", - "1", "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", - "0", "1", "0", "1", "1", "0", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", "1", - "1", "0", "1", "0", "0", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "1", "1", - "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", - "0", "0", "0", "0", "1", "0", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", - "0", "0", "1", "1", "1", "1", "0", "1", "0", "0", "0", "1", "1", "1", "1", "0", "1", - "1", "1", "0", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "0", "1", - "0", "0", "1", "1", "0", "0", "1", "1", "1", "1", "0", "1", "0", "1", "0", "0", "0", - "1", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "1", "1", "1", "0", "0", "0", - "0", "1", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", "0", "0", - "1", "0", "1", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "0", "1", "1", "0", - "0", "0", "1", "0", "1", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "0", - "0", "0", "0", "1", "0", "0", "1", "1", "0", "1", "0", "0", "0", "0", "1", "0", "1", - "0", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "1", "0", "0", "0", "1", "1", - "0", "0", "1", "0", "0", "1", "0", "1", "0", "1", - ]; + let validator_pubkey =hex::decode("933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c95").unwrap(); + let withdrawal_credentials = + hex::decode("0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50") + .unwrap(); - let withdraw_credentials = [ - "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", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1", - "0", "1", "0", "0", "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "1", "0", "1", - "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "0", "0", "1", "1", "1", "1", "0", - "1", "1", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "0", "0", "0", "1", "0", - "0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "1", "0", "0", - "1", "1", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "0", "1", "0", "1", - "0", "1", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "0", - "1", "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", - "1", "0", "1", "1", "0", "1", "0", "0", "0", "0", "0", "0", "1", "0", "0", "1", "1", - "0", "1", "0", "0", "1", "0", "1", "1", "0", "1", "0", "1", "0", "1", "0", "0", "0", - "0", - ]; + let effective_balance = + hex::decode("0040597307000000000000000000000000000000000000000000000000000000") + .unwrap(); - let effective_balance = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "0", "1", "1", "0", "0", - "0", "0", "0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let slashed = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let slashed = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let activation_eligibility_epoch = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let activation_eligibility_epoch = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let activation_epoch = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let withdrawable_epoch = [ - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let exit_epoch = + hex::decode("ffffffffffffffff000000000000000000000000000000000000000000000000") + .unwrap(); + + let withdrawable_epoch = + hex::decode("ffffffffffffffff000000000000000000000000000000000000000000000000") + .unwrap(); let validator_hash_tree_root = [ "0", "0", "1", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", "1", "1", "1", "0", @@ -286,40 +197,27 @@ mod test { "1", ]; - for i in 0..384 { - pw.set_bool_target(targets.validator.pubkey[i], validator_pubkey[i] == "1"); - } + pw.set_bytes_array(&targets.validator.pubkey, &validator_pubkey); - for i in 0..ETH_SHA256_BIT_SIZE { - pw.set_bool_target( - targets.validator.withdrawal_credentials[i], - withdraw_credentials[i] == "1", - ); - - pw.set_bool_target( - targets.validator.effective_balance[i], - effective_balance[i] == "1", - ); - - pw.set_bool_target(targets.validator.slashed[i], slashed[i] == "1"); - - pw.set_bool_target( - targets.validator.activation_eligibility_epoch[i], - activation_eligibility_epoch[i] == "1", - ); - - pw.set_bool_target(targets.validator.activation_epoch[i], false); - - pw.set_bool_target( - targets.validator.exit_epoch[i], - if i < 64 { true } else { false }, - ); - - pw.set_bool_target( - targets.validator.withdrawable_epoch[i], - withdrawable_epoch[i] == "1", - ); - } + pw.set_bytes_array( + &targets.validator.withdrawal_credentials, + &withdrawal_credentials, + ); + + pw.set_bytes_array( + &targets.validator.activation_eligibility_epoch, + &activation_eligibility_epoch, + ); + + pw.set_bytes_array(&targets.validator.activation_epoch, &activation_epoch); + + pw.set_bytes_array(&targets.validator.slashed, &slashed); + + pw.set_bytes_array(&targets.validator.effective_balance, &effective_balance); + + pw.set_bytes_array(&targets.validator.exit_epoch, &exit_epoch); + + pw.set_bytes_array(&targets.validator.withdrawable_epoch, &withdrawable_epoch); for i in 0..ETH_SHA256_BIT_SIZE { if validator_hash_tree_root[i] == "1" { diff --git a/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root.rs b/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root.rs index 805103b6d..d5379a250 100644 --- a/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root.rs +++ b/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root.rs @@ -146,7 +146,7 @@ mod test { use anyhow::Result; use plonky2::{ field::goldilocks_field::GoldilocksField, - iop::witness::{PartialWitness, WitnessWrite}, + iop::witness::{PartialWitness}, plonk::{ circuit_builder::CircuitBuilder, circuit_data::CircuitConfig, config::PoseidonGoldilocksConfig, @@ -154,7 +154,7 @@ mod test { }; use crate::{ - utils::ETH_SHA256_BIT_SIZE, validator_hash_tree_root::hash_tree_root_validator_sha256, + utils::{ETH_SHA256_BIT_SIZE, SetBytesArray}, validator_hash_tree_root::hash_tree_root_validator_sha256, }; #[test] @@ -169,126 +169,34 @@ mod test { let mut pw = PartialWitness::new(); - let validator_pubkey = [ - "1", "0", "0", "1", "0", "0", "1", "1", "0", "0", "1", "1", "1", "0", "1", "0", "1", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "0", "1", "0", "0", - "0", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", "0", "0", - "0", "0", "1", "0", "1", "1", "0", "0", "1", "1", "1", "0", "1", "1", "1", "0", "1", - "0", "0", "0", "0", "0", "1", "1", "0", "0", "1", "0", "1", "1", "0", "1", "1", "0", - "1", "0", "1", "0", "1", "1", "0", "0", "0", "0", "0", "1", "1", "0", "1", "0", "0", - "1", "0", "0", "1", "0", "1", "0", "1", "1", "0", "1", "1", "0", "1", "1", "0", "0", - "0", "1", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "1", "0", "1", "0", - "1", "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", - "0", "1", "0", "1", "1", "0", "0", "1", "1", "0", "0", "0", "1", "1", "0", "1", "1", - "1", "0", "1", "0", "0", "0", "1", "1", "0", "1", "1", "0", "0", "0", "1", "1", "1", - "0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", - "0", "0", "0", "0", "1", "0", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", - "0", "0", "1", "1", "1", "1", "0", "1", "0", "0", "0", "1", "1", "1", "1", "0", "1", - "1", "1", "0", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "0", "1", - "0", "0", "1", "1", "0", "0", "1", "1", "1", "1", "0", "1", "0", "1", "0", "0", "0", - "1", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "1", "1", "1", "0", "0", "0", - "0", "1", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", "0", "0", - "1", "0", "1", "0", "0", "1", "1", "1", "0", "1", "1", "0", "1", "0", "1", "1", "0", - "0", "0", "1", "0", "1", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "0", - "0", "0", "0", "1", "0", "0", "1", "1", "0", "1", "0", "0", "0", "0", "1", "0", "1", - "0", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "1", "0", "0", "0", "1", "1", - "0", "0", "1", "0", "0", "1", "0", "1", "0", "1", - ]; + let validator_pubkey =hex::decode("933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c95").unwrap(); + let withdrawal_credentials = + hex::decode("0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50") + .unwrap(); - let withdraw_credentials = [ - "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", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1", - "0", "1", "0", "0", "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "1", "0", "1", - "1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "0", "0", "1", "1", "1", "1", "0", - "1", "1", "1", "1", "1", "0", "1", "0", "0", "1", "0", "1", "0", "0", "0", "1", "0", - "0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "1", "0", "0", - "1", "1", "1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "1", "0", "1", "0", "1", - "0", "1", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "1", "0", - "1", "0", "0", "0", "1", "1", "0", "0", "0", "1", "0", "1", "0", "1", "0", "1", "1", - "1", "0", "1", "1", "0", "1", "0", "0", "0", "0", "0", "0", "1", "0", "0", "1", "1", - "0", "1", "0", "0", "1", "0", "1", "1", "0", "1", "0", "1", "0", "1", "0", "0", "0", - "0", - ]; + let effective_balance = + hex::decode("0040597307000000000000000000000000000000000000000000000000000000") + .unwrap(); - let effective_balance = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", - "1", "0", "1", "1", "0", "0", "1", "0", "1", "1", "1", "0", "0", "1", "1", "0", "0", - "0", "0", "0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let slashed = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let slashed = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let activation_eligibility_epoch = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let activation_eligibility_epoch = [ - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let activation_epoch = + hex::decode("0000000000000000000000000000000000000000000000000000000000000000") + .unwrap(); - let withdrawable_epoch = [ - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", - "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", - "0", - ]; + let exit_epoch = + hex::decode("ffffffffffffffff000000000000000000000000000000000000000000000000") + .unwrap(); + + let withdrawable_epoch = + hex::decode("ffffffffffffffff000000000000000000000000000000000000000000000000") + .unwrap(); let validator_hash_tree_root = [ "0", "0", "1", "0", "1", "0", "1", "1", "1", "0", "1", "0", "1", "1", "1", "1", "0", @@ -309,40 +217,28 @@ mod test { "1", ]; - for i in 0..384 { - pw.set_bool_target(targets.validator.pubkey[i], validator_pubkey[i] == "1"); - } + pw.set_bytes_array(&targets.validator.pubkey, &validator_pubkey); + + pw.set_bytes_array( + &targets.validator.withdrawal_credentials, + &withdrawal_credentials, + ); + + pw.set_bytes_array( + &targets.validator.activation_eligibility_epoch, + &activation_eligibility_epoch, + ); + + pw.set_bytes_array(&targets.validator.activation_epoch, &activation_epoch); + + pw.set_bytes_array(&targets.validator.slashed, &slashed); + + pw.set_bytes_array(&targets.validator.effective_balance, &effective_balance); + + pw.set_bytes_array(&targets.validator.exit_epoch, &exit_epoch); + + pw.set_bytes_array(&targets.validator.withdrawable_epoch, &withdrawable_epoch); - for i in 0..ETH_SHA256_BIT_SIZE { - pw.set_bool_target( - targets.validator.withdrawal_credentials[i], - withdraw_credentials[i] == "1", - ); - - pw.set_bool_target( - targets.validator.effective_balance[i], - effective_balance[i] == "1", - ); - - pw.set_bool_target(targets.validator.slashed[i], slashed[i] == "1"); - - pw.set_bool_target( - targets.validator.activation_eligibility_epoch[i], - activation_eligibility_epoch[i] == "1", - ); - - pw.set_bool_target(targets.validator.activation_epoch[i], false); - - pw.set_bool_target( - targets.validator.exit_epoch[i], - if i < 64 { true } else { false }, - ); - - pw.set_bool_target( - targets.validator.withdrawable_epoch[i], - withdrawable_epoch[i] == "1", - ); - } for i in 0..ETH_SHA256_BIT_SIZE { if validator_hash_tree_root[i] == "1" { diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.lock b/beacon-light-client/plonky2/circuits_executables/Cargo.lock index 03f513766..c14983831 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.lock +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.lock @@ -303,6 +303,7 @@ dependencies = [ "circuits", "clap", "futures-lite", + "hex", "jemallocator", "jsonm", "num", diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.toml b/beacon-light-client/plonky2/circuits_executables/Cargo.toml index 784116c3d..2508717a9 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.toml +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.toml @@ -13,6 +13,7 @@ redis = "0.22" serde = "1.0.164" serde_json = "1.0.96" anyhow = "1.0.71" +hex = "0.4.3" redis-work-queue = "0.1.3" futures-lite = "1" jemallocator = "0.5.0" diff --git a/beacon-light-client/plonky2/circuits_executables/src/provers.rs b/beacon-light-client/plonky2/circuits_executables/src/provers.rs index 2d43015fe..a15023bc8 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/provers.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/provers.rs @@ -1,7 +1,7 @@ use circuits::{ biguint::WitnessBigUint, build_balance_inner_level_circuit::BalanceInnerCircuitTargets, build_commitment_mapper_inner_level_circuit::CommitmentMapperInnerCircuitTargets, - build_final_circuit::FinalCircuitTargets, + build_final_circuit::FinalCircuitTargets, utils::SetBytesArray, validator_balance_circuit::ValidatorBalanceVerificationTargets, validator_hash_tree_root::ValidatorShaTargets, validator_hash_tree_root_poseidon::ValidatorPoseidonTargets, @@ -179,29 +179,36 @@ impl SetPWValues for ValidatorBalanceVerificationTargets impl SetPWValues for ValidatorShaTargets { fn set_pw_values(&self, pw: &mut PartialWitness, source: &ValidatorShaInput) { - set_boolean_pw_values(pw, &self.pubkey, &source.pubkey); + pw.set_bytes_array(&self.pubkey, &hex::decode(&source.pubkey).unwrap()); - set_boolean_pw_values( - pw, + pw.set_bytes_array( &self.withdrawal_credentials, - &source.withdrawal_credentials, + &hex::decode(&source.withdrawal_credentials).unwrap(), ); - set_boolean_pw_values(pw, &self.effective_balance, &source.effective_balance); + pw.set_bytes_array( + &self.effective_balance, + &hex::decode(&source.effective_balance).unwrap(), + ); - set_boolean_pw_values(pw, &self.slashed, &source.slashed); + pw.set_bytes_array(&self.slashed, &hex::decode(&source.slashed).unwrap()); - set_boolean_pw_values( - pw, + pw.set_bytes_array( &self.activation_eligibility_epoch, - &source.activation_eligibility_epoch, + &hex::decode(&source.activation_eligibility_epoch).unwrap(), ); - set_boolean_pw_values(pw, &self.activation_epoch, &source.activation_epoch); + pw.set_bytes_array( + &self.activation_epoch, + &hex::decode(&source.activation_epoch).unwrap(), + ); - set_boolean_pw_values(pw, &self.exit_epoch, &source.exit_epoch); + pw.set_bytes_array(&self.exit_epoch, &hex::decode(&source.exit_epoch).unwrap()); - set_boolean_pw_values(pw, &self.withdrawable_epoch, &source.withdrawable_epoch); + pw.set_bytes_array( + &self.withdrawable_epoch, + &hex::decode(&source.withdrawable_epoch).unwrap(), + ); } } diff --git a/beacon-light-client/plonky2/circuits_executables/src/validator.rs b/beacon-light-client/plonky2/circuits_executables/src/validator.rs index 7309dbda1..b63b50f2f 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/validator.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/validator.rs @@ -128,22 +128,14 @@ pub const VALIDATOR_REGISTRY_LIMIT: usize = 1099511627776; #[derive(Serialize, Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct ValidatorShaInput { - #[serde(with = "bool_vec_as_int_vec")] - pub pubkey: Vec, - #[serde(with = "bool_vec_as_int_vec")] - pub withdrawal_credentials: Vec, - #[serde(with = "bool_vec_as_int_vec")] - pub effective_balance: Vec, - #[serde(with = "bool_vec_as_int_vec")] - pub slashed: Vec, - #[serde(with = "bool_vec_as_int_vec")] - pub activation_eligibility_epoch: Vec, - #[serde(with = "bool_vec_as_int_vec")] - pub activation_epoch: Vec, - #[serde(with = "bool_vec_as_int_vec")] - pub exit_epoch: Vec, - #[serde(with = "bool_vec_as_int_vec")] - pub withdrawable_epoch: Vec, + pub pubkey: String, + pub withdrawal_credentials: String, + pub effective_balance: String, + pub slashed: String, + pub activation_eligibility_epoch: String, + pub activation_epoch: String, + pub exit_epoch: String, + pub withdrawable_epoch: String, } #[cfg(test)] @@ -154,38 +146,38 @@ mod tests { #[test] fn test_serialize() { let validator = ValidatorShaInput { - pubkey: vec![true, false, true], - withdrawal_credentials: vec![false, false, true], - effective_balance: vec![true, true, false], - slashed: vec![false, true, false], - activation_eligibility_epoch: vec![true, false, true], - activation_epoch: vec![true, false, false], - exit_epoch: vec![false, true, true], - withdrawable_epoch: vec![true, true, true], + pubkey: "933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c95".to_string(), + withdrawal_credentials: "0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50".to_string(), + effective_balance: "0040597307000000000000000000000000000000000000000000000000000000".to_string(), + slashed: "0000000000000000000000000000000000000000000000000000000000000000".to_string(), + activation_eligibility_epoch: "0000000000000000000000000000000000000000000000000000000000000000".to_string(), + activation_epoch: "0000000000000000000000000000000000000000000000000000000000000000".to_string(), + exit_epoch: "ffffffffffffffff000000000000000000000000000000000000000000000000".to_string(), + withdrawable_epoch: "ffffffffffffffff000000000000000000000000000000000000000000000000".to_string(), }; let serialized = serde_json::to_string(&validator).unwrap(); - assert_eq!(serialized, "{\"pubkey\":[1,0,1],\"withdrawalCredentials\":[0,0,1],\"effectiveBalance\":[1,1,0],\"slashed\":[0,1,0],\"activationEligibilityEpoch\":[1,0,1],\"activationEpoch\":[1,0,0],\"exitEpoch\":[0,1,1],\"withdrawableEpoch\":[1,1,1]}"); + assert_eq!(serialized, "{\"pubkey\":\"933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c95\",\"withdrawalCredentials\":\"0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50\",\"effectiveBalance\":\"0040597307000000000000000000000000000000000000000000000000000000\",\"slashed\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"activationEligibilityEpoch\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"activationEpoch\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"exitEpoch\":\"ffffffffffffffff000000000000000000000000000000000000000000000000\",\"withdrawableEpoch\":\"ffffffffffffffff000000000000000000000000000000000000000000000000\"}"); } #[test] fn test_deserialize() { - let data = "{\"pubkey\":[1,0,1],\"withdrawalCredentials\":[0,0,1],\"effectiveBalance\":[1,1,0],\"slashed\":[0,1,0],\"activationEligibilityEpoch\":[1,0,1],\"activationEpoch\":[1,0,0],\"exitEpoch\":[0,1,1],\"withdrawableEpoch\":[1,1,1]}"; + let data = "{\"pubkey\":\"933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c95\",\"withdrawalCredentials\":\"0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50\",\"effectiveBalance\":\"0040597307000000000000000000000000000000000000000000000000000000\",\"slashed\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"activationEligibilityEpoch\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"activationEpoch\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"exitEpoch\":\"ffffffffffffffff000000000000000000000000000000000000000000000000\",\"withdrawableEpoch\":\"ffffffffffffffff000000000000000000000000000000000000000000000000\"}"; let deserialized: ValidatorShaInput = serde_json::from_str(data).unwrap(); - assert_eq!(deserialized.pubkey, vec![true, false, true]); + assert_eq!(deserialized.pubkey, "933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c95"); assert_eq!( deserialized.withdrawal_credentials, - vec![false, false, true] + "0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50" ); - assert_eq!(deserialized.effective_balance, vec![true, true, false]); - assert_eq!(deserialized.slashed, vec![false, true, false]); + assert_eq!(deserialized.effective_balance, "0040597307000000000000000000000000000000000000000000000000000000"); + assert_eq!(deserialized.slashed, "0000000000000000000000000000000000000000000000000000000000000000"); assert_eq!( deserialized.activation_eligibility_epoch, - vec![true, false, true] + "0000000000000000000000000000000000000000000000000000000000000000" ); - assert_eq!(deserialized.activation_epoch, vec![true, false, false]); - assert_eq!(deserialized.exit_epoch, vec![false, true, true]); - assert_eq!(deserialized.withdrawable_epoch, vec![true, true, true]); + assert_eq!(deserialized.activation_epoch, "0000000000000000000000000000000000000000000000000000000000000000"); + assert_eq!(deserialized.exit_epoch, "ffffffffffffffff000000000000000000000000000000000000000000000000"); + assert_eq!(deserialized.withdrawable_epoch, "ffffffffffffffff000000000000000000000000000000000000000000000000"); } } diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index cafd4de0b..f45355c80 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -85,14 +85,14 @@ let MOCK: boolean; { index: Number(validator_commitment_constants.validatorRegistryLimit), validator: JSON.stringify({ - pubkey: Array(384).fill(0), - withdrawalCredentials: Array(256).fill(0), - effectiveBalance: Array(256).fill(0), - slashed: Array(256).fill(0), - activationEligibilityEpoch: Array(256).fill(0), - activationEpoch: Array(256).fill(0), - exitEpoch: Array(256).fill(0), - withdrawableEpoch: Array(256).fill(0), + pubkey: ''.padEnd(96, '0'), + withdrawalCredentials: ''.padEnd(64, '0'), + effectiveBalance: ''.padEnd(64, '0'), + slashed: ''.padEnd(64, '0'), + activationEligibilityEpoch: ''.padEnd(64, '0'), + activationEpoch: ''.padEnd(64, '0'), + exitEpoch: ''.padEnd(64, '0'), + withdrawableEpoch: ''.padEnd(64, '0'), }), }, ]); @@ -270,10 +270,6 @@ let MOCK: boolean; function calculateIndexes(validator_index: bigint, depth: bigint) { let first: bigint, second: bigint; - if (MOCK) { - return { first: BigInt(0), second: BigInt(0) }; - } - if (validator_index % 2n == 0n) { first = validator_index; second = validator_index + 1n; @@ -295,48 +291,32 @@ let MOCK: boolean; function convertValidatorToProof(validator: Validator): string { return JSON.stringify({ - pubkey: hexToBits(bytesToHex(validator.pubkey), 381), - withdrawalCredentials: hexToBits( - bytesToHex(validator.withdrawalCredentials), - ), - effectiveBalance: hexToBits( - bytesToHex( - ssz.phase0.Validator.fields.effectiveBalance.hashTreeRoot( - validator.effectiveBalance, - ), + pubkey: bytesToHex(validator.pubkey), + withdrawalCredentials: bytesToHex(validator.withdrawalCredentials), + effectiveBalance: bytesToHex( + ssz.phase0.Validator.fields.effectiveBalance.hashTreeRoot( + validator.effectiveBalance, ), ), - slashed: hexToBits( - bytesToHex( - ssz.phase0.Validator.fields.slashed.hashTreeRoot(validator.slashed), - ), + slashed: bytesToHex( + ssz.phase0.Validator.fields.slashed.hashTreeRoot(validator.slashed), ), - activationEligibilityEpoch: hexToBits( - bytesToHex( - ssz.phase0.Validator.fields.activationEligibilityEpoch.hashTreeRoot( - validator.activationEligibilityEpoch, - ), + activationEligibilityEpoch: bytesToHex( + ssz.phase0.Validator.fields.activationEligibilityEpoch.hashTreeRoot( + validator.activationEligibilityEpoch, ), ), - activationEpoch: hexToBits( - bytesToHex( - ssz.phase0.Validator.fields.activationEpoch.hashTreeRoot( - validator.activationEpoch, - ), + activationEpoch: bytesToHex( + ssz.phase0.Validator.fields.activationEpoch.hashTreeRoot( + validator.activationEpoch, ), ), - exitEpoch: hexToBits( - bytesToHex( - ssz.phase0.Validator.fields.exitEpoch.hashTreeRoot( - validator.exitEpoch, - ), - ), + exitEpoch: bytesToHex( + ssz.phase0.Validator.fields.exitEpoch.hashTreeRoot(validator.exitEpoch), ), - withdrawableEpoch: hexToBits( - bytesToHex( - ssz.phase0.Validator.fields.withdrawableEpoch.hashTreeRoot( - validator.withdrawableEpoch, - ), + withdrawableEpoch: bytesToHex( + ssz.phase0.Validator.fields.withdrawableEpoch.hashTreeRoot( + validator.withdrawableEpoch, ), ), }); diff --git a/relay/implementations/redis.ts b/relay/implementations/redis.ts index 0027a4472..c95f1f861 100644 --- a/relay/implementations/redis.ts +++ b/relay/implementations/redis.ts @@ -49,40 +49,35 @@ export class Redis implements IRedis { const redisValidatorJSON = JSON.parse(batchValidators[j]!); try { let validatorJSON: Validator = { - pubkey: hexToBytes(bitsToBytes(redisValidatorJSON.pubkey)), + pubkey: hexToBytes(redisValidatorJSON.pubkey), withdrawalCredentials: hexToBytes( - bitsToBytes(redisValidatorJSON.withdrawalCredentials), + redisValidatorJSON.withdrawalCredentials, ), effectiveBalance: ssz.phase0.Validator.fields.effectiveBalance.deserialize( - hexToBytes( - bitsToBytes(redisValidatorJSON.effectiveBalance), - ).slice(0, 8), + hexToBytes(redisValidatorJSON.effectiveBalance).slice(0, 8), ), slashed: ssz.phase0.Validator.fields.slashed.deserialize( - hexToBytes(bitsToBytes(redisValidatorJSON.slashed)).slice(0, 1), + hexToBytes(redisValidatorJSON.slashed).slice(0, 1), ), activationEligibilityEpoch: ssz.phase0.Validator.fields.activationEligibilityEpoch.deserialize( - hexToBytes( - bitsToBytes(redisValidatorJSON.activationEligibilityEpoch), - ).slice(0, 8), + hexToBytes(redisValidatorJSON.activationEligibilityEpoch).slice( + 0, + 8, + ), ), activationEpoch: ssz.phase0.Validator.fields.activationEpoch.deserialize( - hexToBytes( - bitsToBytes(redisValidatorJSON.activationEpoch), - ).slice(0, 8), + hexToBytes(redisValidatorJSON.activationEpoch).slice(0, 8), ), exitEpoch: ssz.phase0.Validator.fields.exitEpoch.deserialize( - hexToBytes(bitsToBytes(redisValidatorJSON.exitEpoch)).slice(0, 8), + hexToBytes(redisValidatorJSON.exitEpoch).slice(0, 8), ), withdrawableEpoch: ssz.phase0.Validator.fields.withdrawableEpoch.deserialize( - hexToBytes( - bitsToBytes(redisValidatorJSON.withdrawableEpoch), - ).slice(0, 8), + hexToBytes(redisValidatorJSON.withdrawableEpoch).slice(0, 8), ), }; From af8c7c1697e531340a0e7188dcd646e0ada21615 Mon Sep 17 00:00:00 2001 From: Dimo99 Date: Fri, 15 Dec 2023 16:05:33 +0200 Subject: [PATCH 24/59] validators mock problem with loading validators --- .../get_changed_validators.ts | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index f45355c80..4fa39f932 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -6,6 +6,7 @@ import { Redis as RedisLocal } from '../../../relay/implementations/redis'; import { bytesToHex } from '../../../libs/typescript/ts-utils/bls'; import { Validator } from '../../../relay/types/types'; import { hexToBits } from '../../../libs/typescript/ts-utils/hex-utils'; +import * as fs from 'fs'; import Redis from 'ioredis'; const { KeyPrefix, @@ -140,24 +141,9 @@ let MOCK: boolean; const timeBefore = Date.now(); const validators = MOCK - ? Array(TAKE).fill({ - pubkey: [ - 147, 58, 217, 73, 27, 98, 5, 157, 208, 101, 181, 96, 210, 86, 216, - 149, 122, 140, 64, 44, 198, 232, 216, 238, 114, 144, 174, 17, 232, - 247, 50, 146, 103, 168, 129, 28, 57, 117, 41, 218, 197, 42, 225, 52, - 43, 165, 140, 149, - ], - withdrawalCredentials: [ - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 54, 155, 180, 158, 250, 81, - 0, 253, 59, 134, 169, 248, 40, 197, 93, 160, 77, 45, 80, - ], - effectiveBalance: 32000000000, - slashed: false, - activationEligibilityEpoch: 0, - activationEpoch: 0, - exitEpoch: Infinity, - withdrawableEpoch: Infinity, - }) + ? ssz.capella.BeaconState.deserialize( + fs.readFileSync('mock_data/beaconState.bin'), + ).validators : (await beaconApi.getValidators()).slice(0, TAKE); if (prevValidators.length === 0) { From 139899c13ed57670756066784b4dba65b5958716 Mon Sep 17 00:00:00 2001 From: Dimo99 Date: Fri, 15 Dec 2023 16:13:06 +0200 Subject: [PATCH 25/59] move beaconState.bin --- .gitattributes | 2 +- .../plonky2/get_balances_input/get_balances_input.ts | 2 +- .../plonky2/{get_balances_input => }/mock_data/beaconState.bin | 0 .../validators_commitment_mapper_tree/get_changed_validators.ts | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename beacon-light-client/plonky2/{get_balances_input => }/mock_data/beaconState.bin (100%) diff --git a/.gitattributes b/.gitattributes index b2060d899..f47e7bc53 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,4 +3,4 @@ /.yarn/plugins/**/* binary /.pnp.* binary linguist-generated -beacon-light-client/plonky2/get_balances_input/mock_data/beaconState.bin filter=lfs diff=lfs merge=lfs -text +beacon-light-client/plonky2/mock_data/beaconState.bin filter=lfs diff=lfs merge=lfs -text diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts index 527847c15..0dee137e4 100755 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -91,7 +91,7 @@ let TAKE; const beaconApi = new BeaconApi([options['beacon-node']]); - const { beaconState } = MOCK ? {beaconState: ssz.capella.BeaconState.deserialize(fs.readFileSync('mock_data/beaconState.bin'))} : await beaconApi.getBeaconState(6953401); + const { beaconState } = MOCK ? {beaconState: ssz.capella.BeaconState.deserialize(fs.readFileSync('../mock_data/beaconState.bin'))} : await beaconApi.getBeaconState(6953401); const validators = beaconState.validators.slice(0, TAKE); TAKE = validators.length; diff --git a/beacon-light-client/plonky2/get_balances_input/mock_data/beaconState.bin b/beacon-light-client/plonky2/mock_data/beaconState.bin similarity index 100% rename from beacon-light-client/plonky2/get_balances_input/mock_data/beaconState.bin rename to beacon-light-client/plonky2/mock_data/beaconState.bin diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index 4fa39f932..b1c0fd484 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -142,7 +142,7 @@ let MOCK: boolean; const validators = MOCK ? ssz.capella.BeaconState.deserialize( - fs.readFileSync('mock_data/beaconState.bin'), + fs.readFileSync('../mock_data/beaconState.bin'), ).validators : (await beaconApi.getValidators()).slice(0, TAKE); From 3f5b6da931626c3911cb614910fdfdadb25d8cfe Mon Sep 17 00:00:00 2001 From: Dimo99 Date: Fri, 15 Dec 2023 16:16:01 +0200 Subject: [PATCH 26/59] fix bug with changed validators --- .../validators_commitment_mapper_tree/get_changed_validators.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index b1c0fd484..c2b69a658 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -173,7 +173,7 @@ let MOCK: boolean; const changedValidators = validators .map((validator, index) => ({ validator, index })) - .filter(() => hasValidatorChanged(prevValidators)); + .filter(hasValidatorChanged(prevValidators)); await saveValidatorsInBatches(changedValidators); From 03f7a243323c625b98557e4f872634b2c96c8757 Mon Sep 17 00:00:00 2001 From: monyarm Date: Mon, 18 Dec 2023 11:43:29 +0200 Subject: [PATCH 27/59] Fix some issues --- .../plonky2/get_balances_input/get_balances_input.ts | 3 ++- .../get_changed_validators.ts | 3 ++- libs/nix/get_balances_input/default.nix | 2 +- libs/nix/get_changed_validators/default.nix | 3 +++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts index 0dee137e4..d8a20f417 100755 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -91,7 +91,8 @@ let TAKE; const beaconApi = new BeaconApi([options['beacon-node']]); - const { beaconState } = MOCK ? {beaconState: ssz.capella.BeaconState.deserialize(fs.readFileSync('../mock_data/beaconState.bin'))} : await beaconApi.getBeaconState(6953401); + const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') ? '../mock_data/beaconState.bin' : 'mock_data/beaconState.bin'; + const { beaconState } = MOCK ? {beaconState: ssz.capella.BeaconState.deserialize(fs.readFileSync(beaconState_bin))} : await beaconApi.getBeaconState(6953401); const validators = beaconState.validators.slice(0, TAKE); TAKE = validators.length; diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index c2b69a658..eee9416c5 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -136,13 +136,14 @@ let MOCK: boolean; let prevValidators = await redis.getValidatorsBatched(ssz); console.log('Loaded all batches'); + const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') ? '../mock_data/beaconState.bin' : 'mock_data/beaconState.bin'; while (true) { const timeBefore = Date.now(); const validators = MOCK ? ssz.capella.BeaconState.deserialize( - fs.readFileSync('../mock_data/beaconState.bin'), + fs.readFileSync(beaconState_bin), ).validators : (await beaconApi.getValidators()).slice(0, TAKE); diff --git a/libs/nix/get_balances_input/default.nix b/libs/nix/get_balances_input/default.nix index fb1b2df49..67200a4a3 100644 --- a/libs/nix/get_balances_input/default.nix +++ b/libs/nix/get_balances_input/default.nix @@ -38,5 +38,5 @@ in ''; postInstall = '' mkdir -p $out/bin - cp -r beacon-light-client/plonky2/get_balances_input/mock_data $out/bin''; + cp -r beacon-light-client/plonky2/mock_data $out/bin''; }) diff --git a/libs/nix/get_changed_validators/default.nix b/libs/nix/get_changed_validators/default.nix index 485335758..bb70cb492 100644 --- a/libs/nix/get_changed_validators/default.nix +++ b/libs/nix/get_changed_validators/default.nix @@ -36,4 +36,7 @@ in buildPhase = '' yarn build-plonky-2 ''; + postInstall = '' + mkdir -p $out/bin + cp -r beacon-light-client/plonky2/mock_data $out/bin''; }) From 352b55949093542accb751dfa6f9010ef52160be Mon Sep 17 00:00:00 2001 From: Dimo99 Date: Mon, 18 Dec 2023 15:44:01 +0200 Subject: [PATCH 28/59] Mock changes --- .../bin/commitment_mapper.rs | 19 +++++++++++++++---- .../get_changed_validators.ts | 13 +++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs index 13116ad62..1f6838bdc 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs @@ -109,13 +109,16 @@ async fn async_main() -> Result<()> { .unwrap() .parse::() .unwrap(); + let mock = matches.value_of("mock").unwrap().parse::().unwrap(); let inner_proof_mock_binary = include_bytes!("../mock_data/inner_proof_mapper.mock"); let proof_mock_binary = include_bytes!("../mock_data/proof_mapper.mock"); loop { - println!("Waiting for job..."); + if !mock { + println!("Waiting for job..."); + } let job = match queue .lease( @@ -129,11 +132,15 @@ async fn async_main() -> Result<()> { None => continue, }; - println!("Got job: {:?}", job.data); - if job.data.len() == 8 { let validator_index = u64::from_be_bytes(job.data[0..8].try_into().unwrap()) as usize; + if !mock { + println!("Validator index {}", validator_index); + } else if validator_index % 1000 == 0 { + println!("Validator index {}", validator_index); + } + match fetch_validator(&mut con, validator_index).await { Err(err) => { print!("Error: {}", err); @@ -173,7 +180,11 @@ async fn async_main() -> Result<()> { .map(|chunk| u64::from_be_bytes(chunk.try_into().unwrap()) as usize) .collect::>(); - println!("Got indexes: {:?}", proof_indexes); + if !mock { + println!("Got indexes: {:?}", proof_indexes); + } else if proof_indexes[1] % 1024 == 0 { + println!("Got indexes: {:?}", proof_indexes); + } match fetch_proofs::(&mut con, &proof_indexes).await { Err(err) => { diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index eee9416c5..49b52bb16 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -136,15 +136,16 @@ let MOCK: boolean; let prevValidators = await redis.getValidatorsBatched(ssz); console.log('Loaded all batches'); - const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') ? '../mock_data/beaconState.bin' : 'mock_data/beaconState.bin'; + const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') + ? '../mock_data/beaconState.bin' + : 'mock_data/beaconState.bin'; while (true) { const timeBefore = Date.now(); const validators = MOCK - ? ssz.capella.BeaconState.deserialize( - fs.readFileSync(beaconState_bin), - ).validators + ? ssz.capella.BeaconState.deserialize(fs.readFileSync(beaconState_bin)) + .validators : (await beaconApi.getValidators()).slice(0, TAKE); if (prevValidators.length === 0) { @@ -180,6 +181,10 @@ let MOCK: boolean; console.log('#changedValidators', changedValidators.length); + if (MOCK) { + process.exit(0); + } + prevValidators = validators; const timeAfter = Date.now(); From 8062d25c7e417ae9e5de8e4e829caa0afdc23ede Mon Sep 17 00:00:00 2001 From: monyarm Date: Mon, 18 Dec 2023 17:09:28 +0200 Subject: [PATCH 29/59] Reduce get_balances_input output when mock --- .../plonky2/get_balances_input/get_balances_input.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts index d8a20f417..8b4f2791e 100755 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -68,6 +68,7 @@ let TAKE; TAKE = options['take']; let MOCK = options['mock']; + let GRANULITY = MOCK ? 1000 : 1; const queues: any[] = []; @@ -169,6 +170,7 @@ let TAKE; await queues[i + 1].addItem(db, new Item(buffer)); + if (i % 10 === 0 && i !== 0) console.log('Added zeros tasks'); } @@ -216,7 +218,8 @@ let TAKE; await redis.saveValidatorBalancesInput(batch); - console.log('saved batch', i); + if (i % GRANULITY === 0 && i !== 0) + console.log('saved batch', i); } for (let i = 0; i < TAKE / CIRCUIT_SIZE; i++) { @@ -225,7 +228,8 @@ let TAKE; view.setBigUint64(0, BigInt(i * CIRCUIT_SIZE), false); await queues[0].addItem(db, new Item(buffer)); - console.log(`added ${i * CIRCUIT_SIZE}`); + if (i % (GRANULITY*100) === 0 && i !== 0) + console.log(`added ${i * CIRCUIT_SIZE}`); } for (let j = 1; j < 38; j++) { @@ -250,8 +254,8 @@ let TAKE; BigInt(i * CIRCUIT_SIZE), BigInt(j), ); - - console.log(`added ${j}:${first}:${second}`); + if (i % (GRANULITY*100) === 0 && i !== 0) + console.log(`added ${j}:${first}:${second}`); view.setBigUint64(0, BigInt(j - 1), false); view.setBigUint64(8, first, false); From 2ba0a88d8b43f614b341eea6034d214af2eead6c Mon Sep 17 00:00:00 2001 From: monyarm Date: Wed, 20 Dec 2023 16:58:39 +0200 Subject: [PATCH 30/59] reduced output when mock --- .../circuits_executables/bin/commitment_mapper.rs | 4 ++-- .../get_balances_input/get_balances_input.ts | 2 +- .../get_changed_validators.ts | 13 ++++++++----- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs index 1f6838bdc..6117ea000 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs @@ -137,7 +137,7 @@ async fn async_main() -> Result<()> { if !mock { println!("Validator index {}", validator_index); - } else if validator_index % 1000 == 0 { + } else if validator_index % 10000 == 0 { println!("Validator index {}", validator_index); } @@ -182,7 +182,7 @@ async fn async_main() -> Result<()> { if !mock { println!("Got indexes: {:?}", proof_indexes); - } else if proof_indexes[1] % 1024 == 0 { + } else if proof_indexes[1] % 2048 == 0 { println!("Got indexes: {:?}", proof_indexes); } diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts index 8b4f2791e..11e6262fa 100755 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -170,7 +170,7 @@ let TAKE; await queues[i + 1].addItem(db, new Item(buffer)); - if (i % 10 === 0 && i !== 0) + if (i % (GRANULITY/10) === 0 && i !== 0) console.log('Added zeros tasks'); } diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index 49b52bb16..5730166e4 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -72,6 +72,7 @@ let MOCK: boolean; TAKE = options['take']; MOCK = options['mock']; + let GRANULITY = MOCK ? 1000 : 1; const work_queue = new WorkQueue( new KeyPrefix(`${validator_commitment_constants.validatorProofsQueue}`), @@ -126,7 +127,8 @@ let MOCK: boolean; ); await work_queue.addItem(db, new Item(buffer)); - + + if (i % 10 === 0 && i !== 0) console.log('Added zeros tasks'); } } @@ -190,7 +192,7 @@ let MOCK: boolean; const timeAfter = Date.now(); // wait for the next epoch - if (timeAfter - timeBefore < 384000) { + if (timeAfter - timeBefore < 384000 && !MOCK) { await sleep(384000 - (timeBefore - timeAfter)); } } @@ -217,8 +219,8 @@ let MOCK: boolean; await work_queue.addItem(db, new Item(buffer)); } - if (i % 25 == 0) { - console.log('Saved 25 batches and added first level of proofs'); + if (i % GRANULITY == 0) { + console.log(`Saved ${GRANULITY} batches and added first level of proofs`); } } @@ -231,7 +233,8 @@ let MOCK: boolean; validators: { index: number; validator: Validator }[], ) { for (let j = 0n; j < 40n; j++) { - console.log('Added inner level of proofs', j); + if (j % 10n === 0n && j !== 0n) + console.log('Added inner level of proofs', j); let prev_index = 2199023255552n; for (let i = 0; i < validators.length; i++) { From 8257800a587d9fb19fe7dab26ac577c7b145f5d3 Mon Sep 17 00:00:00 2001 From: Dimo99 Date: Thu, 21 Dec 2023 14:01:14 +0200 Subject: [PATCH 31/59] feat(validator-balances): Create disaggregated storage for the proofs in redis --- .../plonky2/circuits_executables/Cargo.lock | 2027 ++++++++++++++++- .../plonky2/circuits_executables/Cargo.toml | 17 +- .../azure_sdk_for_rust_stream_test.txt | 1 + .../bin/balance_verification.rs | 81 +- .../bin/commitment_mapper.rs | 88 +- ...mmitment_mapper_circuit_data_generation.rs | 2 +- .../circuits_executables/bin/final_layer.rs | 5 +- .../examples/balance_verification_example.rs | 3 +- .../examples/read_circuit_data_example.rs | 16 +- .../examples/test_application.rs | 78 + .../examples/test_application_azure.rs | 41 + .../examples/view_proof.rs | 56 - .../src/{crud.rs => crud/common.rs} | 66 +- .../circuits_executables/src/crud/mod.rs | 2 + .../crud/proof_storage/aws_proof_storage.rs | 66 + .../crud/proof_storage/azure_proof_storage.rs | 52 + .../crud/proof_storage/file_proof_storage.rs | 37 + .../src/crud/proof_storage/mod.rs | 5 + .../src/crud/proof_storage/proof_storage.rs | 83 + .../crud/proof_storage/redis_proof_storage.rs | 34 + .../circuits_executables/src/provers.rs | 2 +- .../src/validator_balances_input.rs | 2 +- .../circuits_executables/validator_proof.json | 1 + .../circuits_executables/validator_proof.zip | 5 + .../circuits_executables/validator_proof.zip1 | Bin 0 -> 197848 bytes .../validator_proof_base64.json | 1 + libs/typescript/relay-utils/proof-storage.ts | 4 + relay/implementations/redis.ts | 4 +- relay/types/types.ts | 4 +- 29 files changed, 2554 insertions(+), 229 deletions(-) create mode 100644 beacon-light-client/plonky2/circuits_executables/azure_sdk_for_rust_stream_test.txt create mode 100644 beacon-light-client/plonky2/circuits_executables/examples/test_application.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/examples/test_application_azure.rs delete mode 100644 beacon-light-client/plonky2/circuits_executables/examples/view_proof.rs rename beacon-light-client/plonky2/circuits_executables/src/{crud.rs => crud/common.rs} (85%) create mode 100644 beacon-light-client/plonky2/circuits_executables/src/crud/mod.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/mod.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/redis_proof_storage.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/validator_proof.json create mode 100644 beacon-light-client/plonky2/circuits_executables/validator_proof.zip create mode 100644 beacon-light-client/plonky2/circuits_executables/validator_proof.zip1 create mode 100644 beacon-light-client/plonky2/circuits_executables/validator_proof_base64.json create mode 100644 libs/typescript/relay-utils/proof-storage.ts diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.lock b/beacon-light-client/plonky2/circuits_executables/Cargo.lock index c14983831..deca9dbb1 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.lock +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "RustyXML" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b5ace29ee3216de37c0546865ad08edef58b0f9e76838ed8959a84a990e58c5" + [[package]] name = "addr2line" version = "0.20.0" @@ -57,7 +63,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 2.5.3", "futures-core", ] @@ -67,10 +73,10 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" dependencies = [ - "async-lock", + "async-lock 2.7.0", "async-task", "concurrent-queue", - "fastrand", + "fastrand 1.9.0", "futures-lite", "slab", ] @@ -84,7 +90,7 @@ dependencies = [ "async-channel", "async-executor", "async-io", - "async-lock", + "async-lock 2.7.0", "blocking", "futures-lite", "once_cell", @@ -96,7 +102,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.7.0", "autocfg", "cfg-if", "concurrent-queue", @@ -104,9 +110,9 @@ dependencies = [ "log", "parking", "polling", - "rustix", + "rustix 0.37.23", "slab", - "socket2", + "socket2 0.4.9", "waker-fn", ] @@ -116,7 +122,18 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" dependencies = [ - "event-listener", + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" +dependencies = [ + "event-listener 4.0.2", + "event-listener-strategy", + "pin-project-lite", ] [[package]] @@ -128,7 +145,7 @@ dependencies = [ "async-channel", "async-global-executor", "async-io", - "async-lock", + "async-lock 2.7.0", "crossbeam-utils", "futures-channel", "futures-core", @@ -153,9 +170,9 @@ checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" [[package]] name = "async-trait" -version = "0.1.72" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", @@ -185,6 +202,472 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "aws-config" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11382bd8ac4c6c182a9775990935f96c916a865f1414486595f18eb8cfa9d90b" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-sdk-sso", + "aws-sdk-ssooidc", + "aws-sdk-sts", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand 2.0.1", + "hex", + "http", + "hyper", + "ring", + "time", + "tokio", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-credential-types" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a1629320d319dc715c6189b172349186557e209d2a7b893ff3d14efd33a47c" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "zeroize", +] + +[[package]] +name = "aws-http" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30e4199d5d62ab09be6a64650c06cc5c4aa45806fed4c74bc4a5c8eaf039a6fa" +dependencies = [ + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "http-body", + "pin-project-lite", + "tracing", +] + +[[package]] +name = "aws-runtime" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87116d357c905b53f1828d15366363fd27b330a0393cbef349e653f686d36bad" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "fastrand 2.0.1", + "http", + "percent-encoding", + "tracing", + "uuid", +] + +[[package]] +name = "aws-sdk-s3" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37dc95e83ed001fd28f90c925ee30fc6eedd31886fa769476594604e5f89dffd" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-checksums", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "bytes", + "http", + "http-body", + "once_cell", + "percent-encoding", + "regex-lite", + "tracing", + "url", +] + +[[package]] +name = "aws-sdk-sso" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9d9a8ac4cdb8df39f9777fd41e15a9ae0d0b622b00909ae0322b4d2f9e6ac8" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-ssooidc" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ba4a42aa91acecd5ca43b330b5c8eb7f8808d720b6a6f796a35faa302fc73d" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sts" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e3c7c3dcec7cccd24a13953eedf0f2964c2d728d22112744274cf0098ad2e35" +dependencies = [ + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-query", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "http", + "once_cell", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sigv4" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d222297ca90209dc62245f0a490355795f29de362eb5c19caea4f7f55fe69078" +dependencies = [ + "aws-credential-types", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "crypto-bigint 0.5.5", + "form_urlencoded", + "hex", + "hmac", + "http", + "once_cell", + "p256", + "percent-encoding", + "ring", + "sha2 0.10.8", + "subtle", + "time", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-smithy-async" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9f65000917e3aa94c259d67fe01fa9e4cd456187d026067d642436e6311a81" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "aws-smithy-checksums" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c2a63681f82fb85ca58d566534b7dc619c782fee0c61c1aa51e2b560c21cb4f" +dependencies = [ + "aws-smithy-http", + "aws-smithy-types", + "bytes", + "crc32c", + "crc32fast", + "hex", + "http", + "http-body", + "md-5", + "pin-project-lite", + "sha1", + "sha2 0.10.8", + "tracing", +] + +[[package]] +name = "aws-smithy-eventstream" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a85e16fa903c70c49ab3785e5f4ac2ad2171b36e0616f321011fa57962404bb6" +dependencies = [ + "aws-smithy-types", + "bytes", + "crc32fast", +] + +[[package]] +name = "aws-smithy-http" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e816425a6b9caea4929ac97d0cb33674849bd5f0086418abc0d02c63f7a1bf" +dependencies = [ + "aws-smithy-eventstream", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "bytes-utils", + "futures-core", + "http", + "http-body", + "once_cell", + "percent-encoding", + "pin-project-lite", + "pin-utils", + "tracing", +] + +[[package]] +name = "aws-smithy-json" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ab3f6d49e08df2f8d05e1bb5b68998e1e67b76054d3c43e7b954becb9a5e9ac" +dependencies = [ + "aws-smithy-types", +] + +[[package]] +name = "aws-smithy-query" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f94a7a3aa509ff9e8b8d80749851d04e5eee0954c43f2e7d6396c4740028737" +dependencies = [ + "aws-smithy-types", + "urlencoding", +] + +[[package]] +name = "aws-smithy-runtime" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da5b0a3617390e769576321816112f711c13d7e1114685e022505cf51fe5e48" +dependencies = [ + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "fastrand 2.0.1", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "once_cell", + "pin-project-lite", + "pin-utils", + "rustls", + "tokio", + "tracing", +] + +[[package]] +name = "aws-smithy-runtime-api" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2404c9eb08bfe9af255945254d9afc69a367b7ee008b8db75c05e3bca485fc65" +dependencies = [ + "aws-smithy-async", + "aws-smithy-types", + "bytes", + "http", + "pin-project-lite", + "tokio", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-smithy-types" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aba8136605d14ac88f57dc3a693a9f8a4eab4a3f52bc03ff13746f0cd704e97" +dependencies = [ + "base64-simd", + "bytes", + "bytes-utils", + "futures-core", + "http", + "http-body", + "itoa", + "num-integer", + "pin-project-lite", + "pin-utils", + "ryu", + "serde", + "time", + "tokio", + "tokio-util", +] + +[[package]] +name = "aws-smithy-xml" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e8f03926587fc881b12b102048bb04305bf7fb8c83e776f0ccc51eaa2378263" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "aws-types" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e5d5ee29077e0fcd5ddd0c227b521a33aaf02434b7cdba1c55eec5c1f18ac47" +dependencies = [ + "aws-credential-types", + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "http", + "rustc_version", + "tracing", +] + +[[package]] +name = "azure_core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6218987c374650fdad0b476bfc675729762c28dfb35f58608a38a2b1ea337dd" +dependencies = [ + "async-trait", + "base64 0.21.5", + "bytes", + "dyn-clone", + "futures", + "getrandom 0.2.10", + "hmac", + "http-types", + "log", + "once_cell", + "paste", + "pin-project", + "quick-xml", + "rand 0.8.5", + "reqwest", + "rustc_version", + "serde", + "serde_json", + "sha2 0.10.8", + "time", + "url", + "uuid", +] + +[[package]] +name = "azure_storage" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade8f2653e408de88b9eafec9f48c3c26b94026375e88adbd34523a7dd9795a1" +dependencies = [ + "RustyXML", + "async-lock 3.2.0", + "async-trait", + "azure_core", + "bytes", + "log", + "serde", + "serde_derive", + "time", + "url", + "uuid", +] + +[[package]] +name = "azure_storage_blobs" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "025701c7cc5b523100f0f3b2b01723564ec5a86c03236521c06826337047e872" +dependencies = [ + "RustyXML", + "azure_core", + "azure_storage", + "azure_svc_blobstorage", + "bytes", + "futures", + "log", + "serde", + "serde_derive", + "serde_json", + "time", + "url", + "uuid", +] + +[[package]] +name = "azure_svc_blobstorage" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76051e5bb67cea1055abe5e530a0878feac7e0ab4cbbcb4a6adc953a58993389" +dependencies = [ + "azure_core", + "bytes", + "futures", + "log", + "once_cell", + "serde", + "serde_json", + "time", +] + [[package]] name = "backtrace" version = "0.3.68" @@ -200,6 +683,40 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + +[[package]] +name = "base64-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" +dependencies = [ + "outref", + "vsimd", +] + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "binary-stream" version = "3.4.0" @@ -215,6 +732,24 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "block-buffer" version = "0.9.0" @@ -224,6 +759,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "blocking" version = "1.3.1" @@ -231,10 +775,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" dependencies = [ "async-channel", - "async-lock", + "async-lock 2.7.0", "async-task", "atomic-waker", - "fastrand", + "fastrand 1.9.0", "futures-lite", "log", ] @@ -257,11 +801,21 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + [[package]] name = "cc" -version = "1.0.80" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f1226cd9da55587234753d1245dd5b132343ea240f26b6a9003d68706141ba" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "libc", ] @@ -285,13 +839,13 @@ dependencies = [ "num", "plonky2", "plonky2_u32", - "rand", + "rand 0.8.5", "redis", "redis-work-queue", "serde", "serde_json", "serde_yaml", - "sha2", + "sha2 0.9.9", "typenum", ] @@ -300,8 +854,17 @@ name = "circuits_executables" version = "0.1.0" dependencies = [ "anyhow", + "async-trait", + "aws-config", + "aws-sdk-s3", + "azure_core", + "azure_storage", + "azure_storage_blobs", + "base64 0.21.5", "circuits", "clap", + "dotenv", + "futures", "futures-lite", "hex", "jemallocator", @@ -313,6 +876,8 @@ dependencies = [ "serde", "serde-binary", "serde_json", + "ssz_rs", + "tokio", ] [[package]] @@ -322,7 +887,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", - "bitflags", + "bitflags 1.3.2", "clap_lex", "indexmap 1.9.3", "strsim", @@ -362,6 +927,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "const-random" version = "0.1.15" @@ -378,19 +949,53 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" dependencies = [ - "getrandom", - "once_cell", - "proc-macro-hack", - "tiny-keccak", + "getrandom 0.2.10", + "once_cell", + "proc-macro-hack", + "tiny-keccak", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32c" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" +dependencies = [ + "rustc_version", ] [[package]] -name = "cpufeatures" -version = "0.2.9" +name = "crc32fast" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "libc", + "cfg-if", ] [[package]] @@ -442,6 +1047,58 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-bigint" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "digest" version = "0.9.0" @@ -451,12 +1108,76 @@ dependencies = [ "generic-array", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "dyn-clone" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" + +[[package]] +name = "ecdsa" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +dependencies = [ + "der", + "elliptic-curve", + "rfc6979", + "signature", +] + [[package]] name = "either" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +[[package]] +name = "elliptic-curve" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +dependencies = [ + "base16ct", + "crypto-bigint 0.4.9", + "der", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -465,30 +1186,40 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "errno-dragonfly", "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "218a870470cce1469024e9fb66b901aa983929d81304a1cdb299f28118e550d5" dependencies = [ - "cc", - "libc", + "concurrent-queue", + "parking", + "pin-project-lite", ] [[package]] -name = "event-listener" -version = "2.5.3" +name = "event-listener-strategy" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.2", + "pin-project-lite", +] [[package]] name = "fastrand" @@ -499,6 +1230,22 @@ dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "fixed-hash" version = "0.7.0" @@ -508,6 +1255,27 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.0" @@ -517,11 +1285,17 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -534,9 +1308,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -544,15 +1318,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -561,9 +1335,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" @@ -571,7 +1345,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "futures-io", "memchr", @@ -582,9 +1356,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", @@ -593,21 +1367,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -631,6 +1405,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.10" @@ -640,7 +1425,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -662,6 +1447,36 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.0.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -700,6 +1515,122 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "http-types" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" +dependencies = [ + "anyhow", + "async-channel", + "base64 0.13.1", + "futures-lite", + "infer", + "pin-project-lite", + "rand 0.7.3", + "serde", + "serde_json", + "serde_qs", + "serde_urlencoded", + "url", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.5", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "log", + "rustls", + "rustls-native-certs", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + [[package]] name = "idna" version = "0.4.0" @@ -730,6 +1661,12 @@ dependencies = [ "hashbrown 0.14.0", ] +[[package]] +name = "infer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" + [[package]] name = "instant" version = "0.1.12" @@ -747,9 +1684,15 @@ checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi 0.3.2", "libc", - "windows-sys", + "windows-sys 0.48.0", ] +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + [[package]] name = "itertools" version = "0.10.5" @@ -833,11 +1776,17 @@ dependencies = [ "log", ] +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + [[package]] name = "libc" -version = "0.2.147" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "linux-raw-sys" @@ -845,6 +1794,22 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +[[package]] +name = "linux-raw-sys" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.19" @@ -854,6 +1819,16 @@ dependencies = [ "value-bag", ] +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + [[package]] name = "memchr" version = "2.5.0" @@ -869,6 +1844,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + [[package]] name = "miniz_oxide" version = "0.7.1" @@ -879,14 +1860,32 @@ dependencies = [ ] [[package]] -name = "mio" -version = "0.8.8" +name = "mio" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "native-tls" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ + "lazy_static", "libc", - "wasi", - "windows-sys", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", ] [[package]] @@ -912,7 +1911,7 @@ dependencies = [ "autocfg", "num-integer", "num-traits", - "rand", + "rand 0.8.5", "serde", ] @@ -923,7 +1922,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", "serde", ] @@ -1001,29 +2000,139 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "openssl" +version = "0.10.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671" +dependencies = [ + "bitflags 2.4.1", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "os_str_bytes" version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +[[package]] +name = "outref" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" + +[[package]] +name = "p256" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2 0.10.8", +] + [[package]] name = "parking" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.1", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + [[package]] name = "percent-encoding" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + [[package]] name = "pin-project-lite" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -1031,6 +2140,22 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs8" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" + [[package]] name = "plonky2" version = "0.1.3" @@ -1038,7 +2163,7 @@ source = "git+https://github.com/metacraft-labs/plonky2#12402078a460c41cd11013d0 dependencies = [ "ahash", "anyhow", - "getrandom", + "getrandom 0.2.10", "hashbrown 0.14.0", "itertools 0.11.0", "keccak-hash", @@ -1047,8 +2172,8 @@ dependencies = [ "plonky2_field", "plonky2_maybe_rayon", "plonky2_util", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "serde_json", "static_assertions", @@ -1065,7 +2190,7 @@ dependencies = [ "itertools 0.11.0", "num", "plonky2_util", - "rand", + "rand 0.8.5", "serde", "static_assertions", "unroll", @@ -1104,15 +2229,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", - "bitflags", + "bitflags 1.3.2", "cfg-if", "concurrent-queue", "libc", "log", "pin-project-lite", - "windows-sys", + "windows-sys 0.48.0", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -1144,6 +2275,16 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quick-xml" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "quote" version = "1.0.32" @@ -1153,6 +2294,25 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + [[package]] name = "rand" version = "0.8.5" @@ -1160,8 +2320,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] @@ -1171,7 +2341,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", ] [[package]] @@ -1180,7 +2359,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.10", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", ] [[package]] @@ -1241,6 +2429,15 @@ dependencies = [ "uuid", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "regex" version = "1.9.4" @@ -1264,30 +2461,166 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-lite" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" + [[package]] name = "regex-syntax" version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +[[package]] +name = "reqwest" +version = "0.11.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" +dependencies = [ + "base64 0.21.5", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "winreg", +] + +[[package]] +name = "rfc6979" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +dependencies = [ + "crypto-bigint 0.4.9", + "hmac", + "zeroize", +] + +[[package]] +name = "ring" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +dependencies = [ + "cc", + "getrandom 0.2.10", + "libc", + "spin", + "untrusted", + "windows-sys 0.48.0", +] + [[package]] name = "rustc-demangle" version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", - "linux-raw-sys", - "windows-sys", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +dependencies = [ + "bitflags 2.4.1", + "errno", + "libc", + "linux-raw-sys 0.4.12", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.5", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", ] [[package]] @@ -1296,17 +2629,79 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys 0.48.0", +] + [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" + [[package]] name = "serde" -version = "1.0.180" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -1319,27 +2714,50 @@ checksum = "b550db407b83ed53a4f76f888bfd7441b685abc2c086e20fb47781a286940506" dependencies = [ "binary-stream", "serde", - "thiserror", + "thiserror", +] + +[[package]] +name = "serde_derive" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "serde_json" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", ] [[package]] -name = "serde_derive" -version = "1.0.180" +name = "serde_qs" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036" +checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", + "percent-encoding", + "serde", + "thiserror", ] [[package]] -name = "serde_json" -version = "1.0.104" +name = "serde_urlencoded" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ - "indexmap 2.0.0", + "form_urlencoded", "itoa", "ryu", "serde", @@ -1358,6 +2776,17 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha1_smol" version = "1.0.0" @@ -1370,13 +2799,43 @@ version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ - "block-buffer", + "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest", + "digest 0.9.0", "opaque-debug", ] +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + [[package]] name = "slab" version = "0.4.8" @@ -1386,6 +2845,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "smallvec" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" + [[package]] name = "socket2" version = "0.4.9" @@ -1396,6 +2861,57 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "ssz_rs" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057291e5631f280978fa9c8009390663ca4613359fc1318e36a8c24c392f6d1f" +dependencies = [ + "bitvec", + "hex", + "num-bigint", + "serde", + "sha2 0.9.9", + "ssz_rs_derive", +] + +[[package]] +name = "ssz_rs_derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -1408,6 +2924,12 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + [[package]] name = "syn" version = "1.0.109" @@ -1430,6 +2952,46 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" +dependencies = [ + "cfg-if", + "fastrand 2.0.1", + "redox_syscall", + "rustix 0.38.28", + "windows-sys 0.52.0", +] + [[package]] name = "termcolor" version = "1.2.0" @@ -1465,6 +3027,36 @@ dependencies = [ "syn 2.0.28", ] +[[package]] +name = "time" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +dependencies = [ + "deranged", + "itoa", + "js-sys", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +dependencies = [ + "time-core", +] + [[package]] name = "tiny-keccak" version = "2.0.2" @@ -1491,18 +3083,52 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.29.1" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" dependencies = [ - "autocfg", "backtrace", "bytes", "libc", "mio", + "num_cpus", + "parking_lot", "pin-project-lite", - "socket2", - "windows-sys", + "signal-hook-registry", + "socket2 0.5.5", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", ] [[package]] @@ -1519,6 +3145,12 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + [[package]] name = "tracing" version = "0.1.37" @@ -1527,9 +3159,21 @@ checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + [[package]] name = "tracing-core" version = "0.1.31" @@ -1539,6 +3183,12 @@ dependencies = [ "once_cell", ] +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "typenum" version = "1.16.0" @@ -1594,6 +3244,12 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.4.0" @@ -1603,16 +3259,24 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "uuid" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ - "getrandom", - "rand", + "getrandom 0.2.10", + "rand 0.8.5", + "serde", "uuid-macro-internal", ] @@ -1633,18 +3297,45 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + [[package]] name = "waker-fn" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -1717,6 +3408,19 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +[[package]] +name = "wasm-streams" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "web-sys" version = "0.3.64" @@ -1764,7 +3468,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.1", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -1773,13 +3486,28 @@ version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -1788,38 +3516,111 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xmlparser" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.toml b/beacon-light-client/plonky2/circuits_executables/Cargo.toml index 2508717a9..bcdeaa2c8 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.toml +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.toml @@ -20,6 +20,17 @@ jemallocator = "0.5.0" clap = "3.0" jsonm = "0.2.0" serde-binary = "0.5.0" +ssz_rs = "0.9.0" +base64 = "0.21.5" +async-trait = "0.1.74" +tokio = { version = "1.35.1", features = ["full"] } +aws-config = "1.1.1" +aws-sdk-s3 = "1.10.0" +azure_storage_blobs = "0.18.0" +azure_core = "0.18.0" +azure_storage = "0.18.0" +futures = "0.3.30" +dotenv = "0.15.0" [[bin]] name = "balance_verification" @@ -33,9 +44,9 @@ path = "bin/commitment_mapper.rs" name = "balance_verification_circuit_data_generation" path = "bin/balance_verification_circuit_data_generation.rs" -[[bin]] -name = "final_layer" -path = "bin/final_layer.rs" +# [[bin]] +# name = "final_layer" +# path = "bin/final_layer.rs" [[bin]] name = "commitment_mapper_circuit_data_generation" diff --git a/beacon-light-client/plonky2/circuits_executables/azure_sdk_for_rust_stream_test.txt b/beacon-light-client/plonky2/circuits_executables/azure_sdk_for_rust_stream_test.txt new file mode 100644 index 000000000..e3826712c --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/azure_sdk_for_rust_stream_test.txt @@ -0,0 +1 @@ +RIST diff --git a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs index 28ad9607d..5b10b145f 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs @@ -11,14 +11,16 @@ use circuits::{ }; use circuits_executables::{ crud::{ - fetch_proofs, fetch_validator_balance_input, load_circuit_data, read_from_file, - save_balance_proof, BalanceProof, + common::{ + fetch_proofs, fetch_validator_balance_input, load_circuit_data, read_from_file, + save_balance_proof, BalanceProof, + }, + proof_storage::proof_storage::{create_proof_storage, ProofStorage}, }, provers::{handle_balance_inner_level_proof, SetPWValues}, validator_balances_input::ValidatorBalancesInput, validator_commitment_constants::get_validator_commitment_constants, }; -use futures_lite::future; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::PartialWitness, @@ -48,11 +50,8 @@ enum Targets { InnerLevel(Option), } -fn main() -> Result<()> { - future::block_on(async_main()) -} - -async fn async_main() -> Result<()> { +#[tokio::main] +async fn main() -> Result<()> { let matches = App::new("") .arg( Arg::with_name("redis_connection") @@ -100,6 +99,57 @@ async fn async_main() -> Result<()> { .takes_value(false) .default_value("false") ) + .arg( + Arg::with_name("proof_storage_type") + .long("proof-storage-type") + .value_name("proof_storage_type") + .help("Sets the type of proof storage") + .takes_value(true) + .required(true) + .possible_values(&["redis", "file", "azure", "aws"]) + ) + .arg( + Arg::with_name("folder_name") + .long("folder-name") + .value_name("folder_name") + .help("Sets the name of the folder proofs will be stored in") + .takes_value(true) + ) + .arg( + Arg::with_name("azure_account") + .long("azure-account-name") + .value_name("azure_account") + .help("Sets the name of the azure account") + .takes_value(true) + ) + .arg( + Arg::with_name("azure_container") + .long("azure-container-name") + .value_name("azure_container") + .help("Sets the name of the azure container") + .takes_value(true) + ) + .arg( + Arg::with_name("aws_endpoint_url") + .long("aws-endpoint-url") + .value_name("aws_endpoint_url") + .help("Sets the aws endpoint url") + .takes_value(true) + ) + .arg( + Arg::with_name("aws_region") + .long("aws-region") + .value_name("aws_region") + .help("Sets the aws region") + .takes_value(true) + ) + .arg( + Arg::with_name("aws_bucket_name") + .long("aws-bucket-name") + .value_name("aws_bucket_name") + .help("Sets the aws bucket name") + .takes_value(true) + ) .get_matches(); let level = matches @@ -136,8 +186,11 @@ async fn async_main() -> Result<()> { let start = Instant::now(); let client = redis::Client::open(redis_connection)?; + let mut con = client.get_async_connection().await?; + let mut proof_storage = create_proof_storage(&matches).await; + let elapsed = start.elapsed(); println!("Redis connection took: {:?}", elapsed); @@ -171,6 +224,7 @@ async fn async_main() -> Result<()> { process_queue( &mut con, + proof_storage.as_mut(), &queue, &circuit_data, inner_circuit_data.as_ref(), @@ -187,6 +241,7 @@ async fn async_main() -> Result<()> { async fn process_queue( con: &mut redis::aio::Connection, + proof_storage: &mut dyn ProofStorage, queue: &WorkQueue, circuit_data: &CircuitData, inner_circuit_data: Option<&CircuitData>, @@ -228,6 +283,7 @@ async fn process_queue( Targets::FirstLevel(targets) => { match process_first_level_job( con, + proof_storage, queue, job, circuit_data, @@ -246,6 +302,7 @@ async fn process_queue( Targets::InnerLevel(inner_circuit_targets) => { match process_inner_level_job( con, + proof_storage, queue, job, circuit_data, @@ -268,6 +325,7 @@ async fn process_queue( async fn process_first_level_job( con: &mut Connection, + proof_storage: &mut dyn ProofStorage, queue: &WorkQueue, job: Item, circuit_data: &CircuitData, @@ -303,7 +361,7 @@ async fn process_first_level_job( circuit_data.prove(pw)? }; - match save_balance_proof(con, proof, 0, balance_input_index).await { + match save_balance_proof(con, proof_storage, proof, 0, balance_input_index).await { Err(err) => { print!("Error: {}", err); thread::sleep(Duration::from_secs(5)); @@ -323,6 +381,7 @@ async fn process_first_level_job( async fn process_inner_level_job( con: &mut Connection, + proof_storage: &mut dyn ProofStorage, queue: &WorkQueue, job: Item, circuit_data: &CircuitData, @@ -339,7 +398,7 @@ async fn process_inner_level_job( println!("Got indexes: {:?}", proof_indexes); - match fetch_proofs::(con, &proof_indexes).await { + match fetch_proofs::(con, proof_storage, &proof_indexes).await { Err(err) => { print!("Error: {}", err); return Err(err); @@ -365,7 +424,7 @@ async fn process_inner_level_job( )? }; - match save_balance_proof(con, proof, level, proof_indexes[1]).await { + match save_balance_proof(con, proof_storage, proof, level, proof_indexes[1]).await { Err(err) => { print!("Error: {}", err); thread::sleep(Duration::from_secs(5)); diff --git a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs index 6117ea000..a03cf70aa 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs @@ -5,15 +5,17 @@ use circuits::{ }; use circuits_executables::{ crud::{ - fetch_proofs, fetch_validator, load_circuit_data, read_from_file, save_validator_proof, - ValidatorProof, + common::{ + fetch_proofs, fetch_validator, load_circuit_data, read_from_file, save_validator_proof, + ValidatorProof, + }, + proof_storage::proof_storage::create_proof_storage, }, provers::{handle_commitment_mapper_inner_level_proof, SetPWValues}, validator::VALIDATOR_REGISTRY_LIMIT, - validator_commitment_constants, + validator_commitment_constants::get_validator_commitment_constants, }; use clap::{App, Arg}; -use futures_lite::future; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::PartialWitness, @@ -22,11 +24,10 @@ use plonky2::{ }, util::serialization::Buffer, }; + use redis_work_queue::{KeyPrefix, WorkQueue}; use std::{format, print, println, thread, time::Duration}; -use validator_commitment_constants::get_validator_commitment_constants; - use jemallocator::Jemalloc; use serde_binary::binary_stream; @@ -34,11 +35,8 @@ use serde_binary::binary_stream; #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; -fn main() -> Result<()> { - future::block_on(async_main()) -} - -async fn async_main() -> Result<()> { +#[tokio::main] +async fn main() -> Result<()> { let matches = App::new("") .arg( Arg::with_name("redis_connection") @@ -70,6 +68,57 @@ async fn async_main() -> Result<()> { .takes_value(false) .default_value("false") ) + .arg( + Arg::with_name("proof_storage_type") + .long("proof-storage-type") + .value_name("proof_storage_type") + .help("Sets the type of proof storage") + .takes_value(true) + .required(true) + .possible_values(&["redis", "file", "azure", "aws"]) + ) + .arg( + Arg::with_name("folder_name") + .long("folder-name") + .value_name("folder_name") + .help("Sets the name of the folder proofs will be stored in") + .takes_value(true) + ) + .arg( + Arg::with_name("azure_account") + .long("azure-account-name") + .value_name("azure_account") + .help("Sets the name of the azure account") + .takes_value(true) + ) + .arg( + Arg::with_name("azure_container") + .long("azure-container-name") + .value_name("azure_container") + .help("Sets the name of the azure container") + .takes_value(true) + ) + .arg( + Arg::with_name("aws_endpoint_url") + .long("aws-endpoint-url") + .value_name("aws_endpoint_url") + .help("Sets the aws endpoint url") + .takes_value(true) + ) + .arg( + Arg::with_name("aws_region") + .long("aws-region") + .value_name("aws_region") + .help("Sets the aws region") + .takes_value(true) + ) + .arg( + Arg::with_name("aws_bucket_name") + .long("aws-bucket-name") + .value_name("aws_bucket_name") + .help("Sets the aws bucket name") + .takes_value(true) + ) .get_matches(); let redis_connection = matches.value_of("redis_connection").unwrap(); @@ -77,6 +126,8 @@ async fn async_main() -> Result<()> { let client = redis::Client::open(redis_connection)?; let mut con = client.get_async_connection().await?; + let mut proof_storage = create_proof_storage(&matches).await; + println!("Connected to redis"); let queue = WorkQueue::new(KeyPrefix::new( @@ -161,7 +212,15 @@ async fn async_main() -> Result<()> { first_level_circuit_data.prove(pw)? }; - match save_validator_proof(&mut con, proof, 0, validator_index).await { + match save_validator_proof( + &mut con, + proof_storage.as_mut(), + proof, + 0, + validator_index, + ) + .await + { Err(err) => { print!("Error: {}", err); thread::sleep(Duration::from_secs(10)); @@ -186,7 +245,9 @@ async fn async_main() -> Result<()> { println!("Got indexes: {:?}", proof_indexes); } - match fetch_proofs::(&mut con, &proof_indexes).await { + match fetch_proofs::(&mut con, proof_storage.as_mut(), &proof_indexes) + .await + { Err(err) => { print!("Error: {}", err); continue; @@ -222,6 +283,7 @@ async fn async_main() -> Result<()> { match save_validator_proof( &mut con, + proof_storage.as_mut(), proof, proof_indexes[0] + 1, proof_indexes[1], diff --git a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper_circuit_data_generation.rs b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper_circuit_data_generation.rs index 8d0c6e3c3..51b3ef477 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper_circuit_data_generation.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper_circuit_data_generation.rs @@ -13,7 +13,7 @@ use clap::{App, Arg}; use futures_lite::future; use jemallocator::Jemalloc; -use plonky2::{plonk::config::PoseidonGoldilocksConfig}; +use plonky2::plonk::config::PoseidonGoldilocksConfig; #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; diff --git a/beacon-light-client/plonky2/circuits_executables/bin/final_layer.rs b/beacon-light-client/plonky2/circuits_executables/bin/final_layer.rs index 86e979db0..214ffa479 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/final_layer.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/final_layer.rs @@ -1,6 +1,7 @@ use std::{println, time::Instant}; use anyhow::Result; +use base64::{engine::general_purpose, Engine}; use circuits::build_final_circuit::build_final_circuit; use circuits_executables::{ crud::{ @@ -59,7 +60,7 @@ async fn async_main() -> Result<()> { let balance_final_proof = ProofWithPublicInputs::::from_bytes( - balance_proof.proof, + balance_proof.proof_index, &balance_data.common, )?; @@ -90,7 +91,7 @@ async fn async_main() -> Result<()> { GoldilocksField, PoseidonGoldilocksConfig, 2, - >::from_bytes(commitment_proof.proof, &commitment_data.common)?; + >::from_bytes(general_purpose::STANDARD_NO_PAD.decode(&commitment_proof.proof).unwrap(), &commitment_data.common)?; pw.set_proof_with_pis_target( &circuit_targets.commitment_mapper_circuit_targets.proof, diff --git a/beacon-light-client/plonky2/circuits_executables/examples/balance_verification_example.rs b/beacon-light-client/plonky2/circuits_executables/examples/balance_verification_example.rs index 6883205ef..61118238a 100644 --- a/beacon-light-client/plonky2/circuits_executables/examples/balance_verification_example.rs +++ b/beacon-light-client/plonky2/circuits_executables/examples/balance_verification_example.rs @@ -7,13 +7,12 @@ use circuits::{ targets_serialization::WriteTargets, }; use circuits_executables::{ - crud::{fetch_validator_balance_input, write_to_file}, + crud::common::{fetch_validator_balance_input, write_to_file}, provers::SetPWValues, }; use futures_lite::future; use plonky2::{ iop::witness::PartialWitness, plonk::config::PoseidonGoldilocksConfig, - util::serialization::Write, }; use jemallocator::Jemalloc; diff --git a/beacon-light-client/plonky2/circuits_executables/examples/read_circuit_data_example.rs b/beacon-light-client/plonky2/circuits_executables/examples/read_circuit_data_example.rs index 4b4c9c6d6..aa69e8963 100644 --- a/beacon-light-client/plonky2/circuits_executables/examples/read_circuit_data_example.rs +++ b/beacon-light-client/plonky2/circuits_executables/examples/read_circuit_data_example.rs @@ -7,15 +7,17 @@ use circuits::{ validator_balance_circuit::ValidatorBalanceVerificationTargets, }; use circuits_executables::{ - crud::{fetch_validator_balance_input, read_from_file}, + crud::common::{fetch_validator_balance_input, read_from_file}, provers::SetPWValues, }; use futures_lite::future; use plonky2::{ field::goldilocks_field::GoldilocksField, - iop::{witness::PartialWitness}, - plonk::{circuit_data::CircuitData, config::PoseidonGoldilocksConfig}, - util::serialization::{Buffer}, + iop::witness::PartialWitness, + plonk::{ + circuit_data::CircuitData, config::PoseidonGoldilocksConfig, + }, + util::serialization::Buffer, }; use jemallocator::Jemalloc; @@ -30,13 +32,13 @@ fn main() -> Result<()> { async fn async_main() -> Result<()> { let start = Instant::now(); - let target_bytes = read_from_file("targets")?; + let target_bytes = read_from_file("0.plonky2_targets")?; let mut target_buffer = Buffer::new(&target_bytes); let validator_targets = ValidatorBalanceVerificationTargets::read_targets(&mut target_buffer).unwrap(); - let circuit_data_bytes = read_from_file("validator_balance_circuit")?; + let circuit_data_bytes = read_from_file("0.plonky2_circuit")?; let gate_serializer = DendrETHGateSerializer; @@ -77,6 +79,8 @@ async fn async_main() -> Result<()> { let proof = data.prove(pw)?; + println!("proof size {}", proof.to_bytes().len()); + let elapsed = start.elapsed(); println!("Proof generation took: {:?}", elapsed); diff --git a/beacon-light-client/plonky2/circuits_executables/examples/test_application.rs b/beacon-light-client/plonky2/circuits_executables/examples/test_application.rs new file mode 100644 index 000000000..855919cc1 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/examples/test_application.rs @@ -0,0 +1,78 @@ +use anyhow::Result; +use aws_config::Region; +use aws_sdk_s3::primitives::ByteStream; +use aws_sdk_s3::{Client, Config}; +use std::env; + +#[tokio::main] +async fn main() -> Result<()> { + env::set_var("AWS_ACCESS_KEY_ID", "test"); + env::set_var("AWS_SECRET_ACCESS_KEY", "test"); + + let aws_config = aws_config::from_env().load().await; + + let s3_config = Config::builder() + .credentials_provider(aws_config.credentials_provider().unwrap()) + .behavior_version_latest() + .region(Region::new("us-west-2")) + .endpoint_url("http://localhost:4566") + .force_path_style(true) + .clone() + .build(); + + let client = Client::from_conf(s3_config); + + let resp = client.list_buckets().send().await?; + println!("Buckets:"); + + for bucket in resp.buckets() { + println!("{}", bucket.name().unwrap_or_default()); + } + + let bucket_name = "your-bucket-name"; + + // let resp = client.list_objects_v2().bucket(bucket_name).send().await?; + + // println!("Objects in bucket {}:", bucket_name); + + // let contents = resp.contents(); + + // for object in contents { + // println!("Key: {}", object.key().unwrap_or_default()); + + // let key = object.key().unwrap_or_default(); + + // let resp = client + // .get_object() + // .bucket(bucket_name) + // .key(key) + // .send() + // .await?; + + // let mut body = resp.body.collect().await?; + // let mut content = body.into_bytes().to_vec(); + + // let content_str = String::from_utf8_lossy(&content); + + // println!("Value: {}", content_str); + // } + + let key = "proof.bin"; + + let data = "basi maikata lelelelelelel"; + let byte_stream = ByteStream::from(data.as_bytes().to_vec()); + + // client.create_bucket().bucket(bucket_name).send().await?; + + // Upload the object + client + .put_object() + .bucket(bucket_name) + .key(key) + .body(byte_stream) + .send() + .await + .unwrap(); + + Ok(()) +} diff --git a/beacon-light-client/plonky2/circuits_executables/examples/test_application_azure.rs b/beacon-light-client/plonky2/circuits_executables/examples/test_application_azure.rs new file mode 100644 index 000000000..a6b3d7539 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/examples/test_application_azure.rs @@ -0,0 +1,41 @@ +use azure_storage::prelude::*; +use azure_storage_blobs::prelude::*; +use futures::stream::StreamExt; +use std::{env, fs}; + +#[tokio::main] +async fn main() -> azure_core::Result<()> { + let file_name = "0.plonky2_circuit"; + let result = fs::read(file_name).unwrap(); + + dotenv::dotenv().ok(); + + // First we retrieve the account name and access key from environment variables. + let account = env::var("STORAGE_ACCOUNT").expect("missing STORAGE_ACCOUNT"); + let access_key = env::var("STORAGE_ACCESS_KEY").expect("missing STORAGE_ACCOUNT_KEY"); + let container = env::var("STORAGE_CONTAINER").expect("missing STORAGE_CONTAINER"); + let blob_name = file_name; + + let storage_credentials = StorageCredentials::access_key(account.clone(), access_key); + let blob_client = + ClientBuilder::new(account, storage_credentials).blob_client(&container, blob_name); + + blob_client + .put_block_blob(result) + .content_type("application/octet-stream") + .await?; + + let result = blob_client + .get() + .into_stream() + .next() + .await + .unwrap() + .unwrap(); + + let result = result.data.collect().await.unwrap().to_vec(); + + println!("result: {:?}", result); + + Ok(()) +} diff --git a/beacon-light-client/plonky2/circuits_executables/examples/view_proof.rs b/beacon-light-client/plonky2/circuits_executables/examples/view_proof.rs deleted file mode 100644 index 08a3fe0af..000000000 --- a/beacon-light-client/plonky2/circuits_executables/examples/view_proof.rs +++ /dev/null @@ -1,56 +0,0 @@ -use anyhow::Result; -use circuits::{ - build_balance_inner_level_circuit::{build_inner_level_circuit, BalanceInnerCircuitTargets}, - build_commitment_mapper_first_level_circuit::build_commitment_mapper_first_level_circuit, - build_commitment_mapper_inner_level_circuit::{ - build_commitment_mapper_inner_circuit, CommitmentMapperInnerCircuitTargets, - }, - build_validator_balance_circuit::build_validator_balance_circuit, -}; -use circuits_executables::crud::{fetch_proof, BalanceProof, ValidatorProof}; -use futures_lite::future; -use plonky2::{ - field::goldilocks_field::GoldilocksField, - plonk::{ - circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs, - }, -}; -use std::{print, println}; - -fn main() -> Result<()> { - future::block_on(async_main()) -} - -async fn async_main() -> Result<()> { - let mut con = redis::Client::open("redis://127.0.0.1:6379")? - .get_async_connection() - .await?; - - let (_, first_level_circuit_data) = build_validator_balance_circuit(8); - - // let mut inner_circuits: Vec<( - // BalanceInnerCircuitTargets, - // CircuitData, - // )> = Vec::new(); - - // inner_circuits.push(build_balance_inner_circuit(&first_level_circuit_data)); - - // for i in 1..7 { - // inner_circuits.push(build_balance_inner_circuit(&inner_circuits[i - 1].1)); - // } - - let proof = fetch_proof::(&mut con, 0, 992).await?; - - println!("Up to here"); - let plonky2_proof = - ProofWithPublicInputs::::from_bytes( - proof.proof, - &first_level_circuit_data.common, - )?; - - print!("public inputs, {:?}", plonky2_proof.public_inputs); - - first_level_circuit_data.verify(plonky2_proof)?; - - Ok(()) -} diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs similarity index 85% rename from beacon-light-client/plonky2/circuits_executables/src/crud.rs rename to beacon-light-client/plonky2/circuits_executables/src/crud/common.rs index 90d7f6898..67272de3c 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs @@ -8,18 +8,18 @@ use crate::{ validator_balances_input::ValidatorBalancesInput, validator_commitment_constants::get_validator_commitment_constants, }; -use anyhow::Result; +use anyhow::{Ok, Result}; +use async_trait::async_trait; + use circuits::{ build_commitment_mapper_first_level_circuit::CommitmentMapperProofExt, build_final_circuit::FinalCircuitProofExt, - build_validator_balance_circuit::{ - ValidatorBalanceProofExt, - }, + build_validator_balance_circuit::ValidatorBalanceProofExt, generator_serializer::{DendrETHGateSerializer, DendrETHGeneratorSerializer}, }; use num::BigUint; use plonky2::{ - field::{goldilocks_field::GoldilocksField}, + field::goldilocks_field::GoldilocksField, plonk::{ circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs, }, @@ -27,13 +27,15 @@ use plonky2::{ use redis::{aio::Connection, AsyncCommands, RedisError}; use serde::{de::DeserializeOwned, Deserialize, Deserializer, Serialize, Serializer}; +use super::proof_storage::proof_storage::ProofStorage; + #[derive(Serialize, Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct ValidatorProof { pub needs_change: bool, pub poseidon_hash: Vec, pub sha256_hash: Vec, - pub proof: Vec, + pub proof_index: String, } #[derive(Serialize, Deserialize, Debug)] @@ -48,7 +50,7 @@ pub struct BalanceProof { pub withdrawal_credentials: BigUint, #[serde(serialize_with = "biguint_to_str", deserialize_with = "parse_biguint")] pub current_epoch: BigUint, - pub proof: Vec, + pub proof_index: String, } pub fn biguint_to_str(value: &BigUint, serializer: S) -> Result @@ -107,8 +109,9 @@ pub trait KeyProvider { fn get_key() -> String; } +#[async_trait(?Send)] pub trait ProofProvider { - fn get_proof(&self) -> Vec; + async fn get_proof(&self, proof_storage: &mut dyn ProofStorage) -> Vec; } impl NeedsChange for ValidatorProof { @@ -135,15 +138,23 @@ impl KeyProvider for BalanceProof { } } +#[async_trait(?Send)] impl ProofProvider for ValidatorProof { - fn get_proof(&self) -> Vec { - self.proof.clone() + async fn get_proof(&self, proof_storage: &mut dyn ProofStorage) -> Vec { + proof_storage + .get_proof(self.proof_index.clone()) + .await + .unwrap() } } +#[async_trait(?Send)] impl ProofProvider for BalanceProof { - fn get_proof(&self) -> Vec { - self.proof.clone() + async fn get_proof(&self, proof_storage: &mut dyn ProofStorage) -> Vec { + proof_storage + .get_proof(self.proof_index.clone()) + .await + .unwrap() } } @@ -176,10 +187,16 @@ pub async fn fetch_final_layer_input(con: &mut Connection) -> Result, depth: usize, index: usize, ) -> Result<()> { + let proof_index = format!( + "{}:{}:{}", + "balance_verification_proof_storage", depth, index + ); + let balance_proof = serde_json::to_string(&BalanceProof { needs_change: false, range_total_value: proof.get_range_total_value(), @@ -187,9 +204,13 @@ pub async fn save_balance_proof( withdrawal_credentials: proof.get_withdrawal_credentials(), validators_commitment: proof.get_range_validator_commitment().to_vec(), current_epoch: proof.get_current_epoch(), - proof: proof.to_bytes(), + proof_index: proof_index.clone(), })?; + proof_storage + .set_proof(proof_index, &proof.to_bytes()) + .await?; + let _: () = con .set( format!( @@ -245,17 +266,26 @@ pub async fn fetch_validator( pub async fn save_validator_proof( con: &mut Connection, + proof_storage: &mut dyn ProofStorage, proof: ProofWithPublicInputs, depth: usize, index: usize, ) -> Result<()> { + let proof_index = format!("{}:{}:{}", "validator_proof_storage", depth, index); + let validator_proof = serde_json::to_string(&ValidatorProof { - poseidon_hash: proof.get_commitment_mapper_poseidon_hash_tree_root().to_vec(), + poseidon_hash: proof + .get_commitment_mapper_poseidon_hash_tree_root() + .to_vec(), sha256_hash: proof.get_commitment_mapper_sha256_hash_tree_root().to_vec(), - proof: proof.to_bytes(), + proof_index: proof_index.clone(), needs_change: false, })?; + proof_storage + .set_proof(proof_index, &proof.to_bytes()) + .await?; + let _: () = con .set( format!( @@ -315,12 +345,16 @@ pub async fn fetch_proof( pub async fn fetch_proofs( con: &mut Connection, + proof_storage: &mut dyn ProofStorage, indexes: &Vec, ) -> Result<(Vec, Vec)> { let proof1 = fetch_proof::(con, indexes[0], indexes[1]).await?; let proof2 = fetch_proof::(con, indexes[0], indexes[2]).await?; - Ok((proof1.get_proof(), proof2.get_proof())) + Ok(( + proof1.get_proof(proof_storage).await, + proof2.get_proof(proof_storage).await, + )) } pub fn read_from_file(file_path: &str) -> Result> { diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/mod.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/mod.rs new file mode 100644 index 000000000..b256c172c --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/mod.rs @@ -0,0 +1,2 @@ +pub mod common; +pub mod proof_storage; diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs new file mode 100644 index 000000000..d01c261a2 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs @@ -0,0 +1,66 @@ +use anyhow::Result; +use async_trait::async_trait; +use aws_config::{BehaviorVersion, Region}; +use aws_sdk_s3::{primitives::ByteStream, Client, Config}; + +use super::proof_storage::ProofStorage; + +pub struct AwsStorage { + client: Client, + bucket_name: String, +} + +impl AwsStorage { + pub async fn new(endpoint_url: String, region: String, bucket_name: String) -> AwsStorage { + let aws_config = aws_config::defaults(BehaviorVersion::latest()).load().await; + + let s3_config = Config::builder() + .credentials_provider(aws_config.credentials_provider().unwrap()) + .behavior_version_latest() + .region(Region::new(region)) + .endpoint_url(endpoint_url) + .force_path_style(true) + .clone() + .build(); + + let client = Client::from_conf(s3_config); + + AwsStorage { + client, + bucket_name, + } + } +} + +#[async_trait(?Send)] +impl ProofStorage for AwsStorage { + async fn get_proof(&mut self, identifier: String) -> Result> { + let resp = self + .client + .get_object() + .bucket(self.bucket_name.clone()) + .key(identifier) + .send() + .await?; + + let body = resp.body.collect().await?; + let content = body.into_bytes().to_vec(); + + Ok(content) + } + + async fn set_proof(&mut self, identifier: String, proof: &[u8]) -> Result<()> { + let byte_stream = ByteStream::from(proof.to_vec()); + + self.client + .put_object() + .bucket(self.bucket_name.clone()) + .key(identifier) + .body(byte_stream) + .send() + .await + .unwrap(); + + Ok(()) + } +} diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs new file mode 100644 index 000000000..8e38a8648 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs @@ -0,0 +1,52 @@ +use super::proof_storage::ProofStorage; +use anyhow::Result; +use async_trait::async_trait; +use azure_storage::StorageCredentials; +use azure_storage_blobs::prelude::{ClientBuilder, ContainerClient}; +use futures::StreamExt; + +pub struct AzureStorage { + container_client: ContainerClient, +} + +impl AzureStorage { + pub fn new(account: String, access_key: String, container: String) -> AzureStorage { + let storage_credentials = + StorageCredentials::access_key(account.clone(), access_key.clone()); + + let container_client = + ClientBuilder::new(account, storage_credentials).container_client(&container); + + AzureStorage { container_client } + } +} + +#[async_trait(?Send)] +impl ProofStorage for AzureStorage { + async fn get_proof(&mut self, identifier: String) -> Result> { + let blob_client = self.container_client.blob_client(identifier); + + let result = blob_client + .get() + .into_stream() + .next() + .await + .unwrap() + .unwrap(); + + let bytes_result = result.data.collect().await.unwrap().to_vec(); + + Ok(bytes_result) + } + + async fn set_proof(&mut self, identifier: String, proof: &[u8]) -> Result<()> { + let blob_client = self.container_client.blob_client(identifier); + + blob_client + .put_block_blob(proof.to_vec()) + .content_type("application/octet-stream") + .await?; + + Ok(()) + } +} diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs new file mode 100644 index 000000000..7a5866ba8 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs @@ -0,0 +1,37 @@ +use super::proof_storage::ProofStorage; +use anyhow::Result; +use async_trait::async_trait; +use std::fs; + +pub struct FileStorage { + folder_name: String, +} + +impl FileStorage { + pub fn new(folder_name: String) -> FileStorage { + if !fs::metadata(&folder_name).is_ok() { + fs::create_dir_all(&folder_name).unwrap(); + } + + FileStorage { folder_name } + } +} + +#[async_trait(?Send)] +impl ProofStorage for FileStorage { + async fn get_proof(&mut self, identifier: String) -> Result> { + let result = fs::read(format!("{}/{}.{}", self.folder_name, identifier, "bin")).unwrap(); + + Ok(result) + } + + async fn set_proof(&mut self, identifier: String, proof: &[u8]) -> Result<()> { + fs::write( + format!("{}/{}.{}", self.folder_name, identifier, "bin"), + proof, + ) + .unwrap(); + + Ok(()) + } +} diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/mod.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/mod.rs new file mode 100644 index 000000000..7366f8b9d --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/mod.rs @@ -0,0 +1,5 @@ +pub mod proof_storage; +pub mod aws_proof_storage; +pub mod file_proof_storage; +pub mod azure_proof_storage; +pub mod redis_proof_storage; diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs new file mode 100644 index 000000000..11cec84b0 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs @@ -0,0 +1,83 @@ +use std::{env, str::FromStr}; + +use async_trait::async_trait; +use clap::ArgMatches; + +use anyhow::Result; + +use super::{ + aws_proof_storage::AwsStorage, azure_proof_storage::AzureStorage, + file_proof_storage::FileStorage, redis_proof_storage::RedisStorage, +}; + +#[async_trait(?Send)] +pub trait ProofStorage { + async fn get_proof(&mut self, identifier: String) -> Result>; + + async fn set_proof(&mut self, identifier: String, proof: &[u8]) -> Result<()>; +} + +pub enum ProofStorageType { + Redis, + File, + Azure, + Aws, +} + +impl FromStr for ProofStorageType { + type Err = (); + + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + "redis" => Ok(ProofStorageType::Redis), + "file" => Ok(ProofStorageType::File), + "azure" => Ok(ProofStorageType::Azure), + "aws" => Ok(ProofStorageType::Aws), + _ => Err(()), + } + } +} + +pub async fn create_proof_storage(args: &ArgMatches) -> Box { + let proof_storage_type = args + .value_of("proof_storage_type") + .unwrap() + .parse::() + .unwrap(); + + match proof_storage_type { + ProofStorageType::Redis => { + let redis_connection = args.value_of("redis_connection").unwrap(); + + Box::new( + RedisStorage::new(redis_connection.to_string()) + .await + .unwrap(), + ) + } + ProofStorageType::File => { + let folder_name = args.value_of("folder_name").unwrap(); + + Box::new(FileStorage::new(folder_name.to_string())) + } + ProofStorageType::Azure => { + dotenv::dotenv().ok(); + + let access_key = env::var("STORAGE_ACCESS_KEY").expect("missing STORAGE_ACCOUNT_KEY"); + + Box::new(AzureStorage::new( + args.value_of("azure_account").unwrap().to_string(), + access_key, + args.value_of("azure_container").unwrap().to_string(), + )) + } + ProofStorageType::Aws => Box::new( + AwsStorage::new( + args.value_of("aws_endpoint_url").unwrap().to_string(), + args.value_of("aws_region").unwrap().to_string(), + args.value_of("aws_bucket_name").unwrap().to_string(), + ) + .await, + ), + } +} diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/redis_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/redis_proof_storage.rs new file mode 100644 index 000000000..09b59830a --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/redis_proof_storage.rs @@ -0,0 +1,34 @@ +use super::proof_storage::ProofStorage; +use anyhow::Result; +use async_trait::async_trait; +use redis::aio::Connection; +use redis::AsyncCommands; + +pub struct RedisStorage { + connection: Connection, +} + +impl RedisStorage { + pub async fn new(connection_string: String) -> Result { + let client = redis::Client::open(connection_string)?; + + let connection = client.get_async_connection().await?; + + Ok(RedisStorage { connection }) + } +} + +#[async_trait(?Send)] +impl ProofStorage for RedisStorage { + async fn get_proof(&mut self, identifier: String) -> Result> { + let result: Vec = self.connection.get(&identifier).await?; + + Ok(result) + } + + async fn set_proof(&mut self, identifier: String, proof: &[u8]) -> Result<()> { + self.connection.set(&identifier, proof).await?; + + Ok(()) + } +} diff --git a/beacon-light-client/plonky2/circuits_executables/src/provers.rs b/beacon-light-client/plonky2/circuits_executables/src/provers.rs index a15023bc8..84f616870 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/provers.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/provers.rs @@ -21,7 +21,7 @@ use plonky2::{ }; use crate::{ - crud::FinalCircuitInput, + crud::common::FinalCircuitInput, validator::ValidatorShaInput, validator_balances_input::{ValidatorBalancesInput, ValidatorPoseidonInput}, }; diff --git a/beacon-light-client/plonky2/circuits_executables/src/validator_balances_input.rs b/beacon-light-client/plonky2/circuits_executables/src/validator_balances_input.rs index 5cccae0a4..cfbbb058d 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/validator_balances_input.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/validator_balances_input.rs @@ -1,5 +1,5 @@ use crate::{ - crud::{biguint_to_str, parse_biguint}, + crud::common::{biguint_to_str, parse_biguint}, validator::{bool_vec_as_int_vec, bool_vec_as_int_vec_nested}, }; use num::BigUint; diff --git a/beacon-light-client/plonky2/circuits_executables/validator_proof.json b/beacon-light-client/plonky2/circuits_executables/validator_proof.json new file mode 100644 index 000000000..a5dc040fd --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/validator_proof.json @@ -0,0 +1 @@ +{"needsChange":false,"poseidonHash":[16924929798993045119,9228476078763095559,3639599968030750173,9842693474971302918],"sha256Hash":[0,0,0,1,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,1,1,1,1,1,1,0,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,1,1,1,0,1,1,0,0,1,0,0,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,1,0,1,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1],"proof":[182,25,15,234,89,10,42,228,11,188,122,97,109,228,44,100,228,129,111,23,217,92,198,113,38,106,2,202,195,50,98,244,106,246,208,207,219,37,23,223,199,2,58,83,56,28,247,132,140,25,107,144,24,94,25,180,129,9,97,6,130,36,59,76,158,39,12,204,86,117,239,182,71,72,178,114,161,2,193,125,109,140,244,61,255,210,193,110,128,14,146,89,25,110,31,104,220,38,128,164,107,246,9,98,6,49,185,78,228,56,16,10,232,83,58,186,129,134,177,57,172,241,232,96,116,151,251,97,147,68,81,113,221,27,235,182,172,252,132,167,151,33,118,48,145,21,64,39,205,191,78,9,205,27,237,224,179,163,29,145,122,254,122,217,6,23,175,38,244,58,3,164,84,205,31,185,92,30,51,51,238,129,184,130,220,90,159,130,119,152,244,163,45,244,10,103,123,106,84,35,226,95,249,143,102,116,53,150,193,237,165,58,22,216,181,76,17,240,52,8,141,188,113,48,73,243,78,120,141,33,185,226,60,33,125,92,201,137,40,147,84,157,255,119,6,84,239,198,93,141,168,72,244,129,124,37,171,115,247,7,116,204,143,54,205,201,141,77,202,169,179,12,151,231,156,236,40,252,87,169,65,100,229,174,197,133,64,57,183,8,50,212,67,147,47,33,221,89,157,181,19,216,215,192,111,193,148,26,148,229,188,253,116,204,117,196,58,71,47,166,33,159,104,65,14,246,200,65,248,16,240,242,75,238,206,130,118,28,135,185,189,38,145,44,173,68,148,9,86,16,66,35,35,1,196,42,235,40,135,150,245,54,28,30,216,30,88,181,140,81,240,175,102,127,236,11,170,234,136,163,23,60,79,163,181,177,209,172,233,87,26,69,207,101,223,235,183,242,44,242,110,182,227,122,192,12,5,43,188,137,243,174,192,109,223,185,71,178,49,67,101,7,170,111,184,91,156,159,60,238,189,36,52,191,202,2,5,205,221,51,174,59,33,233,170,246,164,179,223,166,139,19,202,91,222,157,163,154,34,240,248,9,28,224,215,124,225,131,61,73,20,162,24,161,28,209,135,65,98,138,17,170,142,48,43,80,83,237,142,90,192,130,173,167,210,240,227,67,162,218,59,148,12,73,98,248,231,73,104,255,50,83,176,0,97,189,100,155,42,0,154,137,20,71,164,246,8,252,133,30,56,198,27,47,188,203,13,247,79,229,247,35,216,82,103,135,122,99,193,116,91,16,49,191,226,50,163,186,103,25,224,142,247,87,91,237,44,97,100,133,254,5,47,36,204,190,27,151,33,61,138,214,234,113,249,216,183,221,34,207,86,163,164,248,176,130,248,193,182,58,217,152,169,135,250,151,189,89,41,76,253,61,62,178,220,187,141,177,116,196,112,6,36,76,208,239,211,6,198,43,57,82,51,20,47,199,151,40,13,60,187,221,67,71,79,172,207,172,239,155,222,46,3,75,163,239,127,56,57,137,75,102,183,60,231,13,95,129,20,5,250,133,208,234,226,179,240,250,239,49,102,3,136,210,123,22,115,208,159,239,65,207,2,51,207,224,195,194,234,110,164,149,53,50,225,26,182,159,102,54,100,20,47,251,60,93,229,6,13,156,110,164,150,67,36,185,89,42,160,156,85,141,37,187,76,137,61,163,17,161,101,116,42,237,190,192,10,81,41,181,152,87,9,63,16,233,33,34,134,37,162,21,119,17,162,123,180,31,169,81,69,246,77,125,216,129,22,110,225,106,217,111,239,98,186,50,242,3,29,153,67,29,251,133,206,21,145,223,130,61,157,168,13,182,223,149,28,226,160,247,254,219,136,160,182,101,168,250,18,133,129,215,126,12,118,93,20,103,113,223,97,34,65,16,90,231,124,213,119,23,190,191,50,49,174,135,92,111,118,229,1,243,254,240,0,52,234,111,25,246,104,56,4,115,38,249,134,17,162,76,139,30,199,40,135,18,191,41,228,9,155,49,80,144,178,53,19,117,236,15,9,97,107,231,50,5,120,6,184,246,109,123,19,203,226,152,67,103,3,135,54,225,110,94,137,32,232,99,98,18,83,33,113,218,103,94,173,73,24,159,116,182,37,152,46,20,86,181,114,76,11,220,205,73,235,10,107,90,252,113,55,165,169,195,119,12,240,208,103,140,35,224,243,109,236,51,171,59,93,221,27,131,120,20,200,75,229,48,75,152,216,10,90,196,207,175,86,182,59,99,6,213,227,216,115,174,242,244,34,252,10,97,189,249,160,8,141,43,215,103,210,85,92,49,103,150,215,45,174,221,73,238,108,74,212,151,125,212,205,59,75,202,95,170,174,130,162,245,19,93,87,186,17,42,75,53,135,218,219,25,15,227,47,134,164,151,145,170,15,39,235,104,39,173,153,222,147,145,138,153,190,180,153,222,57,236,39,6,223,155,77,254,43,144,141,80,251,103,228,240,183,66,43,44,131,124,151,86,247,111,130,3,189,120,156,60,71,188,233,118,128,237,173,156,60,205,223,73,7,156,231,38,141,143,24,20,119,12,130,35,197,75,173,219,53,16,140,179,41,245,154,210,235,210,9,85,254,68,170,105,171,94,70,18,247,220,26,101,252,12,8,137,41,69,228,197,79,17,252,49,26,82,223,223,105,133,250,164,124,156,106,49,178,0,96,251,191,10,198,143,128,220,34,78,132,147,40,116,176,215,225,90,114,12,50,130,26,117,11,75,15,18,199,247,15,38,12,146,87,184,220,191,129,28,178,2,195,210,226,95,80,232,61,231,173,211,92,96,124,45,56,242,62,137,47,131,232,223,213,59,113,157,140,92,249,198,71,161,5,173,74,228,182,124,12,127,212,33,222,218,124,83,34,226,75,157,33,109,95,192,34,206,244,129,33,4,103,225,206,208,29,186,82,47,107,56,60,157,50,133,106,236,181,206,8,222,248,250,239,69,135,5,80,62,201,1,9,179,9,93,62,99,187,157,76,34,56,67,198,183,77,149,206,30,56,189,186,154,162,35,201,136,104,224,221,29,149,244,11,48,150,174,164,145,18,90,85,16,245,148,215,142,243,199,11,226,206,184,214,162,152,36,97,130,130,146,193,198,51,67,119,45,197,65,5,106,123,191,242,176,3,77,54,252,149,159,179,185,22,228,53,222,193,147,229,94,209,99,116,91,245,93,180,254,97,88,197,220,131,201,71,42,244,199,134,73,233,199,239,159,83,72,132,109,228,103,69,66,102,165,46,47,160,93,190,167,19,80,252,0,43,234,156,62,12,58,229,160,55,7,106,175,36,153,199,176,249,141,71,17,1,209,80,89,245,160,112,171,158,84,94,133,191,228,69,6,128,220,17,118,171,242,129,51,218,240,16,91,96,163,26,205,24,103,199,125,198,179,245,109,203,61,73,10,157,238,55,66,12,160,15,187,242,128,239,55,96,145,33,229,120,40,95,237,252,70,148,187,9,58,37,221,98,107,83,157,223,254,8,81,91,58,92,25,54,239,71,112,164,140,83,71,163,144,142,119,125,92,127,42,164,149,67,35,205,250,218,191,81,42,204,141,192,231,90,126,154,148,170,65,143,8,63,61,145,226,36,198,141,94,132,60,251,154,98,144,37,130,231,107,74,25,57,113,113,139,103,174,140,9,254,119,7,98,21,88,27,89,187,98,161,182,55,255,180,183,142,252,60,243,3,87,47,112,177,232,253,73,213,197,95,93,56,79,217,69,108,159,25,126,205,134,46,184,120,224,120,233,119,148,180,121,225,4,48,72,32,217,241,150,33,130,208,124,30,79,180,46,24,173,132,104,187,63,8,249,86,122,201,15,7,171,219,104,136,101,165,32,223,171,28,16,192,45,55,161,89,168,152,172,31,178,251,169,19,115,22,32,141,114,221,15,40,47,227,134,5,178,229,101,179,190,142,230,117,234,109,0,58,42,67,234,242,153,209,64,39,157,20,190,239,37,125,162,63,28,166,81,44,130,209,68,67,54,40,234,66,134,117,145,77,183,127,4,112,168,95,231,83,30,165,226,135,208,206,24,178,112,7,163,135,158,183,232,205,126,151,36,159,245,74,170,26,0,71,155,168,179,29,113,3,216,77,17,193,250,220,209,157,177,210,95,84,135,26,230,114,13,59,165,118,89,146,172,209,118,38,237,215,14,122,119,70,177,208,125,37,3,18,78,118,28,238,54,53,93,124,133,28,221,108,49,53,212,106,11,25,102,188,21,248,225,190,4,6,252,236,103,68,213,19,244,117,169,198,32,179,240,216,184,162,123,185,49,252,116,107,240,29,249,152,127,173,15,112,6,104,233,25,162,212,211,17,173,206,57,194,206,129,183,235,171,171,106,213,215,134,107,50,211,86,205,150,194,227,133,118,159,133,139,41,192,49,228,166,87,97,8,9,228,240,146,160,227,147,177,110,81,139,101,3,46,129,9,67,156,135,165,101,76,14,230,141,100,226,156,168,224,167,37,92,166,58,106,158,44,192,70,252,255,129,31,35,62,9,179,228,251,40,124,180,54,92,82,63,131,153,131,144,180,90,162,49,156,59,235,17,226,12,128,8,210,241,217,18,119,6,27,18,156,97,242,94,86,130,166,148,216,55,219,251,112,69,158,186,165,197,98,73,204,75,25,204,0,3,110,116,137,110,210,150,9,28,150,61,239,204,251,124,218,42,104,92,130,63,169,51,2,57,35,254,65,63,38,118,160,185,119,232,149,255,77,217,255,180,87,169,255,194,9,117,131,152,68,58,222,86,49,2,199,235,199,70,82,234,40,11,150,45,154,96,20,133,170,62,77,236,194,11,115,158,12,154,180,37,177,9,62,37,147,54,160,95,66,202,180,86,216,232,210,212,51,214,137,82,55,115,139,142,34,119,249,100,248,69,44,119,128,53,200,43,92,246,176,216,78,217,19,230,139,14,70,63,140,151,22,163,202,146,124,97,44,69,102,82,246,170,103,204,147,216,104,238,90,38,173,7,19,138,99,17,173,247,2,50,156,126,174,226,130,223,120,184,241,160,219,250,103,94,26,171,54,184,4,149,196,74,56,233,240,238,196,248,28,79,216,198,12,23,157,169,153,130,235,88,168,9,212,106,237,85,90,221,203,209,159,210,150,43,59,24,15,152,171,107,47,63,244,185,226,142,148,92,193,50,35,25,105,252,130,207,99,65,190,116,38,158,31,120,29,33,14,174,244,249,208,158,156,251,253,6,255,129,108,104,111,68,141,45,190,74,13,92,176,193,46,117,183,105,187,193,224,25,218,210,228,11,116,29,33,225,79,240,250,215,247,146,205,25,200,0,161,231,185,20,129,57,195,156,156,134,99,63,110,246,58,54,219,148,36,207,38,76,218,228,57,97,96,74,147,249,68,13,67,51,5,187,213,183,151,65,80,252,155,95,112,111,64,251,153,183,195,184,60,175,50,219,200,208,155,229,215,244,50,102,59,113,88,49,169,236,201,7,52,254,66,216,33,100,228,148,107,48,114,63,157,209,236,96,58,248,195,4,186,213,181,219,223,2,191,69,126,216,169,44,227,166,118,152,193,205,20,51,152,64,99,154,125,236,159,11,127,201,226,203,160,23,119,133,46,6,191,182,125,54,28,194,92,63,177,133,11,22,67,153,123,246,45,180,87,18,0,49,245,152,114,247,211,73,206,142,135,34,116,155,74,65,38,10,81,113,69,98,122,165,129,229,119,160,171,55,171,71,176,135,5,222,207,42,39,127,37,244,68,233,163,170,42,73,193,226,88,222,75,243,142,109,146,140,5,121,115,169,23,151,43,66,146,188,208,249,204,141,249,36,33,135,177,154,8,217,120,77,244,251,118,144,159,231,17,177,86,78,81,89,5,103,182,56,28,17,145,247,242,200,238,153,134,248,136,120,144,6,131,212,147,174,20,156,53,169,224,53,9,61,213,144,249,224,1,75,14,111,169,13,30,228,107,212,133,107,27,170,102,133,197,137,245,19,213,148,44,230,216,83,16,109,245,206,13,156,83,163,104,240,132,247,236,252,46,38,240,23,204,245,234,14,45,138,187,103,86,36,121,134,10,146,149,38,217,248,137,156,210,150,244,178,117,192,245,77,133,145,194,40,156,231,1,15,72,97,14,221,226,26,87,101,225,158,152,197,66,106,90,136,203,147,20,226,238,123,163,122,173,1,93,150,23,163,41,235,108,185,103,212,14,62,51,115,216,74,46,47,239,52,9,91,63,252,185,78,100,144,139,46,233,25,166,111,133,57,23,185,148,163,190,106,124,167,167,105,63,204,152,142,253,111,246,138,228,101,251,160,154,210,148,39,189,35,205,78,23,205,154,155,60,120,142,98,226,212,230,164,136,71,183,38,166,194,111,84,104,169,172,243,243,80,85,192,138,113,139,103,45,220,155,56,85,24,53,112,148,13,190,166,6,138,101,35,199,143,100,221,88,72,71,123,111,43,156,49,162,159,102,148,117,167,129,1,248,150,54,47,181,255,11,238,156,112,163,151,56,79,141,60,81,34,92,147,209,162,214,222,89,203,227,30,152,77,42,112,154,230,74,122,254,14,174,226,182,156,84,100,20,72,60,26,155,76,58,144,117,215,135,136,176,92,26,71,94,197,115,24,76,123,18,103,129,229,183,218,20,131,226,26,252,42,215,45,113,220,127,199,92,245,97,119,157,121,87,212,53,30,15,77,181,19,170,156,154,26,252,125,168,152,79,65,50,190,6,0,80,94,66,188,65,81,224,22,113,162,153,71,91,70,211,36,32,160,116,232,213,116,25,118,131,120,157,196,154,74,177,229,130,191,51,50,46,119,33,221,91,195,86,60,98,193,28,5,148,13,40,228,160,209,199,62,206,74,209,103,177,91,85,229,216,203,236,86,243,71,208,25,214,201,167,34,84,19,118,124,106,209,40,170,69,30,36,137,180,164,62,93,81,237,144,172,123,4,152,120,172,76,47,146,8,156,79,119,98,6,80,166,241,8,173,2,106,216,140,144,125,211,209,13,148,227,173,217,205,245,254,46,126,188,148,12,179,170,111,80,23,89,96,10,243,203,81,94,241,137,233,185,100,20,173,227,218,9,54,225,116,142,82,246,10,153,7,148,61,127,35,159,73,73,79,113,230,167,111,191,200,97,47,24,235,176,218,17,93,22,230,241,18,166,101,241,45,80,118,65,208,131,53,104,228,191,200,232,82,217,121,129,9,106,33,102,4,193,190,150,225,197,94,141,89,58,9,111,37,99,183,211,124,218,88,237,2,110,248,223,153,62,158,120,254,83,226,189,161,151,86,38,113,5,172,18,102,201,171,11,232,100,143,7,2,66,255,31,106,189,14,236,59,212,121,254,173,210,43,70,249,155,212,135,73,77,194,126,240,182,71,81,188,106,171,209,132,19,147,74,72,124,82,165,119,140,83,227,254,30,137,212,214,9,140,253,135,151,34,234,247,119,139,34,192,159,255,233,145,32,86,154,69,154,96,129,211,158,27,138,19,203,14,152,221,11,224,124,202,159,195,73,165,1,190,214,95,64,129,199,95,136,228,214,93,40,151,32,116,110,139,226,253,248,10,248,1,255,58,17,233,103,73,208,49,7,134,195,189,34,59,42,102,41,83,17,191,102,140,106,89,225,250,80,211,176,143,234,184,35,152,25,236,74,161,113,25,55,164,111,123,66,20,98,137,145,255,44,102,141,52,111,154,214,77,54,186,171,111,16,229,142,141,178,201,253,202,136,176,152,192,173,209,25,187,228,103,25,196,235,3,41,241,54,114,183,38,61,85,77,216,194,47,123,208,127,12,171,137,57,147,109,135,180,245,145,200,28,68,161,112,216,197,209,74,198,228,78,65,45,57,203,233,160,244,203,217,36,213,11,115,231,202,49,193,60,4,170,53,8,165,241,215,119,228,12,117,165,76,153,146,98,205,143,205,67,120,100,31,187,123,242,106,40,87,27,1,72,250,236,215,226,149,220,143,88,130,137,234,162,179,231,214,216,64,57,141,84,106,194,196,91,172,73,135,1,59,18,29,215,106,222,90,138,167,124,224,87,45,172,148,206,190,14,153,180,208,72,161,91,32,200,171,191,141,189,123,89,217,156,238,105,15,55,210,34,126,49,67,209,80,191,34,51,158,251,221,15,28,99,254,244,157,32,11,71,230,56,101,7,78,228,219,158,127,111,202,171,83,158,247,223,71,84,51,181,54,14,246,32,223,20,165,61,69,203,71,219,107,116,216,97,87,236,38,54,234,15,19,21,72,97,121,211,18,61,15,21,103,23,27,137,227,118,141,53,155,189,46,16,173,108,241,172,130,211,139,177,115,77,6,97,136,145,253,206,244,183,167,150,63,97,113,18,56,166,77,235,151,178,98,209,1,26,74,156,72,77,69,54,63,14,203,193,190,7,211,19,8,31,213,137,204,94,88,211,157,60,186,124,244,88,151,234,5,149,82,63,87,134,148,77,246,8,50,230,224,4,177,107,235,252,120,18,29,25,252,157,222,247,22,192,203,217,62,138,220,211,117,242,42,67,189,60,222,251,114,13,66,69,195,233,8,156,231,204,137,214,46,220,140,221,22,116,110,44,31,56,94,100,115,206,164,39,83,239,218,247,241,83,228,168,63,182,69,102,159,150,65,196,68,86,135,202,40,17,3,107,79,36,206,193,69,233,237,8,64,22,126,216,234,250,254,207,54,131,31,26,133,197,5,63,147,165,204,150,168,139,36,171,62,153,247,201,245,98,98,156,121,138,84,223,104,5,226,90,160,63,207,22,60,173,120,143,60,14,166,190,48,81,242,41,191,140,200,17,188,158,41,214,100,221,242,90,151,187,232,43,123,187,191,29,189,71,162,21,215,179,221,172,1,211,71,94,117,104,214,156,19,76,255,40,66,243,78,205,244,52,92,125,34,229,49,128,213,168,18,42,186,64,154,26,244,123,228,173,35,93,19,167,237,245,67,225,52,86,19,117,182,76,6,164,241,167,9,58,233,246,138,4,35,249,54,79,129,103,215,230,218,223,182,68,103,2,90,219,118,152,26,101,164,40,247,65,180,84,79,145,219,35,21,88,136,10,72,223,178,8,25,187,225,171,91,75,128,35,129,94,73,0,165,43,22,176,204,69,36,169,253,183,235,216,92,45,19,184,111,110,27,209,92,100,248,29,52,174,36,178,25,70,255,170,220,58,44,58,32,123,170,29,129,58,253,50,48,195,115,4,97,156,189,183,169,37,189,215,242,45,224,53,35,76,67,5,232,230,213,28,237,118,233,62,133,204,138,200,233,73,145,22,44,76,5,89,182,147,30,233,249,163,32,125,254,195,244,1,214,190,151,208,160,25,190,72,39,173,231,191,204,103,44,174,22,115,232,89,10,147,26,135,118,169,138,132,91,86,220,232,23,47,130,83,69,57,203,203,122,173,137,28,159,44,121,114,195,83,192,51,68,171,162,22,76,12,74,83,85,177,130,221,1,178,35,119,148,173,254,120,149,84,13,57,53,246,59,101,58,234,122,177,172,184,159,47,150,101,83,22,35,0,39,63,169,71,39,235,231,107,152,2,85,78,14,202,61,213,37,199,73,168,70,21,248,139,66,201,12,148,211,194,211,204,144,134,137,74,191,181,112,208,217,79,182,183,55,206,202,125,204,120,30,162,103,95,149,239,90,13,129,51,110,110,72,188,36,191,175,80,130,146,245,247,243,68,253,226,236,91,167,207,186,99,45,133,35,164,88,113,113,192,39,65,199,245,120,197,37,171,205,115,232,25,12,114,125,61,173,248,64,228,56,119,97,162,149,118,133,11,68,21,68,132,34,117,17,35,153,210,4,72,183,137,198,22,10,59,140,255,92,152,39,215,47,222,172,33,103,5,107,137,194,37,88,118,162,88,70,76,155,175,203,130,78,36,197,77,126,66,196,73,163,243,155,206,130,245,119,148,172,50,171,204,215,15,237,12,54,61,148,203,80,128,227,61,80,116,157,227,8,161,228,110,221,175,186,135,249,247,138,37,47,180,118,27,223,102,197,94,0,249,251,151,183,200,59,18,64,178,152,247,41,220,219,66,102,167,40,46,106,165,122,98,69,68,12,8,233,245,122,229,44,217,156,107,153,113,97,120,188,45,196,80,195,169,11,120,17,140,133,76,89,105,132,69,202,73,147,55,85,24,191,124,142,188,77,58,237,108,202,219,205,104,74,28,45,10,96,60,93,255,192,112,154,57,176,183,46,66,94,109,142,190,78,151,220,137,2,189,174,229,79,84,142,123,171,239,182,80,43,75,21,80,212,230,95,42,132,147,33,229,211,233,226,23,36,67,198,138,60,50,195,138,30,239,133,65,217,238,252,113,171,185,139,197,236,203,252,29,130,139,67,141,196,159,3,173,87,243,239,1,14,197,105,147,189,154,64,9,83,85,183,203,16,224,91,214,98,112,101,84,211,1,190,20,168,221,157,143,85,129,157,175,14,19,132,251,134,152,33,109,150,87,69,228,20,131,140,136,253,151,24,94,3,15,142,26,197,137,75,13,11,107,101,31,91,29,108,169,99,203,252,203,39,102,213,19,204,238,4,141,194,118,6,209,6,201,152,134,239,7,189,53,157,137,71,43,138,223,57,117,230,24,223,90,188,36,40,9,145,63,242,188,247,46,174,175,84,19,102,178,149,117,81,162,244,236,108,103,202,16,27,189,40,165,204,211,75,241,238,246,147,101,80,147,42,244,213,199,136,242,185,209,87,178,63,200,246,47,161,201,161,219,172,195,144,254,231,192,47,132,250,2,242,32,191,116,242,126,55,68,198,31,68,109,77,233,145,228,214,82,96,0,220,226,97,218,44,62,73,41,1,236,111,68,54,204,17,69,204,1,81,60,245,57,220,3,70,77,183,78,20,83,55,92,19,118,87,128,29,224,242,202,119,189,142,147,79,209,250,150,152,148,65,44,176,51,137,175,56,10,138,7,143,191,79,118,49,217,245,57,60,241,29,243,117,247,200,183,15,50,6,128,37,83,122,28,229,29,199,112,93,189,99,188,46,202,125,11,10,107,179,159,91,51,94,87,109,121,220,4,194,60,151,80,115,87,74,14,216,212,157,66,52,162,158,42,72,196,84,124,57,2,159,233,166,7,1,119,147,184,91,184,240,105,100,75,33,23,249,191,122,88,21,233,194,224,119,169,160,123,244,243,72,190,31,36,52,43,161,126,253,207,173,89,216,231,238,207,101,254,245,155,146,44,246,85,71,194,0,99,0,44,224,218,10,163,121,225,117,12,241,14,38,106,78,125,54,97,250,73,29,3,123,160,1,156,177,185,10,178,116,8,103,251,225,189,166,189,68,181,123,25,156,234,161,31,219,8,133,53,196,30,164,124,137,190,244,198,60,159,229,163,92,92,53,200,24,167,206,116,54,111,28,77,174,159,96,226,55,235,216,200,226,247,177,62,91,68,216,92,158,11,254,156,54,224,50,20,161,130,108,60,21,50,185,108,25,64,173,100,198,209,208,3,50,64,212,25,145,232,160,18,28,36,180,146,143,255,175,227,163,96,43,22,252,228,159,235,74,172,173,193,217,223,196,3,255,247,235,28,30,192,26,177,243,222,245,154,201,62,193,154,40,50,57,241,184,103,184,184,241,206,24,78,209,38,32,213,104,3,252,142,157,24,43,83,129,125,142,162,224,235,154,16,46,106,153,191,97,164,80,146,14,181,222,21,214,200,220,1,150,56,23,58,56,69,81,251,151,172,193,140,131,184,252,69,103,106,244,131,90,95,18,1,245,154,122,139,49,65,132,79,64,228,92,45,118,233,254,231,53,255,75,54,13,104,32,138,127,27,197,31,207,50,237,231,29,101,141,111,241,178,237,25,41,156,226,168,168,114,241,203,175,56,12,50,112,206,66,234,2,91,222,180,248,238,80,184,108,53,130,137,94,150,50,192,239,5,192,48,179,196,91,227,200,62,216,39,81,144,123,118,172,227,77,144,32,16,170,45,144,161,120,49,174,219,163,52,68,22,75,182,41,47,44,53,148,28,35,120,49,72,70,167,1,179,105,206,217,87,110,245,157,241,36,68,150,217,196,58,65,165,142,161,194,56,249,189,237,160,92,119,36,213,14,118,117,91,82,135,80,179,69,25,124,185,180,142,139,167,81,187,13,166,170,165,12,90,107,111,167,157,153,29,143,41,100,241,182,100,59,191,211,84,161,191,201,182,218,35,16,147,1,220,105,27,181,239,125,209,145,116,119,227,105,248,2,108,107,138,180,87,152,115,194,72,31,191,188,73,61,213,138,184,176,136,155,183,235,21,156,146,62,81,53,221,94,23,245,247,49,219,209,11,170,211,233,178,87,42,3,245,115,184,93,241,130,16,50,235,172,213,250,26,69,29,46,31,191,238,143,161,105,77,71,53,109,243,104,235,216,66,121,44,244,70,245,235,207,81,105,4,243,113,107,157,74,125,150,94,29,97,206,98,76,52,86,170,123,173,218,81,211,182,232,69,186,234,199,120,240,94,34,64,209,4,26,107,102,159,111,191,156,46,154,255,94,71,148,138,30,150,49,135,62,46,47,14,38,229,4,173,5,100,185,120,204,38,78,252,32,95,0,88,198,160,73,35,228,171,198,88,110,9,20,77,124,211,175,138,88,250,19,199,14,118,204,42,37,151,47,151,128,113,220,245,38,52,27,101,222,84,196,180,217,170,77,231,240,141,101,158,139,116,207,75,181,214,38,139,232,204,212,19,187,131,79,133,55,240,199,90,136,169,94,95,53,122,219,214,131,116,122,56,176,26,101,54,90,16,96,68,164,214,5,61,10,57,77,86,46,76,251,16,73,141,6,168,51,218,240,73,143,21,227,165,197,107,194,41,174,13,180,139,108,33,110,234,234,57,64,201,159,103,15,79,222,72,154,91,162,188,164,150,17,108,81,127,161,249,220,228,61,149,87,11,181,50,226,18,244,201,45,235,165,222,41,45,158,135,90,221,78,73,249,126,140,27,119,219,235,23,140,235,207,69,173,163,176,127,215,220,62,173,240,217,171,69,90,160,20,222,156,106,116,200,13,252,253,153,115,56,245,53,82,228,242,61,220,241,245,248,48,8,164,53,48,60,94,47,47,91,248,99,230,220,88,36,153,73,9,122,39,119,62,205,47,222,103,196,226,68,5,206,163,254,246,75,110,226,218,34,6,11,189,120,33,233,50,122,213,112,107,4,114,94,201,96,111,22,107,96,104,87,40,234,97,137,233,211,24,108,91,181,200,64,213,195,186,226,211,22,161,49,177,55,26,58,217,157,56,56,162,106,102,22,141,60,17,28,38,218,58,91,240,179,21,101,159,190,146,125,56,90,135,206,76,198,35,103,88,113,29,8,250,209,241,237,41,178,113,73,14,50,12,147,18,94,25,62,221,206,186,202,193,141,222,2,59,173,254,26,245,99,40,16,106,192,227,39,212,154,181,124,244,132,39,74,246,70,230,182,67,111,231,30,52,251,148,83,110,20,144,168,184,6,128,30,250,191,159,168,158,43,170,198,133,219,69,186,185,159,118,254,60,79,230,169,137,65,124,181,129,210,99,247,248,8,82,47,249,40,216,44,16,174,111,67,25,160,106,201,64,116,13,70,101,167,61,189,30,143,35,105,172,21,148,229,101,13,234,203,164,196,234,176,172,74,138,172,25,105,78,75,134,71,249,214,79,192,187,245,203,216,140,13,234,81,71,206,55,94,116,194,119,86,103,85,11,153,33,187,220,207,23,63,5,194,220,15,193,233,140,97,53,77,66,216,61,99,153,227,170,166,27,105,217,90,159,81,145,231,121,102,33,197,158,148,170,33,29,169,80,99,113,120,71,40,224,198,105,154,134,56,186,11,34,103,62,156,239,229,140,22,116,9,187,17,151,46,193,54,234,238,182,155,133,249,166,168,49,128,37,9,253,245,125,233,98,90,72,242,2,123,29,55,28,242,223,85,152,160,40,136,111,60,44,35,59,206,97,158,179,56,33,100,174,148,176,55,76,15,188,22,147,139,17,165,105,228,172,136,180,170,36,152,199,110,77,56,51,92,70,50,82,10,100,35,73,42,225,167,80,24,223,91,93,77,254,170,35,164,2,240,153,91,65,252,174,203,26,33,138,247,217,215,121,8,86,190,91,67,113,59,106,106,93,24,1,61,55,118,126,12,36,61,146,54,248,126,230,88,82,189,68,4,84,221,160,173,102,81,152,203,244,12,64,154,47,43,183,7,63,65,84,79,117,116,61,17,45,79,224,219,133,254,157,5,47,230,30,61,27,21,245,82,90,172,182,28,225,65,213,182,109,203,193,143,70,213,159,237,211,247,129,47,243,57,166,230,110,127,231,23,242,136,171,207,144,226,177,172,218,142,117,73,52,52,229,124,2,117,151,154,24,246,96,190,186,203,168,88,134,28,214,199,35,225,165,236,65,46,150,27,214,47,211,169,105,213,204,246,0,186,51,66,68,239,21,39,90,97,161,112,182,124,15,121,190,149,142,200,139,153,104,82,170,117,19,31,153,181,242,17,170,23,172,66,8,255,108,129,67,246,180,191,83,251,150,162,139,239,128,152,226,119,48,252,60,70,91,188,162,138,223,95,224,231,190,215,137,58,46,136,88,71,108,154,160,140,214,180,21,123,120,253,88,167,253,254,229,18,77,102,43,140,70,115,166,199,70,137,30,41,80,185,121,255,239,157,204,93,220,10,168,115,237,50,219,104,11,205,19,1,37,133,1,172,136,150,82,156,84,133,15,180,12,84,188,141,187,82,200,134,235,130,77,143,51,254,5,225,215,234,26,199,159,173,197,135,44,239,225,209,41,12,176,131,214,101,10,243,134,163,192,133,132,51,171,105,215,90,22,239,55,252,6,130,102,227,237,6,39,94,87,186,151,9,71,196,139,73,57,243,121,94,221,126,182,142,105,126,154,224,244,81,223,71,135,215,243,187,44,60,213,225,152,118,176,39,24,202,246,197,10,77,90,176,247,137,155,223,248,220,194,244,129,87,18,250,141,215,223,147,245,125,117,237,95,128,194,204,250,128,190,121,23,65,75,3,57,251,228,87,182,84,169,38,14,7,82,223,197,252,220,213,222,170,216,203,24,232,109,167,111,34,141,207,60,157,27,121,23,179,20,243,92,238,72,16,34,21,103,208,180,138,148,227,171,97,3,16,65,114,183,158,141,214,217,90,209,107,159,228,196,103,125,85,174,160,64,185,200,165,178,184,111,253,233,83,81,49,225,90,180,88,247,176,10,169,151,89,8,183,82,211,87,18,3,184,129,26,24,147,115,227,220,180,52,12,13,182,14,11,209,57,206,135,140,162,31,244,157,165,89,208,136,148,230,214,183,202,28,211,228,204,6,121,99,69,28,61,162,147,129,79,119,159,138,249,81,107,234,200,147,216,136,174,174,188,67,255,202,155,55,16,47,235,77,116,24,244,215,26,89,239,207,120,147,153,108,130,198,43,60,127,230,32,253,142,41,248,163,20,236,160,220,58,85,147,191,13,247,101,161,55,150,35,161,214,121,9,76,116,248,20,109,43,49,32,92,29,155,18,182,212,75,242,54,161,203,91,186,245,115,239,83,147,113,181,36,58,61,45,75,82,117,249,171,45,19,67,230,227,108,158,116,17,211,157,213,109,123,159,184,5,89,168,192,82,61,62,238,11,68,233,40,181,44,82,2,2,184,239,136,104,122,135,68,149,111,51,250,88,152,94,73,201,254,234,234,174,160,209,233,103,187,95,94,182,164,48,186,90,222,168,150,3,53,243,248,166,39,149,236,164,91,220,230,32,119,30,72,238,52,205,99,207,7,46,254,46,169,49,46,59,196,90,245,215,213,204,101,222,229,229,19,201,26,134,37,32,30,233,140,119,225,110,121,42,233,138,172,26,10,39,156,255,44,204,132,90,197,147,147,184,14,116,149,247,82,97,220,194,144,179,222,236,174,61,90,192,221,17,135,191,252,75,178,58,233,66,122,70,226,71,141,123,216,137,198,10,116,60,115,164,239,218,12,66,120,232,209,82,49,230,237,247,70,122,151,68,175,70,230,48,85,64,164,37,86,72,17,108,107,254,75,160,45,82,155,42,138,86,59,153,84,127,136,2,241,20,211,32,48,7,160,98,115,111,46,107,39,7,214,98,188,85,137,252,156,76,122,11,247,29,208,137,54,41,92,43,55,8,177,239,85,214,76,6,180,2,228,89,22,15,219,172,181,132,248,173,25,137,87,149,217,151,201,240,80,152,36,46,170,219,196,5,123,43,101,198,174,131,20,232,229,151,47,75,161,198,212,226,60,212,240,194,235,2,77,69,172,211,254,52,155,93,79,215,216,135,65,106,13,151,32,151,143,228,50,156,222,224,25,81,206,244,249,160,31,236,240,141,16,88,9,176,225,13,127,30,236,181,153,231,205,71,17,86,146,178,116,207,152,191,4,237,17,22,168,165,196,102,91,203,209,239,195,198,124,122,207,232,27,157,97,72,46,253,15,73,230,124,101,189,204,147,171,155,126,123,244,70,233,23,139,69,73,24,124,123,98,127,53,82,132,170,13,11,48,144,153,80,182,113,90,75,27,84,53,133,152,182,212,107,71,98,160,211,169,229,18,110,122,187,67,176,246,231,37,157,68,225,151,62,49,214,255,184,119,80,31,73,6,102,26,24,203,138,115,142,186,230,58,104,40,175,118,80,91,57,204,230,1,35,23,115,205,165,239,3,231,81,157,53,118,48,15,195,153,27,174,207,170,89,178,111,56,83,151,49,13,200,201,78,180,167,184,15,58,114,203,90,134,107,160,18,79,54,245,69,235,196,73,147,233,0,132,115,107,2,137,218,28,248,230,174,96,208,237,175,96,42,216,53,89,128,143,95,34,85,157,155,178,215,238,162,168,147,185,148,136,153,59,201,167,44,50,55,137,139,33,51,209,136,228,8,151,81,15,7,173,201,0,147,4,197,110,131,42,230,3,87,171,8,249,159,233,13,101,78,118,198,107,92,142,149,224,212,241,26,143,150,206,1,110,79,250,0,254,183,92,67,59,9,249,105,164,125,109,156,234,183,143,89,180,207,139,137,164,75,236,228,224,114,82,34,241,48,192,152,6,154,124,25,19,11,111,155,162,169,10,81,93,14,49,51,54,213,239,58,196,213,6,220,69,95,70,31,143,210,205,220,62,94,135,13,103,155,252,7,245,16,22,110,25,136,86,164,225,208,250,252,102,190,40,214,183,45,14,140,91,139,205,159,43,170,97,220,231,26,161,26,73,122,130,24,47,241,200,138,114,187,223,19,41,149,170,30,191,146,172,23,209,170,161,61,19,250,82,148,255,205,151,22,63,228,239,57,117,43,248,248,51,163,44,160,70,151,90,128,99,7,231,7,197,71,154,178,206,112,231,94,235,235,243,35,20,126,28,176,38,43,45,234,44,119,131,8,132,173,11,58,14,32,36,105,194,13,146,236,65,13,60,127,103,244,169,33,157,79,18,173,239,124,133,34,151,44,34,161,56,76,62,72,34,231,245,254,24,221,185,71,140,161,237,25,240,158,136,76,231,172,244,144,80,188,254,10,99,66,13,202,133,196,88,234,131,95,177,53,241,24,61,104,15,34,171,129,167,190,82,154,49,148,38,134,86,112,106,77,0,57,193,105,182,50,47,185,224,24,235,228,50,82,226,78,110,233,93,210,19,89,154,248,15,90,82,32,250,237,93,83,166,173,151,254,33,203,241,125,66,124,32,137,91,98,233,154,199,202,222,14,122,197,154,118,66,206,202,255,113,173,82,76,5,63,203,111,194,204,163,50,106,157,212,244,88,107,11,110,69,220,92,43,119,255,112,234,89,25,247,112,232,1,200,49,11,18,243,20,220,159,112,186,45,41,161,64,163,249,117,249,45,190,129,200,38,99,235,86,201,121,59,122,207,175,24,229,236,71,157,142,72,200,222,87,198,136,46,193,181,24,26,91,121,253,133,78,85,136,140,106,92,195,21,108,97,189,3,221,53,230,70,59,137,36,65,245,205,213,64,31,54,4,34,169,230,150,243,76,42,195,98,48,146,182,85,38,129,138,64,185,57,223,64,43,211,54,33,246,7,214,14,61,162,125,24,56,88,231,17,128,199,122,112,188,125,215,190,97,80,248,201,135,247,195,17,139,50,200,169,137,45,41,86,250,28,119,73,205,246,110,192,125,63,246,110,57,206,88,41,158,30,216,5,54,44,152,87,152,55,141,85,10,104,34,4,201,152,125,184,45,178,76,244,150,9,229,75,105,197,57,52,207,208,230,31,244,112,122,122,189,86,176,224,93,120,143,77,37,56,70,99,233,139,203,72,204,199,238,174,53,103,69,114,181,94,141,241,116,67,70,67,75,143,125,206,220,97,147,236,202,146,163,179,161,46,147,50,168,200,250,230,237,184,136,130,222,196,89,230,248,58,62,127,4,101,187,90,32,143,248,110,122,135,212,8,14,251,65,43,123,104,45,125,205,10,131,41,154,72,193,158,221,132,85,222,234,255,112,23,239,78,203,179,63,187,103,123,99,191,194,163,134,155,161,94,59,62,247,141,147,107,239,122,171,64,20,37,220,214,31,232,138,38,208,152,129,12,83,120,238,117,189,116,163,125,47,162,229,188,100,182,149,142,60,135,170,44,119,236,240,82,242,152,156,111,219,99,216,135,100,126,43,182,19,34,230,82,0,60,236,50,243,106,17,188,142,99,234,32,159,45,13,164,242,14,194,161,232,159,229,88,64,214,180,199,116,134,90,176,147,162,251,189,57,108,76,95,178,99,13,202,23,85,48,23,147,190,18,135,204,249,126,150,163,138,137,59,41,59,104,160,109,163,75,46,175,90,68,49,114,185,137,13,119,24,19,195,232,51,62,82,141,246,18,51,8,229,21,152,111,136,62,86,104,37,93,21,217,134,79,242,181,50,134,108,106,19,177,6,237,29,250,162,60,7,222,141,140,41,125,104,166,147,104,101,203,131,67,84,239,83,241,54,99,195,99,16,220,35,199,141,199,20,149,150,220,41,219,16,152,193,222,131,104,27,177,60,182,51,167,79,216,88,98,92,250,38,81,205,227,3,199,75,9,247,236,248,139,8,70,153,121,203,155,205,83,60,133,241,205,193,189,226,203,199,19,152,130,41,39,219,143,7,138,91,120,145,52,115,24,170,240,243,131,65,142,153,171,198,118,110,176,197,135,34,94,87,102,154,3,104,209,59,13,156,104,78,204,190,213,177,206,59,75,14,167,97,140,223,100,125,238,234,85,245,84,152,75,209,131,22,66,55,60,171,39,18,139,49,195,151,251,246,67,152,226,66,7,141,53,142,87,92,145,83,194,168,40,150,210,120,82,70,148,30,234,255,172,57,160,189,174,203,11,41,60,215,226,37,104,255,13,30,56,109,119,129,44,142,210,44,219,175,2,15,67,215,130,175,176,191,140,78,204,194,33,15,254,130,112,109,64,183,43,132,48,144,59,38,206,7,220,87,255,192,13,147,233,103,52,167,201,77,235,98,89,45,135,34,69,136,48,98,232,179,21,158,71,129,99,15,164,240,137,208,69,61,251,240,3,253,111,21,252,63,5,236,92,167,46,211,208,249,168,7,18,228,53,186,104,156,45,58,95,85,230,52,249,227,54,253,198,82,25,44,81,93,187,134,218,120,14,242,190,130,70,155,44,38,157,35,120,235,46,186,68,83,1,227,45,194,224,94,127,98,152,217,74,67,57,120,44,72,168,143,33,153,20,34,66,97,163,215,70,111,143,129,49,54,54,148,186,203,218,198,248,2,78,249,52,181,30,44,225,202,246,74,126,213,221,21,0,190,21,27,12,221,172,238,234,233,181,162,248,136,139,96,171,139,2,252,197,87,71,133,116,60,0,242,242,229,119,87,51,93,86,162,24,156,68,247,126,54,41,198,191,222,248,242,216,217,116,214,163,186,80,184,104,196,222,90,173,187,103,101,213,27,116,26,177,30,237,9,178,68,221,155,248,224,18,43,144,187,111,217,242,106,150,26,10,224,115,36,101,209,110,61,187,13,169,200,167,228,189,93,212,95,40,88,45,52,134,122,193,246,247,46,145,203,123,57,192,77,118,38,52,116,122,128,40,154,163,165,0,91,219,152,225,84,106,195,171,253,46,64,12,71,141,207,30,67,126,119,172,4,236,227,142,109,24,104,82,9,77,247,26,44,202,7,55,8,213,55,119,103,80,87,70,0,138,223,117,250,22,237,63,226,200,232,88,226,4,136,220,103,233,134,9,246,22,130,238,181,67,245,46,192,12,151,73,159,150,187,40,95,138,15,187,26,42,56,214,156,189,75,129,53,251,64,198,81,245,225,67,195,203,128,137,98,220,185,219,244,132,153,127,87,5,58,176,55,99,71,231,198,224,229,9,156,36,162,202,51,167,222,173,46,231,136,227,160,207,54,105,155,179,51,109,184,8,98,85,183,241,212,185,180,140,231,77,226,94,230,15,92,136,44,119,42,78,199,54,58,158,96,36,184,124,98,191,124,44,217,178,175,241,13,180,61,190,247,4,190,251,145,140,249,95,86,27,197,45,124,174,118,184,157,36,185,197,19,142,26,20,67,155,12,153,107,167,243,86,108,248,164,192,225,152,25,148,44,4,230,122,23,62,54,182,64,81,13,100,228,249,237,116,221,145,103,0,140,226,228,3,151,237,172,96,60,183,36,120,77,10,226,253,179,74,43,103,128,249,137,105,42,206,48,79,191,158,28,42,109,157,11,113,80,228,51,133,75,25,128,27,195,60,116,197,166,255,146,62,57,53,234,70,126,80,217,140,115,137,191,213,52,238,44,134,24,228,194,21,177,121,201,252,85,147,145,108,87,183,98,155,151,80,36,108,54,163,224,23,123,148,255,69,57,141,27,61,196,40,175,220,96,21,86,164,202,159,32,117,194,233,42,28,186,84,54,166,34,160,68,195,63,183,160,87,32,0,232,111,47,131,17,241,12,159,70,149,26,4,89,97,125,157,149,114,219,205,143,122,38,51,18,48,132,179,159,49,137,96,1,139,174,223,63,140,39,252,120,150,141,217,141,202,76,130,251,193,122,194,88,42,117,174,220,208,96,158,218,216,250,62,225,16,126,149,25,15,238,179,211,67,121,160,175,70,19,161,202,78,204,22,228,15,206,63,120,170,125,222,134,136,223,104,70,30,14,110,211,111,98,112,205,22,138,248,186,49,234,64,205,149,194,223,166,123,217,241,199,5,220,186,54,205,27,77,238,121,84,95,3,160,107,180,183,238,201,206,203,55,119,166,85,82,155,196,118,79,97,142,94,228,51,135,160,100,42,238,228,175,85,164,118,249,17,44,136,245,9,220,233,68,152,70,144,112,133,153,219,80,250,202,88,195,38,95,2,17,68,100,29,42,197,242,120,219,196,253,107,96,222,106,14,158,169,143,7,69,24,236,139,125,234,11,4,154,233,236,143,134,184,77,143,113,242,0,238,164,199,169,98,143,68,12,155,118,38,78,206,253,235,36,30,115,147,203,101,96,205,31,244,201,145,80,39,158,193,228,218,28,111,39,244,103,114,208,172,229,7,30,251,122,185,216,94,239,4,157,199,4,127,62,108,178,48,240,16,194,164,48,195,3,204,174,187,224,140,242,240,171,115,244,70,45,205,19,190,208,242,168,4,123,246,52,114,180,116,253,212,172,19,202,7,10,214,133,122,194,30,131,170,239,183,1,115,177,15,134,153,11,164,47,253,49,85,3,87,113,45,252,136,107,58,115,130,37,238,15,57,97,104,93,120,210,164,143,15,185,162,173,17,1,85,160,238,141,175,28,192,163,125,176,194,123,135,1,95,196,131,63,255,92,71,149,70,63,116,210,160,125,200,173,102,9,116,210,54,135,184,141,78,144,223,111,206,46,71,166,15,51,244,43,23,36,55,95,148,160,129,163,76,167,194,97,56,72,223,142,248,3,183,50,100,72,191,143,5,189,201,240,142,230,16,223,215,20,30,181,235,240,56,163,24,1,48,75,171,151,207,109,4,227,220,122,44,220,156,114,254,145,80,104,111,140,255,84,61,159,31,118,22,49,168,250,197,180,97,95,31,164,192,65,110,45,245,228,239,110,235,77,100,69,119,222,29,150,44,155,152,33,216,120,181,106,240,75,83,116,51,83,111,223,91,184,126,89,97,199,121,135,207,234,151,13,108,151,160,5,104,197,34,23,170,106,179,57,86,37,136,213,221,119,110,158,53,196,171,42,73,235,214,122,61,85,6,219,233,189,113,144,108,10,93,137,21,140,50,237,156,53,253,6,131,98,51,97,78,16,60,225,29,120,70,209,162,122,123,238,90,19,1,145,145,109,172,186,2,127,10,51,204,101,136,143,100,79,191,111,161,126,60,203,152,111,14,159,226,66,205,211,241,56,47,79,137,217,103,149,58,50,181,138,143,76,225,66,148,160,27,134,191,224,141,38,219,119,78,156,25,65,17,90,231,221,180,112,75,2,83,120,75,204,155,32,8,48,237,181,86,52,120,16,216,110,32,147,1,242,18,140,170,9,115,225,2,14,55,141,44,213,15,203,194,29,162,44,17,95,156,137,209,188,191,15,0,205,110,37,124,47,79,210,128,36,20,129,108,174,180,243,194,108,77,180,253,118,9,217,139,116,38,102,183,239,207,213,228,38,42,23,217,24,143,250,244,239,194,237,59,118,11,252,184,81,78,132,39,73,213,233,84,234,47,156,203,255,58,225,198,113,250,51,111,226,48,82,130,156,10,218,95,2,33,28,19,209,174,62,60,246,212,168,14,229,147,199,190,200,64,4,81,4,254,74,187,76,85,122,100,187,164,89,235,148,197,238,240,87,7,56,196,38,134,43,57,144,52,36,26,112,125,134,98,23,110,102,223,155,21,69,202,220,57,85,17,118,19,117,195,135,214,181,71,107,110,41,151,20,90,226,1,165,4,158,227,249,233,0,14,143,2,30,38,76,163,234,43,198,224,59,125,190,201,78,225,92,100,218,33,21,27,93,125,123,172,11,113,75,141,242,233,18,61,241,239,56,170,63,13,234,34,1,112,208,118,127,228,101,174,214,49,5,64,176,20,79,105,112,29,48,43,29,211,48,19,11,231,57,66,223,144,87,42,72,176,154,171,103,197,168,192,150,144,229,221,40,194,151,255,48,245,5,19,27,249,210,210,250,175,178,172,59,94,163,177,244,205,5,111,165,37,182,245,47,108,132,68,83,26,25,97,64,195,138,113,216,240,246,239,121,162,139,178,65,150,14,65,135,13,190,78,109,123,59,142,105,70,247,163,126,126,99,94,12,233,191,68,228,46,91,97,198,71,157,131,17,221,114,89,106,191,95,122,201,137,113,114,247,11,101,211,163,234,180,40,34,103,248,168,22,182,193,114,78,72,30,35,209,170,138,112,245,95,243,179,176,74,105,94,229,159,183,177,174,54,111,80,27,20,134,179,46,204,24,56,104,150,153,129,228,128,218,112,194,141,192,39,99,165,139,224,251,119,22,197,240,135,143,245,170,183,194,81,12,156,209,75,175,62,22,236,151,217,219,6,249,103,203,196,137,138,83,89,219,156,176,105,80,134,51,190,73,32,2,29,71,148,61,116,190,255,235,207,126,251,30,91,9,78,185,49,86,225,73,130,234,107,86,255,5,174,226,182,93,187,97,105,178,115,155,90,246,30,234,38,25,241,58,235,215,77,124,162,178,108,152,46,233,230,181,229,18,102,9,159,173,12,155,187,37,30,133,114,208,93,159,168,222,139,53,139,207,7,192,168,167,15,251,46,85,16,193,65,96,27,224,249,136,18,114,247,172,143,169,198,254,85,171,119,133,14,123,14,183,203,236,16,52,183,105,149,156,96,119,157,102,95,179,49,242,120,183,198,202,239,68,56,97,6,216,64,93,49,149,164,224,25,121,216,174,221,187,66,99,116,224,185,231,134,50,74,142,183,177,39,52,144,101,212,21,59,155,140,181,244,16,25,15,175,142,187,7,152,193,220,138,22,55,241,228,164,54,206,226,178,185,29,8,196,237,213,131,92,67,74,48,69,198,85,77,42,246,37,207,247,41,203,90,99,74,104,214,202,125,36,213,94,126,195,5,14,248,229,82,33,78,137,197,99,125,138,142,246,63,44,136,25,205,106,241,41,230,25,214,113,108,10,242,47,120,23,183,194,245,96,204,59,160,104,147,136,3,156,146,69,162,90,173,11,5,217,170,211,73,95,65,167,171,39,93,24,163,57,208,197,12,212,90,115,120,38,220,6,97,18,168,117,97,63,239,17,246,128,39,184,49,144,59,42,236,168,192,223,147,108,165,98,36,81,236,76,93,135,30,5,70,48,104,37,195,1,34,162,152,246,18,44,26,141,67,130,202,113,218,220,121,14,206,145,27,90,214,160,169,175,142,22,142,144,7,30,12,43,21,208,248,231,193,178,103,196,179,23,107,120,135,114,131,94,169,251,146,251,73,94,222,74,242,108,178,170,196,153,38,147,7,158,189,136,159,173,96,51,217,56,55,250,49,147,215,204,187,202,71,64,146,148,139,109,182,49,221,122,228,242,102,198,201,232,246,219,214,167,209,67,212,6,109,217,218,63,58,56,236,219,188,202,55,150,151,117,173,5,139,236,92,37,255,157,235,167,235,185,255,47,3,14,88,72,212,22,217,23,46,101,10,41,100,185,30,42,152,197,50,120,53,72,89,143,116,124,202,191,237,114,162,112,9,22,18,15,188,24,171,204,31,102,159,227,234,134,30,180,201,80,40,37,198,213,76,100,98,84,108,224,118,153,139,187,60,157,220,176,124,146,104,50,249,196,110,158,32,73,236,197,158,102,164,191,216,208,158,12,255,4,126,231,220,252,171,212,149,23,18,91,198,112,2,41,48,17,151,90,147,210,97,102,147,157,102,204,244,214,247,228,114,72,252,190,57,213,38,41,159,3,97,78,205,253,211,10,179,214,251,133,29,248,120,20,166,116,142,236,92,214,91,17,32,121,141,67,226,210,132,73,14,135,184,251,160,135,15,77,216,225,219,114,239,136,122,249,40,245,212,68,72,149,226,251,253,115,54,170,9,0,251,165,135,234,48,96,114,21,106,244,177,255,198,108,130,245,189,136,175,119,230,81,141,187,241,27,83,101,98,230,247,97,111,143,228,99,220,251,124,131,224,203,56,212,107,178,211,107,160,160,238,30,48,214,187,255,168,133,204,111,127,248,224,127,230,130,36,143,86,191,76,130,55,37,227,91,128,72,70,25,140,107,203,187,248,210,57,31,124,29,189,25,124,129,126,166,159,226,12,170,227,161,185,192,24,41,102,12,60,131,90,215,155,147,157,182,42,156,253,152,211,129,222,82,136,253,194,89,233,48,154,219,117,81,43,178,254,80,25,184,33,65,70,97,252,254,224,92,129,77,187,28,10,9,148,109,223,129,96,63,168,151,21,97,173,162,84,75,7,189,104,84,121,19,204,220,34,148,113,180,114,160,161,222,94,225,219,2,16,70,24,85,217,155,207,9,120,113,106,242,247,152,143,79,190,126,4,96,193,227,102,205,89,168,28,242,26,77,237,64,152,44,59,241,109,165,146,20,224,192,217,46,138,22,58,121,98,183,212,78,30,5,186,95,187,188,73,97,44,34,169,102,140,33,20,216,86,220,174,132,68,46,33,2,146,255,183,185,179,74,15,161,115,60,100,178,129,183,233,54,79,65,186,4,223,35,32,163,234,236,162,209,113,144,56,141,140,193,32,51,100,146,150,191,85,96,3,142,106,170,212,87,138,77,10,81,232,223,11,154,211,19,143,64,199,94,120,176,88,106,197,35,31,26,133,52,15,145,199,37,167,59,3,227,190,180,18,164,148,46,166,54,58,159,58,131,57,27,71,51,150,84,194,196,75,82,219,129,146,237,12,76,97,55,171,59,146,232,24,13,45,27,67,167,175,24,93,243,216,173,255,46,198,91,108,10,70,105,213,227,67,109,150,111,236,255,88,163,224,100,184,26,144,44,116,186,214,219,150,21,150,158,75,166,141,44,107,8,27,87,177,85,55,107,113,234,240,209,134,65,162,221,128,125,148,250,164,15,50,231,239,177,147,160,79,244,225,154,255,62,109,57,188,216,115,186,146,104,122,180,118,211,217,212,209,172,250,249,177,2,139,21,102,7,98,200,57,250,127,39,179,108,145,13,102,86,136,227,120,247,84,188,46,211,30,166,94,127,96,28,84,56,116,247,20,225,5,145,16,163,27,103,222,138,195,65,151,74,186,115,152,228,60,35,55,86,18,227,142,139,58,72,59,87,96,50,125,59,91,117,194,162,86,175,14,231,16,65,22,43,72,182,251,153,109,183,163,28,217,6,163,126,95,157,52,103,13,8,74,153,90,192,145,213,171,161,187,128,36,49,63,191,71,201,185,223,14,222,162,0,174,194,171,19,191,42,150,135,85,38,29,16,54,86,3,147,235,207,65,208,80,196,172,246,57,21,172,53,211,71,10,112,86,142,225,162,220,251,16,2,45,96,11,7,191,49,216,126,11,154,27,90,178,240,50,22,109,179,104,253,43,216,100,179,85,25,233,221,14,181,150,63,187,61,80,42,231,183,211,17,68,141,5,130,37,102,7,128,34,96,18,135,175,74,11,76,66,29,58,20,187,234,65,133,184,84,51,98,136,122,35,189,200,125,142,219,16,226,3,25,211,239,144,22,200,135,72,7,84,6,2,88,171,178,129,176,113,93,38,120,18,221,113,112,43,54,44,163,59,240,37,177,16,136,252,230,112,17,216,206,19,103,207,217,224,194,37,57,148,154,62,216,195,14,131,254,13,22,26,226,54,235,170,54,241,57,95,72,74,64,143,192,239,246,102,104,196,211,197,36,227,163,23,175,91,138,39,249,116,193,141,187,58,18,131,31,18,238,66,131,132,181,43,44,56,44,164,249,86,125,220,62,242,147,199,72,13,137,244,188,197,151,184,42,157,168,172,42,192,104,76,166,186,200,70,188,89,106,206,225,98,29,22,253,139,28,38,89,127,237,203,85,248,245,158,148,251,254,136,174,95,148,111,62,166,173,72,175,117,74,199,11,204,43,52,96,46,11,170,254,164,239,238,77,219,55,32,196,109,92,149,188,131,247,233,203,188,179,194,67,4,113,184,114,63,65,199,35,202,150,226,170,78,234,198,130,188,65,26,134,221,43,9,184,30,90,67,240,122,184,168,79,184,226,116,238,168,13,123,18,207,56,41,151,164,59,241,49,209,238,239,131,62,17,175,103,41,181,135,98,63,115,124,136,245,50,176,162,6,25,80,254,202,249,105,32,147,62,15,28,85,123,111,33,253,227,120,112,253,221,187,181,21,5,114,79,100,42,237,217,167,81,95,214,61,120,14,63,252,240,213,244,203,170,10,91,14,11,187,148,167,245,75,175,76,248,22,149,170,164,245,253,16,166,4,254,195,132,97,101,169,100,26,189,24,201,4,222,180,79,46,172,181,2,98,12,52,54,98,155,36,199,129,98,101,9,156,207,97,232,146,77,187,90,180,122,217,211,7,127,231,114,135,76,165,204,29,244,80,181,245,141,80,96,6,137,202,72,236,123,51,151,245,251,27,215,158,29,147,85,104,83,234,197,119,157,144,56,227,161,234,76,212,160,247,48,215,5,236,106,76,132,31,162,229,76,80,53,53,159,117,5,181,49,212,80,53,213,182,163,48,130,127,50,195,86,29,161,2,67,134,190,50,225,83,197,42,171,67,43,75,180,200,140,200,211,127,242,191,126,9,240,20,217,26,221,32,85,7,241,250,174,154,92,55,26,132,44,52,110,134,168,119,199,203,148,53,60,18,173,125,167,206,74,233,168,80,144,28,10,54,114,98,225,175,162,210,119,53,81,230,82,188,142,92,17,117,156,211,160,45,186,114,189,105,245,168,149,172,168,166,81,41,188,176,44,6,95,170,36,106,14,160,185,95,93,214,155,144,200,119,181,216,252,57,167,40,140,65,227,199,73,214,213,59,68,49,201,6,84,97,191,117,98,29,68,186,98,75,250,136,113,120,9,57,6,103,65,140,184,124,239,234,0,231,172,74,29,235,173,198,178,212,212,191,184,18,155,41,88,154,163,113,105,20,110,32,204,206,29,106,130,227,89,176,218,32,143,45,230,243,46,24,196,41,10,19,31,126,79,176,73,58,214,41,118,216,246,54,124,211,202,49,185,175,108,46,218,150,164,120,243,95,70,223,184,94,56,164,123,70,72,202,136,64,152,204,85,92,31,185,12,2,44,56,127,54,238,161,42,24,199,138,229,25,245,96,202,29,148,46,225,127,16,110,197,137,57,5,127,176,98,171,231,2,245,171,205,233,8,100,136,90,41,12,63,14,19,62,72,91,213,49,255,136,88,233,53,183,23,181,125,26,70,49,99,41,120,37,17,53,123,174,43,25,11,25,0,247,233,19,111,150,55,170,134,183,121,54,89,22,221,52,216,252,122,209,207,92,151,204,113,105,213,249,105,23,253,92,238,252,243,94,63,42,140,19,125,130,249,62,107,12,233,156,240,158,138,82,74,26,54,103,120,147,46,67,42,165,158,71,162,211,46,213,112,215,91,234,58,182,35,58,251,13,250,65,105,194,20,185,23,240,184,215,25,126,131,61,122,218,187,232,73,12,225,125,226,175,255,20,129,213,231,221,224,113,218,234,35,13,6,130,81,38,164,23,146,92,152,26,218,244,107,235,176,173,123,96,217,190,225,5,1,253,254,23,224,233,107,18,121,84,33,197,252,85,85,28,208,255,202,55,130,174,104,119,206,183,4,229,124,159,29,116,206,180,46,27,4,176,239,178,97,70,195,224,89,47,182,205,227,18,97,62,202,49,209,188,52,7,180,105,193,4,52,183,173,207,61,198,150,98,39,183,199,19,121,174,252,187,126,195,5,46,82,127,2,34,52,218,163,243,220,225,1,172,1,69,108,69,23,218,87,210,213,12,2,88,38,201,171,194,209,44,191,27,229,8,103,108,8,202,11,53,174,52,202,39,184,136,66,128,30,18,97,150,82,156,17,218,222,18,137,118,210,244,85,177,217,149,148,177,15,148,212,205,71,86,187,22,215,39,45,158,238,19,63,164,205,180,34,178,107,236,182,80,154,238,37,176,158,89,224,217,160,216,228,181,254,48,36,226,222,120,11,212,97,175,179,237,255,45,20,176,152,195,10,140,137,48,218,183,94,249,250,44,8,244,33,200,228,48,252,13,231,18,251,235,232,142,177,210,146,3,47,96,106,93,68,187,67,239,114,8,186,183,67,22,94,29,32,144,120,2,190,170,36,92,204,63,92,3,211,80,7,168,107,174,84,39,184,248,62,143,106,165,16,217,159,3,191,245,239,252,37,158,58,227,159,43,147,116,37,181,234,249,165,110,146,83,14,175,179,50,117,174,241,56,46,125,7,127,207,142,19,90,77,200,240,95,250,88,235,62,233,12,158,101,168,216,46,13,27,54,163,229,134,33,66,143,73,234,47,203,168,143,16,59,125,181,178,36,52,249,136,26,238,41,195,85,79,98,206,73,214,62,55,248,234,130,94,211,190,208,30,117,241,194,158,138,253,83,99,159,195,50,222,110,122,122,223,200,58,33,2,152,5,187,87,178,176,209,43,227,176,43,149,186,210,146,95,5,72,78,206,226,215,101,56,149,172,29,95,69,38,197,151,116,168,153,100,185,79,148,252,234,243,124,132,217,191,10,18,254,134,252,16,173,139,138,72,177,104,210,110,26,107,167,232,209,32,232,138,158,7,139,30,81,31,144,58,21,77,27,105,116,210,208,236,214,25,107,92,75,254,155,76,142,30,24,89,237,153,59,58,184,96,71,166,125,4,186,255,103,83,34,146,103,30,93,30,111,180,175,181,65,13,81,20,101,182,7,110,133,204,197,53,234,144,6,222,223,168,100,186,27,4,197,164,12,141,175,61,167,6,170,70,17,159,44,131,136,151,164,91,213,40,52,58,2,0,166,176,25,82,78,249,115,173,72,243,210,255,201,139,143,167,127,77,218,128,46,21,150,198,125,76,90,105,70,69,21,3,226,112,79,88,231,90,90,153,132,157,208,91,29,20,149,62,160,162,97,250,62,136,35,71,174,136,96,77,230,98,230,198,202,22,72,215,31,157,106,20,151,83,236,230,11,134,120,98,199,62,46,154,49,33,204,38,87,250,147,53,215,36,18,88,84,127,202,158,54,80,25,114,85,250,247,8,72,167,181,118,125,83,13,54,184,115,143,18,244,212,111,88,149,92,214,103,161,212,47,212,137,108,47,135,39,121,197,252,112,88,56,245,28,159,111,93,213,71,52,155,74,59,151,218,210,52,25,124,225,163,44,150,144,97,251,162,123,107,255,85,229,60,160,132,210,26,95,214,36,192,143,203,240,105,50,15,24,103,76,252,4,231,12,215,29,54,194,92,98,117,191,249,75,222,126,96,109,54,24,171,48,32,204,59,52,83,28,173,195,29,35,95,37,90,185,11,4,105,17,208,44,149,127,113,244,250,141,95,195,66,10,155,60,130,130,81,151,183,241,204,211,70,84,45,157,18,199,140,167,214,233,43,86,170,6,181,218,163,183,133,111,23,99,34,217,191,69,12,58,72,105,121,227,131,46,239,108,181,98,13,115,174,92,213,238,119,7,170,173,36,3,176,190,18,118,240,72,40,154,219,190,145,120,78,3,43,183,30,178,77,187,104,199,97,249,234,31,25,82,183,207,245,16,19,65,152,86,13,18,254,111,103,35,182,61,157,218,227,107,118,224,177,100,175,130,184,143,11,195,148,205,177,14,227,76,69,160,132,138,168,235,216,196,227,36,61,91,218,134,231,89,249,173,238,26,129,226,131,62,4,62,237,173,119,243,232,242,12,225,99,159,9,211,248,168,129,40,236,67,122,255,162,29,14,165,118,193,11,85,137,216,149,74,224,84,26,122,74,191,57,7,211,59,208,157,165,157,183,206,13,57,82,36,46,70,178,7,122,99,14,203,78,196,3,182,120,218,86,249,63,206,68,61,34,86,136,215,170,201,44,211,107,202,61,27,10,142,3,73,78,81,240,34,216,252,152,248,212,86,57,86,173,124,166,252,43,111,222,172,208,25,193,112,236,174,123,179,83,94,232,163,202,110,167,214,154,23,48,150,160,67,165,249,193,93,125,165,192,253,1,1,31,165,38,137,232,88,64,95,105,251,209,134,143,128,144,176,16,88,38,119,222,20,57,134,61,247,32,47,242,190,51,254,197,69,194,56,244,108,170,41,181,20,187,43,238,243,234,255,113,37,79,116,50,143,240,187,40,114,228,2,74,72,70,45,46,214,93,229,8,195,116,224,108,179,144,177,108,129,75,121,209,191,46,137,10,6,200,38,121,216,70,66,130,37,25,20,34,2,172,137,128,137,109,47,134,211,12,8,172,20,85,89,95,153,180,249,118,88,34,121,14,126,180,224,129,69,14,96,34,4,16,159,160,90,33,89,142,210,136,228,167,91,195,61,4,35,234,189,198,8,127,109,39,237,111,13,142,137,99,70,206,95,247,177,154,138,18,63,89,162,88,143,164,142,189,24,231,143,219,205,105,213,98,132,121,126,72,221,174,224,255,30,227,206,213,178,204,71,247,206,200,104,212,136,55,37,90,95,177,51,189,128,215,83,147,101,217,174,80,132,39,47,26,46,156,182,151,210,26,25,162,223,102,32,239,32,188,137,234,107,214,212,163,201,131,44,252,206,255,95,125,59,180,125,135,77,48,37,11,205,143,66,80,144,130,60,85,197,150,177,240,132,35,24,76,255,125,210,94,134,194,75,61,96,189,244,88,116,245,184,232,245,220,13,4,128,95,251,145,211,81,206,87,146,160,206,155,121,129,234,251,202,24,15,27,235,87,23,103,230,224,250,151,3,175,9,34,100,184,99,139,81,152,253,150,88,218,114,163,105,164,42,142,221,117,42,186,34,90,93,24,21,25,148,77,22,69,207,104,47,16,75,229,244,200,156,90,148,25,15,88,206,99,113,178,0,239,91,43,133,97,119,235,149,192,226,201,208,136,128,39,226,224,149,13,236,242,74,195,89,74,185,63,200,38,249,117,147,177,199,57,58,141,144,169,128,220,81,37,215,47,215,141,1,46,4,238,176,128,219,112,200,56,200,39,60,231,7,109,153,122,163,141,66,227,47,140,236,141,233,234,118,55,173,215,17,144,13,71,224,80,15,234,181,18,101,191,161,182,71,101,186,223,2,217,5,144,178,18,238,40,154,33,169,25,109,153,249,90,11,6,114,234,4,168,106,245,37,253,202,109,124,207,214,95,169,200,100,109,51,156,12,180,71,26,248,171,137,154,253,175,93,161,230,171,190,205,249,54,233,131,156,162,205,235,151,144,108,253,147,4,219,145,127,84,82,242,150,49,191,97,191,119,201,50,83,124,166,174,0,213,243,36,59,176,147,232,121,176,145,82,97,154,34,156,139,40,86,116,151,145,97,210,184,210,250,177,5,42,206,140,75,58,200,45,61,135,221,203,111,41,195,98,215,115,116,221,183,13,149,149,11,125,9,89,163,147,181,22,143,26,218,193,187,217,86,108,147,221,3,108,172,241,38,190,239,224,93,178,207,50,94,134,15,49,211,231,35,29,38,204,163,241,23,33,66,209,117,196,24,114,203,244,223,231,63,192,40,1,5,36,180,115,18,71,33,218,131,149,84,11,29,127,124,240,38,104,37,38,61,14,40,193,221,237,234,169,219,27,198,56,186,18,9,232,36,102,39,171,222,58,199,0,90,97,39,98,100,117,12,135,202,216,118,82,205,3,191,49,180,112,180,114,241,58,14,238,143,66,246,129,16,125,227,188,151,87,134,138,107,237,134,124,89,214,241,162,41,198,243,48,238,91,175,93,234,16,117,152,71,97,165,244,231,50,162,228,171,184,255,91,167,29,102,51,129,127,72,92,160,119,6,52,41,63,97,244,27,216,34,183,157,250,36,10,225,69,252,213,245,141,53,29,110,134,51,51,214,41,140,178,247,209,210,107,7,85,37,9,111,227,136,83,67,86,30,118,107,181,246,221,224,33,60,104,143,111,154,81,90,56,113,222,57,118,194,207,191,163,34,92,229,171,222,131,150,73,133,76,154,211,236,110,239,226,242,216,231,22,146,56,84,70,245,14,123,229,145,155,87,133,174,49,148,3,13,125,121,230,206,62,212,242,74,47,236,165,27,99,249,221,193,176,75,130,104,62,236,216,57,76,76,174,16,127,11,122,255,224,133,211,10,240,6,249,246,150,205,135,27,56,151,152,194,252,119,7,107,135,34,250,238,216,148,67,35,97,73,166,174,164,206,72,40,219,201,196,222,53,151,40,34,229,222,190,196,200,116,190,142,196,2,162,152,145,252,124,9,148,201,231,106,122,18,223,246,101,209,234,188,4,83,172,153,250,70,217,196,121,67,169,102,1,39,157,12,131,148,147,225,36,10,249,106,45,251,104,200,195,52,130,151,229,202,13,91,37,165,80,148,35,188,34,227,59,199,158,106,68,214,231,9,211,138,30,112,38,240,190,79,184,2,204,196,152,12,184,227,39,18,0,56,194,184,37,65,1,44,92,49,161,155,250,107,170,141,110,209,123,133,188,114,120,12,127,138,246,111,215,65,44,248,59,198,139,95,167,215,14,50,148,179,66,163,36,120,106,130,212,246,245,124,82,179,69,223,17,209,144,51,233,62,118,244,119,181,230,14,206,208,246,12,132,6,167,102,30,239,67,6,93,179,199,156,70,17,179,120,44,9,187,112,254,78,136,28,224,35,5,95,143,152,88,31,37,109,21,152,134,179,201,68,17,206,13,75,181,197,192,205,157,11,124,52,80,131,238,184,234,149,1,204,163,4,204,93,1,9,135,96,52,116,221,64,65,212,136,63,69,75,65,208,35,94,33,94,139,206,9,55,196,87,26,60,102,109,133,229,171,150,89,246,11,111,188,147,58,43,150,213,217,109,93,132,201,192,56,227,26,103,142,96,245,101,60,93,220,199,133,176,254,92,34,252,168,22,75,238,35,147,4,94,171,154,70,24,62,10,209,241,251,157,20,241,150,174,30,215,33,76,5,237,224,190,102,162,58,85,130,231,119,192,3,107,240,106,110,107,108,186,192,31,17,193,181,126,86,129,13,42,110,160,84,14,67,90,97,156,213,144,121,27,211,188,14,40,228,139,172,65,234,137,29,208,1,216,169,95,13,120,3,247,1,39,72,109,110,239,67,202,80,51,128,214,92,121,221,171,116,46,146,177,52,87,128,169,232,165,163,170,209,187,214,32,146,113,55,84,30,122,77,250,55,52,200,78,237,248,140,201,209,102,81,186,66,141,8,119,226,208,142,122,223,208,12,11,1,230,196,105,120,162,241,90,72,98,11,251,51,254,51,13,59,99,139,165,92,238,12,38,111,168,5,57,26,7,232,104,64,57,228,145,139,111,60,220,194,40,4,36,187,156,232,214,38,206,208,235,136,56,109,55,123,102,193,146,20,139,121,45,10,138,74,76,1,210,234,158,237,137,163,236,56,30,241,110,228,232,6,17,146,144,8,4,97,211,20,105,245,155,133,249,108,170,140,54,172,150,97,107,248,49,195,33,214,2,179,69,77,55,195,29,214,167,41,28,126,231,169,237,12,189,25,210,143,133,124,221,183,243,147,101,194,39,98,53,190,11,217,57,231,67,190,101,79,191,104,1,48,60,181,9,49,12,88,81,247,4,26,168,48,202,78,238,177,8,156,116,3,11,33,160,197,81,203,26,172,229,163,238,64,120,84,211,241,113,100,233,11,5,229,169,127,130,133,151,135,226,16,189,98,46,11,16,156,243,168,169,195,77,187,221,207,187,227,107,251,165,106,169,11,247,44,62,139,242,204,87,20,34,7,101,27,186,167,69,228,60,175,70,185,45,92,241,205,44,106,81,97,58,213,21,183,166,31,210,246,3,223,182,66,163,83,9,227,148,125,125,188,34,43,248,108,77,138,71,165,217,98,97,193,29,36,37,75,40,187,144,213,105,251,78,162,230,209,247,225,34,187,226,53,2,247,163,105,232,150,137,222,158,6,194,180,151,63,57,180,165,78,48,244,198,253,242,43,125,20,48,216,139,146,214,251,242,240,159,143,62,240,9,41,24,2,133,196,170,71,178,184,132,108,34,164,118,136,189,242,53,220,135,252,32,74,128,188,47,184,175,118,203,22,188,193,238,160,248,118,102,219,120,157,28,89,57,69,174,216,69,177,34,156,52,226,226,46,78,35,30,62,183,114,75,174,109,28,207,219,214,243,1,85,84,154,207,150,155,28,68,112,233,28,167,42,55,72,223,77,126,97,105,133,135,148,131,222,209,99,212,183,181,232,158,57,29,44,119,234,134,29,207,90,234,195,245,140,248,12,75,39,128,37,197,75,171,46,162,240,43,51,15,158,242,109,96,222,10,53,201,17,96,31,87,87,180,242,145,38,101,108,212,92,14,134,185,62,249,83,189,163,127,72,148,221,162,167,193,154,95,19,7,67,13,131,79,241,222,165,204,169,57,128,20,170,145,187,212,57,123,166,152,245,22,31,164,199,37,213,138,137,110,196,120,170,13,108,101,53,41,78,131,120,40,60,53,238,70,96,139,37,237,201,14,171,238,39,142,32,44,240,14,10,5,38,131,1,75,212,235,251,237,72,75,135,11,10,23,96,133,77,59,178,182,165,184,77,188,50,78,52,221,140,77,170,9,146,112,181,4,213,85,14,208,18,150,32,233,126,67,97,253,158,173,181,231,98,205,5,107,50,127,14,197,27,219,41,156,156,106,34,34,67,208,127,139,172,35,74,193,56,224,199,148,69,81,35,151,196,254,184,79,130,80,82,248,12,38,126,216,189,42,155,39,177,136,155,91,0,252,141,112,190,243,71,100,45,6,51,104,2,220,31,163,223,23,98,253,177,164,170,179,241,238,18,177,183,210,172,43,136,174,159,31,185,95,209,104,72,216,75,254,14,112,110,90,140,55,84,32,249,99,189,221,80,82,226,253,226,7,152,158,26,154,23,146,229,122,170,31,74,98,60,255,189,13,99,165,145,142,112,27,1,31,197,103,224,233,116,54,91,136,14,109,142,211,173,41,185,196,146,126,208,210,79,40,228,223,146,18,135,188,129,162,231,251,250,125,177,245,65,61,138,99,229,160,33,147,252,193,52,49,57,141,191,127,88,186,218,23,115,80,23,20,104,97,252,141,117,200,34,135,192,6,39,24,73,84,107,44,23,24,125,14,35,199,234,146,194,208,139,241,177,98,228,36,101,92,21,207,95,189,29,89,229,185,8,173,60,68,240,169,34,243,110,185,69,16,102,67,168,209,9,49,166,132,122,90,4,215,171,130,154,79,197,130,118,178,73,189,137,166,1,97,147,84,172,101,168,72,150,16,59,226,206,153,162,154,100,216,58,225,123,169,181,140,104,33,113,207,183,144,127,113,232,16,19,75,107,0,128,99,128,231,130,166,33,39,209,108,119,162,37,209,9,248,251,6,110,141,162,117,181,253,123,144,201,167,167,38,102,236,81,167,146,3,4,18,45,185,183,203,181,161,55,52,134,72,116,57,140,111,152,85,44,201,0,187,158,82,55,225,111,174,15,215,176,35,93,149,82,63,81,79,211,16,251,187,137,145,183,242,44,0,81,223,15,158,128,7,221,7,166,147,95,94,139,196,121,109,58,209,126,177,76,46,11,121,171,97,44,220,178,100,238,14,125,149,159,229,0,59,141,10,129,166,196,186,213,234,132,157,87,189,204,237,188,57,237,37,25,15,252,159,210,52,90,194,79,86,83,220,104,96,15,54,166,226,5,239,33,242,71,45,240,225,51,116,195,126,246,167,43,105,137,125,89,253,245,56,234,180,189,114,217,13,69,116,194,141,109,74,60,168,219,132,252,227,40,23,134,102,17,9,159,150,68,209,168,230,129,82,110,75,48,101,65,113,134,36,40,148,173,98,91,155,213,11,212,215,239,135,71,193,241,108,175,166,78,138,134,73,142,233,193,99,10,27,71,45,241,105,114,4,125,240,101,16,10,126,96,72,246,108,67,198,94,55,59,104,165,145,24,70,7,121,135,168,109,202,209,180,237,199,220,96,2,88,220,4,169,98,51,243,23,243,22,140,227,159,163,115,226,29,101,199,32,127,111,133,231,34,197,250,214,22,105,90,250,168,63,11,253,240,188,226,2,250,99,6,210,41,137,37,120,157,65,32,197,108,164,235,245,11,48,135,61,163,154,63,29,16,26,52,158,236,212,89,248,42,114,170,204,40,153,125,126,83,154,24,158,149,1,173,13,129,82,98,183,192,184,242,105,74,184,46,90,80,35,57,198,213,179,43,55,120,193,230,219,215,252,66,253,100,126,122,56,144,183,224,152,163,244,4,110,184,198,233,158,164,99,99,151,229,224,166,182,19,195,213,116,91,47,118,75,182,212,175,103,225,203,74,119,75,7,178,53,194,130,181,159,42,16,24,130,151,22,57,156,61,206,45,228,113,69,174,159,38,47,60,204,66,122,98,27,78,153,54,105,199,216,68,102,170,70,164,183,141,214,184,147,87,66,177,222,215,33,16,80,203,173,55,163,207,63,225,159,53,85,142,153,141,116,171,23,219,139,12,96,204,89,201,206,230,248,126,109,94,148,240,189,47,127,62,144,86,152,127,39,153,120,4,129,217,59,104,180,211,4,183,117,209,82,224,187,27,16,117,209,154,204,131,17,162,74,206,44,220,140,24,183,155,133,69,18,201,240,49,168,97,138,250,98,71,252,23,234,10,55,22,2,246,51,53,250,205,6,114,221,207,202,104,36,53,60,69,129,109,188,141,242,212,113,38,185,92,104,189,11,39,81,2,222,76,221,186,53,206,177,67,220,241,77,236,50,165,44,138,135,134,50,27,246,216,99,8,142,88,139,44,131,116,38,36,116,13,18,198,110,85,215,207,214,77,33,201,246,1,22,199,189,129,180,173,243,181,31,77,141,127,178,175,21,112,217,228,247,188,253,201,237,246,123,138,167,183,213,31,128,136,186,252,63,158,96,68,21,171,124,200,38,216,117,69,175,141,218,73,69,64,158,90,63,151,137,158,243,250,136,125,156,203,236,84,145,44,132,228,254,178,28,208,140,43,150,192,59,1,82,202,115,116,89,159,51,26,155,203,26,37,65,60,5,126,87,172,96,62,14,114,240,41,10,99,216,204,17,71,176,113,190,217,73,193,207,214,188,37,42,157,142,234,161,119,110,126,202,199,58,124,71,225,229,96,228,195,215,13,14,181,144,131,118,14,123,42,185,193,161,33,250,234,236,189,245,175,203,134,181,198,45,89,197,109,108,6,57,167,106,159,250,33,59,65,228,88,28,209,217,129,10,168,141,106,38,5,98,96,106,133,5,143,239,151,26,217,107,219,32,209,30,206,92,25,157,205,231,242,32,123,80,218,90,132,122,158,104,128,156,152,25,248,213,211,62,80,183,166,197,182,97,165,72,60,108,93,113,93,81,129,84,216,188,74,53,219,177,78,182,244,188,112,239,4,210,103,175,126,208,65,80,227,85,226,53,183,109,89,127,3,65,105,45,6,173,105,64,47,165,249,13,193,62,92,120,153,177,3,251,152,94,246,250,40,197,53,175,160,207,134,54,200,52,135,73,146,156,243,217,134,178,84,221,145,245,202,106,30,193,189,194,135,158,165,176,183,36,28,122,55,5,174,176,242,152,33,244,119,176,86,132,60,49,152,144,92,252,22,43,180,166,187,78,140,193,54,230,36,26,207,77,207,214,180,57,158,42,200,215,11,128,74,51,140,36,114,148,21,182,64,98,66,50,123,238,158,57,124,1,100,17,140,177,62,195,159,92,251,170,81,81,198,177,226,197,127,153,90,145,218,154,159,61,58,127,169,36,242,19,89,10,14,110,102,11,195,129,93,182,23,96,230,66,18,38,126,65,33,66,90,110,105,253,59,195,120,225,62,251,110,196,70,135,175,132,212,113,103,164,203,6,155,27,196,196,136,157,218,31,110,49,67,166,35,158,192,65,244,196,11,121,43,54,56,212,171,104,153,202,45,27,242,103,253,67,140,243,193,130,114,169,196,30,43,247,239,162,173,169,73,245,155,237,175,40,113,70,164,155,127,169,181,180,123,66,129,91,34,208,162,236,19,114,108,124,238,189,127,170,189,151,113,178,101,143,113,66,243,59,26,132,24,181,181,165,160,76,16,177,195,70,21,237,250,233,66,45,211,95,19,94,105,87,61,178,212,167,183,128,212,180,54,133,58,144,76,127,214,93,27,194,83,4,184,88,54,169,79,188,45,181,104,91,41,67,29,4,103,72,205,111,213,125,231,2,142,107,183,165,115,128,50,45,163,230,210,107,108,10,125,22,228,64,183,47,104,8,3,208,141,28,137,130,252,20,190,83,242,238,109,103,78,199,32,75,63,102,13,72,81,169,44,179,41,183,30,200,100,207,47,37,61,167,58,196,239,73,178,41,33,194,135,210,151,76,141,166,129,208,207,146,117,115,34,109,156,76,185,37,252,82,25,64,74,243,174,152,45,207,212,119,92,49,14,163,174,178,164,35,184,204,154,167,139,175,161,69,65,103,115,211,133,199,231,57,211,175,216,198,32,15,124,34,137,141,110,27,130,162,114,144,175,104,151,69,17,18,154,206,186,223,7,67,128,184,113,66,185,64,255,132,97,123,107,158,100,52,178,142,182,139,8,238,240,127,177,16,176,212,177,60,208,1,149,72,130,90,68,228,145,91,238,160,83,243,45,195,131,41,25,32,64,32,21,214,188,233,42,148,187,117,165,29,84,164,128,151,187,227,134,85,245,198,74,64,66,57,181,104,118,85,195,152,80,210,84,18,30,237,187,63,87,68,156,0,20,233,151,91,6,215,171,185,255,151,222,159,182,55,214,136,136,167,253,33,198,244,95,34,39,55,53,83,89,173,68,127,1,253,100,108,187,158,130,226,233,176,116,127,106,120,192,1,29,193,8,45,94,109,237,200,177,168,127,42,74,144,249,212,47,143,71,220,67,26,192,160,246,40,11,159,248,61,62,68,176,44,151,198,63,208,203,136,197,219,205,66,172,184,185,163,103,204,213,137,164,188,201,50,74,185,177,61,142,106,226,72,19,115,10,162,250,149,199,50,32,119,25,187,26,156,253,120,187,39,115,60,216,86,87,134,115,163,116,44,107,252,112,232,184,162,124,49,128,48,201,37,202,124,222,172,30,24,125,218,67,215,113,127,178,216,233,88,44,46,108,93,159,173,183,96,243,160,114,204,86,59,156,131,156,105,100,114,117,192,109,133,4,248,124,95,73,5,64,127,128,57,74,66,30,31,82,69,98,37,25,126,171,13,251,177,250,67,111,200,123,210,4,190,201,23,227,141,167,111,139,145,193,103,95,122,103,162,132,165,59,201,87,133,124,207,147,42,87,131,191,247,94,220,214,201,190,89,221,119,123,52,164,190,73,231,181,133,219,51,232,238,23,166,59,70,222,96,252,249,126,182,63,106,23,101,83,149,210,54,113,156,58,0,119,236,152,66,232,78,205,190,76,109,67,34,44,202,92,226,128,1,216,136,65,66,201,161,232,63,93,70,205,118,252,78,173,64,24,121,134,226,61,100,117,147,195,9,191,131,124,248,8,115,203,162,40,203,87,160,153,37,100,95,186,43,252,48,212,225,233,216,99,181,235,45,106,68,19,214,107,70,94,156,135,146,226,45,189,173,31,222,163,127,135,160,165,34,151,250,166,65,192,25,151,123,203,177,3,19,166,205,65,81,249,140,191,15,71,202,53,208,184,67,126,125,80,174,35,102,145,190,70,199,89,151,104,120,152,29,99,158,89,208,26,62,6,250,137,156,76,243,126,75,0,39,212,44,25,31,141,49,198,150,177,80,201,39,124,146,74,29,90,81,166,136,191,24,52,148,175,214,135,170,232,112,62,72,85,46,130,188,184,60,126,196,148,242,247,218,232,201,217,176,223,113,210,77,30,40,108,104,99,46,121,116,58,127,233,110,30,23,14,176,205,163,50,77,28,173,17,112,46,255,133,35,164,250,15,254,222,169,249,207,63,255,22,62,117,197,161,230,180,81,24,59,188,171,36,161,96,187,221,167,177,166,27,251,57,251,83,174,231,41,60,254,73,193,62,228,124,50,42,47,165,99,233,74,5,195,36,52,243,116,10,104,205,100,190,114,17,92,158,81,22,206,179,51,103,69,127,21,230,250,225,48,154,193,207,81,24,208,132,18,141,172,136,4,112,198,87,215,0,122,48,100,50,75,178,39,217,230,136,87,120,26,89,53,236,182,92,156,166,37,27,9,172,123,67,10,202,208,143,172,152,77,147,254,36,122,127,111,205,226,116,66,97,167,188,15,107,147,225,209,150,139,18,28,75,238,79,219,183,0,254,107,42,73,116,195,140,226,131,20,208,25,199,233,37,81,122,21,164,176,255,24,82,124,74,35,64,0,140,201,219,53,35,254,99,109,42,16,105,122,143,85,223,34,109,52,149,206,215,74,153,45,83,82,19,230,64,252,64,251,41,84,202,142,97,190,197,212,79,253,65,118,208,246,123,162,82,1,95,104,128,190,55,51,6,174,225,11,103,143,53,190,5,228,77,253,49,70,213,143,120,50,249,202,163,37,42,145,91,220,69,150,43,212,149,185,214,231,139,218,178,169,215,191,212,69,86,161,106,249,221,6,96,234,89,208,26,126,114,219,75,207,36,23,234,65,103,157,250,98,143,147,64,175,146,157,177,179,36,234,183,220,239,237,223,138,55,84,241,108,102,182,141,135,172,81,209,229,136,150,40,253,87,159,32,4,20,242,174,29,76,224,124,126,69,218,242,22,53,202,84,186,253,6,4,0,141,196,143,221,65,104,180,168,9,16,101,148,195,163,233,102,138,203,0,157,48,122,194,199,57,105,252,178,19,51,137,231,41,116,32,22,134,203,253,28,136,37,11,141,113,114,60,212,59,188,249,213,235,3,94,216,41,107,222,117,193,63,5,74,65,96,159,98,123,47,62,0,67,31,101,187,192,29,228,139,64,39,222,90,18,171,91,106,187,5,124,234,173,238,135,155,73,155,230,67,81,5,139,208,58,166,157,35,117,191,132,238,175,173,163,79,133,36,30,176,80,228,100,70,215,44,221,102,155,141,52,208,165,56,44,18,126,117,252,69,96,222,34,119,125,170,238,92,147,223,251,96,231,142,64,185,141,254,154,42,252,93,82,177,242,39,206,119,179,201,223,237,14,55,21,167,46,152,150,34,26,141,16,141,160,88,138,101,238,226,47,156,69,238,142,4,164,137,185,137,114,178,35,189,120,248,121,116,114,122,89,183,8,24,236,145,239,216,20,255,39,96,173,7,236,81,137,103,154,117,191,152,211,225,207,210,173,8,229,193,93,76,178,151,232,208,69,158,243,211,117,210,132,6,0,7,167,18,41,59,66,129,80,174,86,213,65,29,237,179,205,96,146,14,91,133,72,87,248,181,157,95,132,181,117,233,97,105,194,194,48,116,12,152,69,99,94,138,75,143,244,88,208,91,159,170,70,15,222,192,181,34,179,197,242,177,195,99,162,212,46,61,202,197,20,169,54,145,140,173,89,39,69,71,71,29,131,197,13,93,128,71,37,147,155,189,121,72,226,15,105,43,142,223,109,18,191,137,180,3,35,30,244,8,172,205,62,202,59,91,168,91,241,239,138,105,122,143,165,200,65,3,93,37,63,203,133,132,67,201,179,231,174,100,196,235,208,132,205,28,9,239,127,110,108,14,189,20,27,81,200,18,27,144,224,193,126,65,226,116,7,183,139,57,108,90,155,249,155,17,250,242,241,136,128,115,109,54,241,64,55,3,165,81,104,188,186,49,238,163,101,104,153,218,156,194,134,200,72,68,204,116,76,248,253,19,148,127,171,221,55,51,36,140,34,251,161,125,70,230,105,155,246,60,243,203,237,86,90,93,110,181,0,72,113,120,43,125,48,54,133,187,109,227,130,223,129,224,18,129,34,244,10,136,17,149,166,137,167,107,28,242,39,116,75,95,51,221,80,122,25,198,232,171,206,76,171,100,24,218,44,182,241,208,146,126,110,105,240,207,162,212,112,152,39,73,97,67,208,84,14,11,141,165,241,46,82,91,22,125,115,163,120,192,120,46,111,88,93,63,112,66,87,105,57,238,122,153,147,46,220,15,123,141,7,157,59,224,64,4,147,131,48,157,61,47,132,73,85,99,254,138,112,236,7,68,97,222,125,235,28,203,195,18,158,106,65,65,189,181,122,26,58,225,243,191,159,224,75,43,131,244,242,70,143,70,235,249,116,126,46,189,94,65,82,177,237,31,4,91,213,93,45,38,38,35,244,65,87,96,63,198,110,254,19,190,120,193,174,228,213,100,44,157,198,18,132,75,158,233,93,107,3,108,41,169,61,254,237,70,52,141,253,202,192,162,158,34,199,1,180,130,197,89,179,253,101,231,220,101,116,108,155,120,94,148,232,225,92,1,88,176,214,149,179,157,244,14,76,165,25,208,218,57,152,145,138,213,58,18,18,50,252,139,214,212,11,241,156,45,0,85,44,215,235,188,46,43,83,43,37,184,64,108,160,227,201,115,184,180,59,142,229,147,138,168,173,52,140,215,183,165,97,125,160,95,111,248,192,162,158,156,94,141,23,162,176,233,161,133,78,196,77,214,213,158,181,101,88,232,139,35,25,101,6,69,224,209,224,116,147,185,57,23,120,146,109,203,48,91,25,24,78,83,74,164,110,180,192,183,23,0,85,62,248,255,131,252,110,188,65,237,90,230,53,242,7,191,231,171,74,7,67,136,176,228,199,83,1,101,170,232,225,162,102,72,128,45,50,212,204,13,36,16,65,72,27,145,150,90,140,5,44,228,221,195,244,67,234,123,33,8,229,251,55,126,40,198,0,161,196,208,102,222,51,181,185,113,184,78,0,189,19,203,80,96,193,35,219,32,208,137,172,214,150,104,226,210,56,173,75,135,83,128,25,81,164,133,40,106,253,193,234,76,253,68,139,252,149,116,7,157,251,233,120,254,170,189,6,22,88,195,207,170,168,186,143,148,13,110,214,175,137,59,189,92,52,61,36,230,175,243,0,44,63,74,185,255,140,52,93,250,145,96,210,53,26,110,215,10,69,66,243,40,94,250,62,32,12,80,225,48,84,199,151,22,241,18,220,48,58,115,201,6,109,29,37,116,167,2,0,201,78,68,51,228,11,47,29,163,238,220,172,50,124,140,85,177,2,76,108,106,99,110,65,10,130,26,5,99,77,91,215,59,166,38,52,125,247,218,31,96,224,231,245,71,216,101,64,51,50,123,230,137,237,115,254,172,91,195,105,2,182,138,59,22,182,123,17,231,40,239,195,132,101,76,3,224,1,101,35,157,39,48,16,253,34,179,50,231,190,158,61,158,247,169,212,100,127,191,223,14,14,51,91,154,174,184,87,49,98,135,244,195,139,231,11,255,241,168,249,89,36,218,174,245,77,14,234,197,187,1,182,51,6,219,134,44,58,101,168,74,119,141,208,47,187,163,229,83,113,94,3,86,14,178,95,175,35,202,126,195,18,15,115,108,163,188,87,174,142,82,60,135,106,160,225,54,123,230,141,58,104,208,126,159,247,161,213,201,122,63,228,173,102,70,239,60,126,12,108,154,218,63,39,18,214,75,180,150,150,234,13,166,61,105,142,184,120,65,249,232,239,169,78,14,131,155,250,84,233,166,228,2,16,78,215,153,65,22,101,59,10,222,211,219,215,149,43,81,212,171,68,64,131,57,167,109,62,197,111,82,254,115,35,184,251,135,211,131,40,20,168,5,3,185,58,203,223,123,64,64,184,151,170,131,109,113,212,162,0,39,107,63,192,18,73,172,68,88,173,33,112,239,121,225,17,130,27,13,249,4,82,108,63,198,79,4,235,89,145,154,225,21,116,146,28,209,134,18,162,212,21,11,61,194,250,88,112,141,239,118,234,28,211,197,181,122,138,52,145,248,239,243,236,149,63,48,49,10,229,81,132,242,204,211,131,14,198,148,53,230,27,206,118,147,231,222,110,231,250,141,116,66,218,25,139,79,203,183,193,131,222,194,2,210,223,66,180,230,110,91,184,88,94,62,144,130,204,157,49,65,209,97,120,86,107,46,14,32,79,252,96,151,194,172,130,169,0,219,86,64,226,31,50,132,222,7,253,183,106,59,119,74,63,200,124,64,65,87,105,209,70,133,29,141,206,98,117,123,97,54,174,69,21,127,139,69,60,187,116,253,196,97,124,70,7,55,127,48,63,179,153,150,147,183,159,190,181,56,133,255,100,248,221,170,119,101,237,121,33,68,94,2,222,139,234,101,138,71,161,31,14,68,222,153,59,214,41,128,195,137,112,215,76,207,131,27,148,213,175,250,247,152,76,241,236,208,145,183,229,131,219,62,36,153,46,245,172,155,58,185,214,20,119,170,23,143,178,55,165,179,161,98,157,155,153,183,241,236,90,45,208,72,244,35,18,50,110,101,7,35,217,96,156,80,172,81,152,115,225,167,60,212,52,91,114,79,139,156,133,155,98,217,203,75,24,61,67,164,174,146,172,82,225,81,35,12,77,247,64,182,90,5,175,115,227,211,54,94,251,55,174,163,219,99,84,104,33,210,233,101,184,110,44,235,245,218,160,140,124,7,208,233,34,159,255,222,128,54,142,24,145,232,66,216,238,98,121,86,201,48,224,94,235,234,167,25,11,73,104,247,235,102,54,66,175,13,251,90,116,232,111,130,253,233,233,104,69,83,55,47,228,197,204,146,242,227,224,77,14,157,197,81,178,91,0,245,100,142,3,126,44,15,137,10,63,88,65,186,100,18,85,188,121,27,122,14,92,74,60,214,46,133,105,251,54,12,46,37,161,27,66,139,77,201,139,182,229,106,152,56,45,92,175,142,182,224,196,225,122,67,116,124,65,163,63,176,123,207,91,224,48,116,41,122,207,48,149,182,98,216,81,53,18,234,36,2,96,173,200,22,69,237,241,137,63,114,151,122,161,139,247,195,163,102,163,141,11,91,78,55,111,131,137,40,238,96,211,111,18,186,185,164,149,115,94,222,88,149,12,123,79,170,74,88,99,88,219,134,225,27,2,53,27,158,201,130,117,213,218,223,120,20,187,128,31,9,148,235,87,169,198,137,206,69,83,141,112,31,122,42,213,6,101,46,255,72,179,58,135,231,141,231,55,66,155,208,121,23,116,238,149,193,29,208,182,85,113,152,89,101,200,150,143,96,33,203,32,236,108,61,188,228,212,54,97,238,250,51,30,23,171,249,207,116,233,7,71,190,108,171,68,121,37,171,30,130,182,209,81,221,57,254,75,155,11,223,142,43,202,5,163,251,84,154,49,134,92,203,74,130,61,84,130,56,204,13,177,245,128,102,130,106,217,178,74,166,129,195,139,100,170,183,99,37,248,0,146,137,54,29,227,43,176,102,252,134,84,211,143,110,131,114,201,129,14,59,93,230,56,174,227,130,236,127,0,154,25,141,95,65,1,2,221,177,251,150,158,31,142,164,18,24,80,11,180,231,244,153,186,250,223,238,243,41,194,188,204,46,176,238,250,17,2,118,159,100,63,116,251,224,133,98,164,117,5,206,83,39,129,21,108,217,183,39,216,65,176,75,75,110,47,52,137,72,159,14,106,246,154,211,96,229,50,91,65,142,139,71,191,79,10,11,112,160,9,43,176,81,167,194,177,184,146,62,130,159,82,137,56,215,54,176,98,114,64,12,9,227,7,220,142,235,178,5,165,56,64,8,168,252,192,130,39,127,39,52,32,250,246,232,201,243,236,242,139,239,181,250,79,25,90,25,113,112,54,132,108,244,20,240,80,22,53,163,77,82,255,194,191,83,223,56,195,149,59,212,129,34,90,52,192,66,220,73,123,97,83,43,43,30,118,212,244,120,190,246,130,189,45,21,19,151,236,126,141,109,243,117,89,1,250,63,163,182,79,151,226,166,38,89,209,239,176,234,253,8,177,254,215,133,8,226,124,157,80,187,124,0,127,232,112,134,55,201,102,94,18,164,35,220,227,60,143,50,162,109,250,14,107,106,39,228,51,88,15,14,237,206,179,169,151,89,82,249,25,127,222,215,45,207,113,142,120,254,181,40,88,48,3,80,178,231,226,170,216,3,187,237,175,34,168,44,113,57,241,79,66,166,245,106,112,101,16,226,45,149,233,55,227,143,254,217,242,206,112,175,27,125,5,242,160,19,47,201,152,135,229,241,77,15,80,30,70,64,51,248,192,160,116,66,198,206,202,93,174,135,65,128,40,44,155,234,245,151,189,239,218,246,220,58,16,205,58,224,189,109,186,189,244,176,216,84,123,168,186,168,89,231,92,201,35,152,59,198,102,21,162,7,223,238,56,178,137,19,29,206,73,137,233,231,82,72,129,69,2,251,184,163,201,110,111,69,199,142,254,151,23,34,121,199,176,209,119,11,220,240,137,224,72,4,97,84,89,170,28,86,57,248,165,195,152,27,59,111,47,10,155,136,230,220,33,240,32,47,221,230,135,124,246,209,248,16,136,159,106,18,10,206,182,122,152,227,47,64,90,53,213,243,60,3,209,125,121,64,117,5,30,127,103,19,89,133,6,210,31,197,35,126,249,147,203,126,89,149,197,221,233,205,144,254,122,148,81,35,153,62,83,29,82,196,15,59,139,24,122,70,90,179,224,203,184,37,15,163,216,14,38,18,159,234,150,191,122,87,38,234,75,166,213,23,50,104,37,105,86,49,234,187,143,40,205,7,212,106,199,198,25,210,156,44,160,131,199,103,52,181,92,255,93,235,127,254,48,124,149,176,126,103,125,148,89,11,122,104,17,28,161,193,106,84,183,200,98,151,182,224,148,38,125,77,43,145,52,120,80,88,187,192,191,55,45,69,14,136,182,143,13,63,185,31,120,51,93,186,166,144,120,83,105,164,10,157,204,90,18,168,0,195,86,144,186,253,93,233,167,107,29,56,43,122,39,39,218,47,4,179,115,236,173,7,4,207,106,184,237,225,40,51,123,216,49,86,169,150,150,26,243,50,248,27,165,16,66,232,193,95,153,181,89,20,195,253,149,86,96,75,103,230,87,244,184,205,40,12,236,103,203,130,103,41,55,89,157,168,140,57,52,240,87,30,159,63,207,239,140,154,157,133,48,130,17,79,17,121,104,62,117,43,92,57,9,130,178,224,39,50,131,13,173,188,31,201,210,154,8,117,72,180,205,152,93,220,111,176,141,12,50,219,58,126,207,233,233,196,176,106,186,60,140,29,142,210,20,182,173,231,29,184,177,192,86,25,92,55,236,99,212,91,24,235,23,174,190,233,134,197,93,241,69,12,52,246,117,121,198,127,112,21,240,65,21,134,176,247,41,165,203,35,0,32,153,231,162,146,23,35,216,122,224,170,239,82,113,22,156,210,47,89,3,255,31,35,163,208,12,83,212,86,103,250,60,255,162,48,219,56,65,130,148,207,80,229,96,121,159,156,21,35,45,130,123,7,251,149,65,21,87,76,104,27,50,147,105,197,160,213,155,130,20,128,89,133,110,226,159,102,35,117,233,109,59,127,139,101,5,163,187,86,59,87,150,205,213,181,106,217,170,243,221,89,102,64,45,160,133,204,16,57,27,82,33,18,27,18,183,242,38,182,237,3,10,218,144,92,82,81,174,118,26,174,161,150,60,187,172,125,56,242,68,172,72,242,189,218,123,183,125,98,131,73,163,73,211,81,53,48,31,240,61,70,157,165,168,239,91,216,254,198,249,192,245,90,40,129,231,18,24,8,8,5,237,164,36,216,221,213,73,23,11,102,40,10,222,41,25,188,122,72,91,39,160,235,7,25,200,2,191,69,107,7,174,139,82,170,223,22,142,30,93,181,17,66,80,150,172,222,158,160,40,1,49,122,46,81,170,102,177,70,191,194,243,178,31,228,150,14,9,193,239,4,38,198,149,73,31,193,182,82,89,144,72,149,52,169,152,78,45,137,231,141,174,254,202,80,35,187,51,210,220,185,218,19,182,254,120,255,86,245,54,220,146,32,28,106,25,57,152,63,66,188,24,205,102,91,17,113,209,160,210,134,132,255,183,145,152,175,222,182,123,72,210,78,137,98,195,117,151,71,191,47,150,212,143,67,244,174,142,178,45,8,1,91,167,206,59,166,45,86,147,93,167,58,49,55,207,137,124,109,74,141,99,120,16,231,246,154,77,226,143,22,188,74,113,183,44,211,66,226,80,163,217,66,107,231,202,233,217,175,103,169,197,114,26,6,61,255,2,182,16,127,39,51,56,138,17,102,73,176,137,151,124,26,218,29,227,229,157,208,131,182,15,122,72,110,227,96,47,193,207,57,155,35,97,8,186,222,190,9,151,224,105,187,155,125,156,168,252,144,149,237,175,191,161,29,30,130,117,189,245,128,171,212,90,60,224,194,51,8,54,117,132,73,1,37,145,18,226,244,146,160,69,17,124,57,11,10,17,194,91,67,10,243,40,209,87,172,178,124,225,71,210,106,79,228,121,220,218,26,181,4,153,135,105,126,9,6,85,159,2,180,247,131,130,16,224,122,214,83,101,66,160,250,49,192,116,160,127,128,156,167,89,89,95,204,248,169,173,119,4,98,227,228,239,190,172,67,117,89,62,146,127,115,207,151,40,74,215,38,229,88,27,151,129,85,135,75,154,177,66,23,153,174,109,64,23,253,103,200,79,243,96,109,241,10,199,109,57,59,222,110,201,66,186,20,165,224,186,102,180,73,111,43,155,111,199,89,61,212,70,1,40,169,36,176,179,133,43,118,7,115,38,240,185,227,11,53,26,211,56,49,116,167,55,120,87,141,62,62,171,206,123,189,156,6,33,2,142,168,78,62,176,79,59,90,99,49,213,20,37,233,59,148,251,108,243,233,255,114,54,184,184,103,75,143,178,37,36,226,215,92,7,247,236,60,229,97,66,6,112,211,152,23,68,118,229,202,208,178,195,12,95,128,108,40,137,60,217,47,17,53,105,140,93,183,120,35,246,230,94,35,31,148,107,164,66,60,144,33,145,70,128,151,3,211,198,253,24,187,55,59,198,63,246,172,187,141,198,65,67,40,242,196,194,116,136,56,122,79,146,80,69,7,0,170,240,118,103,168,158,216,30,24,208,242,100,55,4,62,73,233,240,213,73,50,165,96,85,123,141,70,46,141,9,80,110,224,128,77,253,145,139,190,219,124,162,206,128,7,11,26,58,205,23,233,213,176,100,177,248,232,164,23,107,200,192,239,236,222,7,73,154,188,165,140,7,247,215,201,91,153,4,203,129,124,141,149,77,82,51,14,74,83,169,81,77,57,240,78,53,118,222,75,130,69,81,196,190,189,34,182,207,121,216,148,213,185,165,65,203,163,129,89,240,200,39,32,175,250,252,216,250,45,153,70,215,31,153,129,11,96,88,238,61,89,84,76,215,86,253,218,110,242,30,48,50,87,111,182,232,26,42,60,215,98,192,183,222,123,226,74,124,187,90,241,88,197,3,201,152,233,244,157,71,225,41,62,75,118,171,224,109,185,214,178,123,164,122,77,243,91,85,151,13,248,239,181,3,116,205,250,167,93,116,127,226,33,10,102,7,180,250,148,54,212,231,212,175,80,118,18,45,58,195,100,45,108,211,15,67,40,146,90,41,150,16,69,194,108,92,247,153,243,200,191,56,51,125,27,42,27,122,37,4,170,70,102,143,233,184,189,29,247,117,112,120,239,29,4,96,110,32,169,172,246,14,233,250,174,200,70,104,155,209,168,82,223,228,186,133,34,149,93,110,33,148,133,222,74,171,239,95,250,28,122,206,242,25,18,121,13,111,101,254,142,249,127,119,151,161,126,12,186,119,160,41,114,129,232,207,31,42,3,26,17,87,143,225,252,210,122,156,158,117,155,33,188,70,201,184,58,1,201,199,184,57,144,63,147,128,164,195,63,125,123,56,221,2,12,45,148,230,124,30,115,192,170,175,191,85,162,77,9,225,132,126,52,195,117,153,188,131,73,201,141,79,58,169,216,200,71,252,119,65,213,43,16,70,29,12,119,152,140,223,41,128,139,84,78,183,104,206,54,155,113,21,48,37,222,236,31,53,125,199,93,236,129,161,130,77,252,205,45,57,28,252,134,151,154,93,130,50,35,217,37,226,6,159,255,237,124,133,204,141,2,172,97,211,175,75,164,144,176,123,105,121,146,173,21,220,110,228,15,24,220,47,140,51,193,217,231,39,133,77,212,150,145,222,5,100,65,219,89,242,58,205,90,105,18,191,57,102,246,168,46,239,135,2,1,138,23,43,182,207,120,217,18,238,2,214,113,61,119,200,22,115,211,24,177,187,45,213,149,187,100,25,129,211,114,87,179,13,132,80,19,226,128,0,74,178,180,208,23,146,215,55,80,125,145,122,77,67,162,211,149,28,65,251,183,151,179,45,182,161,40,25,236,235,117,189,49,212,42,71,10,189,135,161,137,29,24,90,221,214,165,248,39,93,57,160,156,154,43,189,65,123,142,93,168,60,42,101,212,222,216,124,154,109,107,39,64,43,10,153,227,171,181,64,78,82,199,83,216,127,226,250,5,207,105,27,37,223,126,166,204,1,59,130,127,161,70,97,126,169,127,25,140,192,184,186,13,219,180,221,38,62,216,35,240,70,42,47,191,29,30,166,134,94,207,121,157,93,116,2,158,71,45,153,36,29,183,148,93,230,237,26,13,157,17,186,103,24,254,54,14,185,205,122,131,208,129,232,74,184,39,12,99,96,141,59,123,24,124,236,78,80,178,45,129,217,251,200,76,124,203,41,184,157,5,83,218,224,174,193,73,23,102,188,56,148,243,25,59,94,39,172,241,56,99,245,148,219,18,127,242,55,115,67,96,103,136,78,165,95,36,165,153,243,9,180,139,189,87,164,187,220,19,102,120,200,124,201,9,136,108,63,168,213,34,60,203,81,152,4,182,86,6,71,232,124,30,25,23,102,228,158,99,124,139,252,250,122,236,131,9,157,136,232,28,17,49,177,181,185,63,151,138,84,222,171,254,144,20,138,138,98,200,105,107,206,152,141,27,16,194,112,232,50,48,210,111,32,126,161,209,59,21,153,194,174,135,198,231,206,176,117,111,211,43,254,129,56,1,26,74,184,52,222,149,60,187,143,95,235,228,90,1,226,66,213,62,188,157,177,73,108,186,12,138,134,203,201,173,70,123,102,84,81,62,138,212,237,180,138,200,27,28,149,66,161,152,88,40,35,200,18,21,146,238,52,108,129,200,91,85,44,142,219,227,169,232,31,132,125,10,213,8,102,209,36,135,200,156,230,158,2,102,70,99,64,55,37,158,145,220,34,230,222,60,123,178,134,86,116,121,199,168,151,69,207,117,4,99,15,167,14,85,35,222,18,74,29,84,132,170,64,127,124,164,102,170,161,152,80,97,88,254,18,181,32,138,225,139,59,226,81,248,0,153,34,123,52,62,46,206,116,241,191,255,255,77,187,246,248,241,166,22,33,129,118,54,135,191,141,209,182,33,212,244,248,37,223,250,34,233,222,107,212,65,152,42,212,254,50,64,99,212,221,18,61,167,226,166,36,33,204,251,233,63,204,174,208,230,75,255,82,144,249,94,9,211,232,137,44,164,96,75,152,82,179,14,247,71,180,77,224,191,227,104,231,68,49,210,31,18,231,146,125,71,98,163,37,120,23,46,133,140,80,102,154,199,47,101,45,80,138,85,173,89,63,32,182,213,242,86,13,207,110,247,124,4,185,222,80,250,229,34,112,238,168,222,61,221,121,52,254,126,215,234,130,96,49,77,96,39,165,51,199,17,243,194,22,85,170,82,223,96,244,152,61,249,186,102,124,33,248,184,188,224,84,149,220,30,30,252,120,19,146,180,140,59,126,216,207,77,68,103,47,41,133,244,242,137,20,141,8,119,70,205,38,129,67,219,36,90,81,103,44,22,129,146,40,7,211,177,248,143,89,138,155,227,39,234,79,81,238,1,141,59,69,94,227,223,42,248,242,71,46,210,218,113,58,86,229,19,68,219,99,241,129,188,199,43,240,21,65,118,175,78,123,215,177,73,226,54,66,149,188,247,21,181,42,35,217,70,167,14,178,212,180,129,76,239,251,212,70,187,41,161,90,54,179,112,224,139,6,219,231,88,246,252,94,99,60,43,132,155,90,191,78,196,87,73,187,31,236,161,162,182,91,14,64,192,62,29,63,216,152,91,76,166,163,137,19,115,4,16,167,22,13,210,44,66,224,186,146,47,183,170,110,153,70,157,141,189,94,213,12,73,30,240,42,208,37,213,26,97,221,140,209,120,53,93,105,222,218,253,228,22,173,125,208,8,150,98,36,169,89,89,108,235,189,42,217,164,184,89,82,197,165,134,71,181,17,63,240,116,194,79,64,77,119,139,92,147,143,255,159,252,55,32,180,50,51,241,219,208,59,182,165,142,160,98,66,251,82,53,205,213,154,88,192,111,134,62,93,190,168,221,255,192,203,107,166,66,136,45,21,251,166,154,226,177,112,191,235,224,165,126,246,76,109,44,18,89,239,97,195,181,229,90,214,11,81,134,201,60,24,103,169,245,197,45,190,103,148,37,212,66,114,30,68,222,154,9,148,151,192,205,156,250,68,197,114,180,71,37,150,39,8,8,43,33,87,70,99,91,186,33,159,53,160,69,25,91,13,79,151,181,77,235,225,36,35,185,70,59,211,15,133,163,124,2,218,51,159,76,153,142,171,81,43,81,252,245,14,145,203,143,95,236,100,15,125,160,169,100,85,225,221,232,152,94,85,166,49,41,34,82,225,71,187,225,234,128,80,16,169,28,21,107,150,139,159,249,255,139,61,89,178,150,24,92,0,127,167,9,29,6,36,121,83,43,148,104,119,194,27,125,15,227,85,22,166,98,51,75,42,185,250,90,117,42,242,18,52,225,152,228,231,15,112,232,102,102,20,247,45,144,71,103,233,142,242,241,119,160,10,251,80,166,223,121,254,181,220,152,20,247,102,209,222,135,44,144,39,228,159,18,194,139,91,252,42,119,105,147,49,74,6,216,122,176,114,161,153,190,148,141,218,182,250,187,11,11,240,248,137,147,105,237,31,235,55,179,205,0,92,46,38,21,117,189,182,172,4,97,42,2,17,62,77,247,96,223,85,61,212,248,164,240,38,209,228,244,80,136,192,149,172,3,57,81,106,123,246,209,161,70,85,220,36,130,243,208,45,46,2,201,67,193,215,37,146,120,19,77,59,76,16,105,195,135,160,51,20,150,170,100,171,1,174,202,116,117,50,244,227,124,214,0,81,165,245,247,250,175,58,129,22,45,143,123,81,51,176,71,11,251,251,151,210,53,201,182,187,88,39,165,81,189,167,134,200,139,219,5,232,190,177,192,71,141,34,59,144,7,92,84,127,214,176,39,29,23,163,41,116,216,55,136,100,194,76,185,85,147,85,26,236,233,146,27,162,191,65,196,186,130,235,90,167,5,163,186,5,158,229,185,46,219,190,204,216,92,229,193,138,136,70,13,231,213,195,151,105,190,21,63,7,38,50,97,172,215,70,99,172,133,17,212,230,219,113,221,107,185,248,9,38,36,70,107,174,64,112,33,203,129,184,82,136,118,92,142,84,136,64,253,10,216,136,33,233,253,164,115,246,26,52,174,122,255,104,160,237,159,26,168,68,191,1,112,216,182,126,252,180,64,221,179,247,88,62,65,52,216,129,137,141,95,53,34,32,83,145,25,225,217,95,214,21,84,70,17,157,48,113,13,250,179,154,82,97,217,251,192,191,45,132,85,81,217,248,32,173,246,117,154,232,191,27,59,165,144,239,255,41,169,18,51,204,72,78,122,244,18,57,231,57,201,0,200,10,52,183,56,52,91,228,56,32,117,65,75,55,64,197,229,177,253,89,119,181,153,211,5,251,7,234,112,32,77,8,106,26,159,166,150,118,96,51,228,171,88,202,198,224,83,101,253,106,170,51,16,26,244,90,232,26,190,76,97,149,56,165,229,120,178,255,138,216,87,212,27,251,37,10,66,187,231,153,18,189,136,76,164,183,236,249,151,107,255,220,123,56,235,160,73,136,195,120,83,32,131,166,202,140,181,34,36,224,123,243,216,87,175,65,114,163,172,32,69,87,234,216,216,135,245,36,47,138,69,62,82,5,236,159,246,104,110,247,250,141,173,4,32,235,10,244,161,150,168,27,4,215,253,151,118,92,8,232,32,188,128,252,185,22,250,129,228,172,68,24,54,68,228,59,15,94,190,152,90,5,55,74,155,162,255,200,154,65,10,17,92,115,144,133,83,235,243,229,50,64,155,219,1,91,68,37,100,72,149,204,239,213,187,33,113,139,75,217,217,232,101,242,206,179,106,25,252,167,148,253,24,114,250,181,6,91,10,38,166,171,21,167,16,252,48,2,75,33,6,229,26,179,114,13,69,224,24,218,163,22,2,19,50,227,30,221,121,85,219,147,117,56,101,136,46,145,178,136,57,155,150,73,110,52,8,174,121,49,230,210,97,22,234,35,22,228,200,252,12,187,128,75,88,130,163,129,139,218,128,103,77,203,225,112,123,104,9,29,128,99,48,235,69,64,40,178,249,238,37,226,167,219,88,27,134,33,198,208,6,229,104,58,37,110,203,242,32,73,167,37,63,169,154,135,134,227,218,175,176,179,116,88,14,160,230,121,178,169,80,172,104,169,114,129,22,57,245,185,238,203,77,146,178,121,135,12,133,253,16,153,132,29,168,149,239,208,199,77,253,8,25,211,1,58,18,154,208,179,94,22,70,82,31,241,102,185,69,239,41,145,247,98,114,137,54,245,248,45,151,29,116,232,106,80,122,63,97,146,199,204,141,16,188,188,34,3,39,214,191,187,12,23,7,150,45,219,21,51,185,207,59,99,105,195,58,67,171,167,186,172,181,35,8,33,214,77,6,208,16,177,92,62,21,200,208,126,77,81,176,76,229,58,86,12,114,225,111,55,159,47,215,95,241,11,161,187,243,164,154,223,3,181,137,60,30,110,202,22,109,198,35,255,251,89,168,150,141,160,235,158,10,10,122,66,117,14,182,144,51,16,0,117,230,39,124,240,219,87,199,119,222,252,162,136,37,13,203,6,194,93,184,52,52,57,54,85,121,1,22,176,254,0,20,167,69,163,140,136,162,144,208,13,63,64,207,243,178,237,41,60,248,214,96,255,91,108,131,57,250,184,37,90,176,230,239,107,102,26,89,96,104,53,72,219,25,147,78,179,69,198,147,179,245,146,201,191,192,215,60,200,130,87,143,171,45,191,88,85,131,238,18,85,143,92,21,127,22,206,9,150,51,6,233,154,252,198,0,36,198,250,216,119,82,118,61,69,167,156,15,181,123,55,73,187,207,0,208,24,105,255,57,54,166,23,236,104,216,14,152,249,160,175,234,143,107,157,148,126,151,59,51,88,71,247,214,88,190,106,169,35,219,184,26,52,204,24,11,22,94,157,178,39,82,220,46,6,37,28,181,51,83,150,44,196,199,139,221,200,253,101,102,52,240,147,187,125,21,3,121,141,48,64,24,249,98,230,69,159,35,103,44,155,243,182,26,109,131,162,153,167,29,231,191,236,157,244,195,137,232,84,193,79,176,16,248,192,187,82,17,195,65,162,1,122,124,14,216,137,81,195,134,238,1,20,86,160,37,226,101,247,215,17,87,130,227,202,43,13,177,135,27,178,108,135,188,137,11,67,197,235,213,152,117,214,38,46,221,34,183,126,205,109,7,126,171,48,60,213,250,129,116,103,228,198,7,168,52,178,238,150,184,220,52,60,28,156,85,96,228,45,57,64,68,183,246,67,6,46,96,229,212,227,35,136,133,182,165,30,142,127,215,168,144,253,141,145,241,45,147,56,8,190,123,69,221,231,193,100,253,91,75,126,104,252,34,127,138,107,15,226,67,85,14,16,197,252,210,230,144,195,136,185,214,103,229,4,198,32,173,16,191,156,87,143,122,185,115,246,92,135,171,54,252,116,109,226,93,99,173,32,249,12,139,172,57,10,59,131,97,178,76,3,198,59,107,148,155,13,184,94,103,127,142,138,110,187,16,218,95,130,32,233,143,203,44,90,146,52,186,145,55,210,187,127,62,44,123,27,244,157,250,23,73,11,80,169,118,89,47,143,223,195,216,71,214,46,173,125,75,143,33,177,232,190,3,65,244,87,245,41,98,3,20,99,37,135,149,73,246,182,78,135,145,133,124,112,0,76,226,1,195,22,88,78,61,89,163,109,216,95,88,48,35,65,119,142,156,103,122,22,202,208,47,247,250,125,80,217,22,35,201,48,59,96,186,251,117,150,149,68,109,31,33,12,248,64,2,22,125,17,49,211,201,126,192,43,118,61,103,223,116,86,197,107,91,133,108,159,32,213,12,187,65,228,27,51,154,47,115,219,77,39,13,63,14,185,245,57,132,103,7,184,99,212,224,154,230,152,114,232,40,157,162,2,98,238,55,175,112,76,82,90,102,179,169,235,80,207,155,189,110,82,93,106,95,0,90,230,223,63,129,119,153,115,97,50,193,145,214,84,82,206,20,116,18,87,21,14,161,128,2,58,248,147,168,53,88,83,21,53,241,7,90,139,212,66,226,146,72,140,45,119,133,255,49,149,226,56,223,106,21,237,24,59,198,81,172,7,185,222,2,83,16,20,82,47,59,245,165,112,109,181,251,209,59,58,195,162,218,39,206,232,102,144,71,24,206,80,119,21,108,168,178,216,83,209,13,205,80,178,177,240,35,156,44,237,192,77,249,185,161,41,114,56,93,192,253,40,203,179,192,18,30,110,145,12,121,101,119,37,134,159,151,193,226,179,202,89,218,120,27,7,165,211,53,79,152,229,82,47,38,226,102,64,68,250,124,151,206,132,122,27,195,125,246,111,208,67,31,170,105,214,207,0,31,156,212,143,111,23,88,197,224,157,151,66,91,98,158,176,138,177,236,245,224,17,14,74,43,118,207,126,140,170,184,244,195,229,141,186,213,7,144,241,37,151,22,74,29,114,94,93,14,120,157,10,109,112,128,129,52,15,125,41,159,246,129,151,144,49,55,255,150,152,195,83,9,91,19,119,117,146,217,24,72,150,5,6,126,34,237,129,178,34,54,221,139,240,74,129,211,161,199,11,213,253,163,14,159,33,137,209,192,113,100,255,22,170,44,254,231,210,238,17,10,79,247,78,47,57,244,81,250,119,191,126,184,52,191,65,11,222,127,153,12,196,39,65,188,231,139,127,56,230,116,100,136,5,240,24,212,141,162,58,89,55,136,226,148,161,114,138,119,22,189,114,172,127,236,177,1,27,166,43,26,74,114,38,166,43,198,129,183,174,173,18,155,5,46,232,100,129,227,85,64,75,31,218,61,71,194,106,239,114,172,89,243,51,240,93,221,111,35,24,216,71,236,110,133,10,120,96,241,155,47,50,246,122,210,99,240,57,99,122,17,200,74,77,247,211,239,193,245,32,44,93,71,29,87,129,233,91,117,29,29,102,87,147,1,205,184,196,236,247,239,46,157,213,113,85,105,24,160,46,166,95,58,253,189,86,34,22,216,103,97,21,41,247,64,103,75,183,37,38,113,26,111,240,164,158,123,208,194,179,13,82,128,117,250,8,212,158,78,13,96,198,104,145,196,66,18,104,70,8,38,91,86,214,251,36,168,28,109,153,223,53,133,137,91,208,168,254,147,26,115,59,202,146,216,206,205,14,151,167,207,219,113,30,98,75,45,128,154,159,127,90,115,129,175,225,0,182,157,132,149,144,194,125,228,38,195,100,206,172,42,102,144,251,130,183,69,17,1,150,18,35,127,102,223,11,70,14,184,199,235,248,43,65,12,41,89,80,4,54,52,95,131,15,67,156,127,61,119,238,26,159,80,109,98,71,146,131,82,198,245,172,226,233,108,139,225,14,226,123,70,210,254,102,229,87,125,117,179,160,72,109,197,226,103,185,220,214,241,12,193,116,30,20,33,194,212,207,94,102,190,149,199,149,91,173,107,176,208,233,185,220,66,168,139,100,131,107,181,180,182,49,143,27,229,111,210,64,36,97,139,221,161,131,0,131,63,249,248,216,32,212,204,207,200,118,66,211,56,152,60,134,140,203,99,7,141,42,2,196,218,246,220,4,121,46,84,252,0,141,140,208,4,146,124,43,205,222,106,190,240,121,174,110,109,200,168,199,53,129,71,214,241,188,221,125,49,153,244,248,192,11,119,241,38,94,254,186,53,246,164,228,24,59,3,236,55,195,48,3,159,46,143,116,47,126,203,161,11,38,13,17,180,74,35,7,124,153,174,178,161,91,4,92,111,20,159,117,253,114,152,131,172,244,159,185,123,165,177,235,132,69,246,38,189,122,72,212,74,15,136,182,153,45,139,198,143,13,7,186,110,100,184,147,19,66,20,36,168,245,184,99,164,152,20,32,152,32,230,237,227,119,241,106,113,10,255,232,98,147,95,106,94,243,53,135,95,136,109,6,129,91,35,132,136,76,235,128,181,151,255,151,138,21,15,189,97,39,159,108,183,39,200,18,157,111,73,236,192,143,140,194,4,156,71,165,61,176,87,121,6,222,98,156,242,147,203,0,203,106,48,139,14,11,62,31,75,208,36,16,238,228,35,167,116,169,179,77,98,250,128,196,161,160,94,10,10,232,252,31,161,89,45,144,91,158,135,49,87,3,179,216,138,224,187,214,114,110,187,106,250,86,188,53,90,17,226,125,117,78,132,115,10,245,101,74,20,243,134,76,217,145,248,32,188,154,244,136,9,122,103,228,94,247,187,223,66,175,22,33,32,105,85,7,205,253,206,40,94,192,87,118,103,92,123,58,74,45,66,218,19,229,201,111,130,114,131,183,199,2,249,172,83,7,110,145,198,42,51,28,197,34,183,3,66,27,45,22,78,143,239,192,19,64,166,164,187,216,195,124,208,235,18,88,203,60,70,133,43,173,252,13,79,203,241,155,20,95,57,50,199,205,130,216,178,48,155,150,160,213,51,22,139,77,161,191,93,74,67,121,226,42,127,40,32,26,177,84,109,30,205,181,91,68,46,194,226,237,232,80,106,47,45,205,32,133,220,64,221,85,131,33,221,254,108,21,115,24,208,155,87,84,4,166,94,188,177,188,166,243,93,54,253,166,65,187,193,24,228,168,32,149,208,252,12,38,86,57,131,135,126,229,84,26,103,100,223,219,33,192,25,56,31,146,124,137,62,55,233,145,254,34,79,166,255,206,51,166,99,39,83,116,71,15,95,220,80,81,101,83,109,151,175,251,81,53,225,203,143,65,179,54,10,127,148,240,166,157,56,127,137,41,5,42,244,225,127,16,107,20,133,212,180,207,148,83,228,227,77,87,73,219,95,161,212,143,99,46,129,115,155,152,4,108,215,172,63,164,184,203,4,83,128,37,187,8,120,105,255,106,62,151,157,48,9,94,6,96,91,107,195,100,22,1,227,217,101,188,116,25,125,139,108,236,42,140,122,189,108,146,193,59,51,65,136,2,146,232,238,215,151,235,122,116,152,183,74,217,80,243,194,31,190,162,74,252,167,129,227,233,18,21,145,39,31,196,227,93,126,55,200,145,93,171,127,37,253,99,232,112,20,160,20,216,101,54,183,53,223,85,139,67,22,94,135,162,215,94,136,189,228,56,92,216,65,234,50,112,82,23,57,254,251,251,250,224,121,119,49,151,73,5,145,11,128,11,248,72,163,58,252,61,164,173,201,107,123,23,46,239,218,115,98,19,211,106,6,88,118,150,38,241,214,208,28,232,187,200,87,130,168,114,224,237,49,178,21,220,124,99,240,136,225,235,170,51,187,119,180,52,210,122,113,93,175,64,250,165,42,217,68,217,33,187,13,70,249,213,249,104,97,233,38,156,116,129,144,35,106,174,210,161,54,142,225,120,18,21,70,8,121,81,162,25,5,133,126,218,196,243,154,167,156,194,13,130,241,95,96,117,49,52,254,40,248,149,26,2,231,57,74,24,53,208,124,239,220,99,91,116,233,133,178,238,183,121,176,50,100,227,104,58,106,251,144,104,13,72,54,170,3,173,248,218,62,222,174,122,98,32,182,223,156,123,213,20,15,182,197,180,174,3,29,146,145,131,199,32,219,36,27,242,254,210,232,159,122,133,122,104,17,147,17,217,194,22,200,20,207,39,191,129,36,161,208,71,62,87,73,230,162,180,130,100,11,147,182,55,230,102,22,12,104,103,254,121,43,236,52,82,147,83,242,171,28,23,70,211,238,106,213,0,229,167,114,174,108,246,214,69,32,123,164,116,120,30,240,195,83,159,146,208,208,164,235,222,41,11,187,117,217,65,57,236,104,192,251,247,40,50,97,217,206,132,43,160,188,83,134,95,148,189,213,145,157,159,217,84,157,14,17,41,60,156,137,177,84,193,249,72,43,234,126,242,187,77,123,120,2,73,176,38,104,122,124,7,100,225,85,157,92,51,51,125,123,65,183,40,148,130,61,134,96,69,208,154,226,42,71,110,169,240,4,189,5,94,236,45,230,92,108,78,189,152,34,142,50,11,244,32,47,56,9,202,159,217,73,206,36,180,201,214,39,238,143,106,27,220,97,6,43,114,19,225,139,79,229,153,32,252,68,216,144,237,17,0,194,210,172,74,61,240,70,50,222,174,43,58,182,127,228,68,63,16,109,20,6,196,220,180,100,205,48,74,228,133,54,198,205,76,206,6,225,155,12,172,146,19,251,163,112,66,26,187,252,53,117,64,20,69,100,223,241,252,169,120,224,23,43,69,171,201,130,211,98,120,191,226,69,64,57,61,94,178,30,250,234,88,224,255,71,119,174,51,211,99,24,210,7,96,253,165,81,249,70,85,188,233,71,125,178,32,26,40,70,120,161,25,199,168,77,228,226,22,46,88,171,246,106,39,4,97,48,224,65,28,201,28,4,137,115,56,118,236,166,55,74,216,47,241,202,33,52,232,172,11,189,100,143,50,32,63,253,93,210,69,210,241,84,233,97,27,104,255,131,0,24,108,255,54,80,189,205,234,103,15,5,77,214,3,106,216,126,65,138,187,78,49,5,58,81,232,139,53,94,174,193,60,123,42,252,0,187,135,137,25,179,34,30,175,168,143,210,147,90,147,50,20,215,135,157,32,153,200,70,139,18,45,78,116,198,95,227,115,46,22,235,93,189,77,99,104,172,11,177,138,202,120,240,101,145,152,72,201,111,103,246,134,221,107,184,254,244,113,60,246,251,30,211,35,91,17,226,104,212,133,90,60,19,238,202,7,44,225,163,13,79,13,159,248,107,129,18,89,153,57,110,223,106,147,253,215,64,18,175,154,192,160,193,128,219,85,26,24,120,37,233,67,50,61,41,241,96,17,179,45,18,246,69,93,184,246,249,231,221,248,239,138,119,20,18,172,203,141,137,213,75,51,38,228,11,2,92,64,127,115,52,244,71,44,202,47,194,61,192,178,164,87,91,25,3,147,174,196,60,238,246,77,249,103,80,38,72,147,246,188,160,36,81,98,186,228,207,171,173,193,194,90,74,147,215,122,156,89,239,71,50,153,67,18,135,211,239,211,145,130,235,187,37,84,16,152,20,15,93,61,42,53,2,83,64,99,245,196,113,132,246,144,75,245,102,38,112,209,33,117,88,65,145,229,165,228,164,145,116,171,10,88,80,47,117,251,195,182,87,126,80,65,169,120,216,133,209,27,6,140,29,61,206,56,109,101,59,254,231,251,35,130,167,138,190,212,213,29,202,31,206,77,207,162,152,230,204,184,111,137,84,130,56,205,200,131,253,113,206,195,36,209,19,53,29,134,83,246,51,114,244,59,124,60,160,181,5,206,20,107,188,169,52,29,92,130,165,144,244,87,174,101,60,205,53,50,233,10,126,191,58,15,190,186,233,174,52,203,232,195,239,177,38,247,86,9,214,201,125,200,38,178,201,80,1,172,25,193,25,136,252,163,166,47,235,231,127,165,25,116,158,177,146,134,76,132,93,209,175,214,198,180,115,166,88,241,132,85,172,69,73,66,80,215,130,48,179,151,113,111,34,221,191,101,163,199,92,194,192,24,80,18,66,122,211,195,82,143,59,23,20,15,148,83,38,149,188,54,76,198,18,121,160,51,206,173,79,215,242,231,116,241,223,111,128,240,221,209,26,232,13,148,152,30,230,248,8,153,134,236,52,90,191,212,106,139,107,193,164,141,196,140,27,174,100,199,114,76,92,40,221,182,123,145,49,15,85,37,83,8,41,92,142,183,101,181,8,238,87,153,65,122,47,71,213,239,171,206,27,206,126,206,202,95,113,255,55,234,166,41,72,17,230,215,177,165,243,93,157,252,165,55,137,64,61,38,105,186,137,113,86,149,158,210,41,100,217,94,241,234,250,95,245,174,167,31,153,124,40,47,7,123,83,250,132,123,231,186,204,233,85,210,70,185,218,253,135,40,198,0,129,198,251,10,58,24,180,137,194,161,15,10,148,94,157,18,48,151,59,222,122,39,225,145,154,120,136,122,152,67,221,118,236,7,67,85,178,241,40,91,83,97,135,245,187,204,132,161,103,8,1,90,198,114,15,3,18,117,18,249,115,113,192,198,206,9,208,92,170,244,36,220,149,78,226,169,38,117,6,95,53,41,178,159,226,88,67,56,247,17,154,67,177,155,80,195,220,131,61,49,30,0,55,38,249,35,136,33,229,96,200,91,150,224,229,182,65,215,149,18,152,100,114,132,82,113,138,0,128,234,45,65,14,28,53,31,222,133,66,12,187,154,8,188,136,109,67,190,21,230,135,181,234,125,120,175,255,157,94,220,47,210,160,109,166,219,181,248,176,45,216,218,80,33,164,177,27,101,116,120,139,202,0,153,177,188,29,124,10,92,56,46,239,185,105,201,10,205,173,73,42,95,157,122,220,110,99,8,64,214,175,190,221,127,241,246,106,54,225,100,61,92,29,55,169,11,97,39,7,168,84,37,226,217,199,254,94,121,227,217,103,250,0,85,7,117,99,8,42,55,37,75,238,122,237,86,105,59,52,208,183,219,119,40,69,23,215,171,148,39,25,84,83,8,64,81,209,116,145,195,42,146,254,175,152,9,183,167,222,102,147,231,175,47,63,207,201,53,46,18,78,171,175,3,73,42,127,2,139,65,120,154,232,152,153,131,105,89,61,155,213,57,181,211,81,159,221,212,69,225,225,20,213,53,135,26,122,115,153,0,5,114,123,8,239,53,242,239,222,169,67,9,203,4,189,94,126,157,12,185,202,23,248,108,171,34,255,208,220,38,117,38,117,9,34,14,144,99,91,252,131,238,0,148,217,28,63,19,108,15,78,201,245,37,105,102,54,47,19,58,29,34,88,237,105,175,230,229,208,226,26,143,214,223,130,204,79,20,165,17,55,44,52,150,169,61,227,146,196,252,153,235,135,217,178,249,220,181,99,44,236,243,142,23,237,252,28,214,146,104,70,46,10,8,17,123,94,25,25,241,34,180,240,42,205,215,83,247,11,184,226,172,148,151,163,227,226,33,88,151,230,32,233,235,58,88,123,60,124,201,235,52,188,172,161,182,45,229,222,99,190,176,63,208,148,206,223,254,254,167,60,240,252,201,144,69,141,194,37,123,131,241,65,166,40,123,133,150,83,83,102,133,125,241,169,251,25,236,165,79,89,168,229,230,241,21,8,46,72,108,221,51,181,33,44,102,230,39,56,211,101,22,153,189,184,120,216,255,90,123,122,225,177,43,21,247,35,196,162,173,250,74,125,141,133,213,171,45,118,169,107,10,0,171,250,95,150,105,40,209,244,247,21,179,168,124,92,191,133,156,212,91,205,1,92,254,244,94,198,78,68,18,154,158,220,80,66,54,226,90,25,40,201,54,16,151,102,64,169,234,193,77,165,77,138,74,234,197,78,33,175,138,137,70,232,90,137,194,187,139,69,236,157,58,146,124,114,216,21,211,50,52,46,200,2,109,83,50,8,71,0,202,249,161,175,55,188,247,137,146,138,251,52,114,76,122,181,63,195,206,68,141,5,65,99,81,104,4,182,23,3,56,53,231,11,125,241,197,169,78,87,37,132,107,140,156,225,233,133,133,114,231,122,92,197,99,108,232,161,27,44,211,212,107,204,167,166,196,112,7,146,157,99,246,103,239,66,55,207,201,6,203,80,80,168,62,229,202,132,106,153,28,207,195,131,114,199,234,199,196,35,56,131,97,246,219,160,110,21,10,38,18,207,93,110,133,100,51,96,233,196,231,232,161,172,81,156,78,161,100,102,156,23,136,132,223,193,100,234,163,231,111,227,168,41,71,97,21,6,153,110,254,176,179,180,175,208,5,53,40,156,218,160,250,13,244,109,192,20,193,243,71,107,20,228,236,86,49,77,237,129,81,21,55,135,169,14,177,58,138,233,28,77,81,178,191,110,78,214,1,72,160,106,59,227,133,177,188,248,3,52,144,41,240,197,26,105,207,210,249,34,144,231,152,247,77,191,140,237,108,236,56,111,78,21,221,39,251,92,22,99,87,24,52,170,116,152,159,249,3,207,37,100,253,127,228,29,38,45,23,71,152,165,114,53,228,169,82,108,56,85,235,153,215,161,233,154,8,201,16,229,54,8,96,70,139,131,183,10,13,3,66,13,122,135,234,186,202,128,122,74,210,26,1,151,210,14,168,240,211,34,84,108,96,235,111,141,192,148,114,48,171,48,209,123,202,42,86,100,31,63,19,241,204,12,116,196,61,16,34,213,192,133,72,234,201,32,197,41,23,143,143,225,231,100,28,95,110,187,162,0,137,244,76,188,228,192,254,55,162,174,174,104,111,125,115,198,129,238,22,241,194,96,154,213,149,78,142,142,110,68,182,218,59,58,228,207,101,10,47,242,58,254,19,241,122,73,180,203,63,182,56,174,112,82,83,12,146,222,52,163,231,223,185,117,203,150,255,213,52,179,91,78,50,198,169,250,237,3,80,74,75,220,70,148,224,57,177,101,136,128,138,102,166,91,152,9,75,59,112,194,18,223,2,99,38,114,220,235,63,147,163,116,180,181,50,159,252,146,67,250,181,180,183,221,70,12,169,206,106,96,35,167,155,186,10,109,140,182,218,129,79,95,205,22,65,125,51,66,31,11,45,151,125,205,217,220,56,127,170,131,136,78,177,1,77,42,129,48,165,136,123,237,220,107,202,44,237,194,105,189,142,253,135,67,103,211,46,155,143,188,128,170,211,241,29,45,129,126,70,23,238,237,76,216,25,254,221,248,199,81,101,131,234,96,215,177,49,153,79,82,34,17,192,147,3,10,136,101,30,68,72,241,81,151,126,187,28,83,169,52,93,98,14,49,229,127,41,66,77,135,209,105,101,157,66,98,41,253,206,81,98,238,81,190,129,188,254,231,103,158,181,57,56,75,84,84,205,172,45,101,33,162,69,28,41,15,184,245,25,235,8,163,23,145,189,77,240,148,20,201,193,38,95,50,51,252,53,114,237,219,212,143,13,254,31,240,116,78,200,204,78,223,76,171,207,100,135,168,145,63,195,7,210,57,11,117,208,178,112,189,43,23,6,242,28,180,114,147,28,179,203,117,148,0,202,45,12,73,150,4,26,198,86,164,22,141,233,10,141,191,131,4,253,245,113,173,62,144,23,114,162,201,153,46,198,157,85,211,7,110,153,60,228,128,180,91,115,81,120,57,95,127,32,91,228,223,163,153,137,125,94,240,241,151,103,230,221,122,75,4,194,71,131,194,86,164,173,103,37,23,105,15,121,213,110,88,218,163,85,39,69,192,167,61,157,13,158,252,24,237,113,156,99,169,130,194,128,188,185,77,62,173,130,165,47,19,199,67,158,44,19,36,105,81,186,95,236,173,62,116,231,128,89,55,248,157,143,62,243,187,214,79,225,200,106,22,53,212,163,156,81,0,83,83,81,61,150,231,125,161,148,77,244,135,125,57,81,246,199,194,117,66,63,83,144,18,0,47,87,69,30,90,58,165,232,90,1,49,159,7,218,96,241,183,189,109,87,80,117,198,132,233,37,226,164,120,21,79,172,186,48,105,67,126,132,145,235,52,137,57,123,122,183,220,129,138,233,182,168,246,93,128,15,104,45,178,219,80,208,205,108,58,176,103,4,14,199,81,225,53,213,13,215,36,174,245,90,52,136,213,31,40,85,16,112,33,42,99,48,94,24,244,150,197,12,89,119,123,245,152,255,82,71,35,125,158,120,6,207,186,64,11,162,33,177,246,5,179,50,195,151,224,216,31,171,108,31,66,9,97,235,60,41,232,219,78,5,88,67,111,71,223,118,255,3,155,94,237,137,135,166,89,101,248,53,122,222,146,36,234,225,103,107,26,139,167,72,97,189,80,202,29,15,55,147,94,158,125,177,192,170,193,48,36,38,151,1,168,170,101,154,244,190,150,122,233,195,142,120,43,5,98,102,18,146,233,145,176,82,27,76,47,129,229,255,158,165,245,177,145,21,102,173,223,176,221,2,251,32,6,47,118,72,212,25,191,64,47,66,122,164,195,112,169,51,2,141,216,63,31,229,9,147,15,105,20,230,206,48,32,175,62,42,232,168,124,0,186,111,104,206,215,216,79,154,157,176,33,94,212,109,128,210,212,209,121,113,228,191,205,71,231,223,5,187,12,91,79,221,37,36,48,152,249,165,76,23,198,234,7,63,62,254,249,237,52,62,32,107,142,43,187,47,35,54,74,38,92,49,201,191,20,116,14,46,240,219,43,103,22,138,171,122,1,22,176,32,238,128,205,233,213,17,85,147,104,237,255,193,36,225,199,126,18,253,112,234,7,200,75,185,1,139,101,83,66,212,242,121,93,22,89,63,114,222,90,14,70,245,98,176,199,27,255,250,227,83,232,181,185,122,72,253,99,69,63,234,86,5,29,40,199,206,22,122,183,211,208,13,181,45,119,25,186,83,7,57,55,173,62,25,203,8,31,99,180,0,199,253,93,152,61,150,189,71,69,237,176,126,73,134,27,251,140,73,23,214,167,15,130,7,140,203,232,218,104,129,136,170,210,35,212,61,1,148,13,5,112,165,72,193,215,51,194,138,141,201,47,88,9,240,231,66,81,119,233,110,186,59,75,204,167,219,103,215,48,95,87,0,146,28,182,43,82,137,229,125,121,225,27,30,12,132,15,243,29,129,103,76,208,244,86,12,198,169,25,180,136,142,220,28,222,98,166,123,36,168,0,112,35,211,178,60,1,205,231,250,47,179,156,236,122,82,224,124,74,205,7,92,242,118,223,154,151,216,148,94,59,7,167,22,136,211,178,249,79,210,180,164,82,37,11,81,172,164,10,247,14,21,242,249,4,27,224,246,126,177,92,249,76,113,110,253,40,220,42,148,136,155,61,177,203,81,83,35,135,230,188,57,207,246,194,32,4,165,228,55,225,20,15,56,78,182,77,77,91,202,188,9,118,174,101,112,110,70,4,61,107,11,152,109,207,113,184,138,227,209,90,136,172,230,172,183,128,229,142,56,232,94,253,235,71,19,99,87,56,161,62,28,180,17,87,14,82,9,251,229,17,162,173,127,37,1,95,241,241,42,229,250,249,197,196,49,18,109,3,186,1,70,229,75,187,245,36,169,207,8,116,57,247,147,13,45,137,68,150,6,167,53,129,236,156,165,135,12,107,145,237,66,161,97,203,12,224,18,82,107,195,117,145,160,205,117,127,37,125,26,71,60,187,83,252,71,228,45,249,206,60,26,189,140,143,88,133,51,38,102,228,159,51,42,201,26,0,181,190,102,215,151,80,28,121,243,204,191,188,255,154,50,154,82,124,209,31,238,178,11,235,101,238,237,136,82,29,33,11,109,226,3,131,28,185,254,44,150,163,91,54,24,142,76,67,123,68,106,81,6,162,189,4,90,174,83,145,251,30,26,164,214,210,26,77,51,191,253,39,62,105,169,69,235,176,51,158,34,135,130,102,48,100,195,185,158,199,251,63,211,48,26,36,190,126,97,55,181,79,244,206,207,218,29,248,251,220,191,200,149,161,101,29,49,128,253,198,136,209,26,245,124,29,219,28,38,97,7,46,53,175,127,170,140,138,15,70,204,187,42,82,5,203,14,120,14,137,72,83,116,154,69,193,86,104,237,105,235,14,199,139,96,199,155,111,22,22,195,132,122,152,246,18,208,108,54,216,205,171,124,9,85,10,115,228,120,204,149,158,228,227,1,111,203,195,246,203,78,208,253,198,247,125,255,34,177,84,85,164,198,248,71,109,240,10,91,127,59,173,46,37,115,242,54,97,241,215,243,208,101,247,229,159,207,180,136,60,157,222,112,97,184,24,5,203,84,198,29,136,45,240,193,95,20,100,209,118,126,122,89,20,68,17,7,74,22,184,40,33,142,202,36,213,19,251,201,182,65,145,202,229,73,58,214,144,233,237,89,131,177,29,241,40,142,157,242,253,226,52,162,254,154,240,86,235,158,81,128,189,4,227,235,189,16,85,59,252,220,168,86,112,135,166,81,162,183,72,208,221,121,206,37,183,242,79,178,86,9,3,152,55,159,160,47,48,28,155,26,229,152,28,233,255,155,168,6,179,78,177,41,113,216,118,42,61,136,90,226,7,10,227,126,206,94,124,76,228,195,116,189,205,214,53,53,195,72,204,156,218,42,150,24,147,118,153,198,173,174,38,24,200,196,72,163,114,154,56,32,101,169,175,81,80,169,68,217,251,16,56,188,122,218,181,126,248,166,2,11,60,37,45,22,175,225,179,207,15,115,66,99,75,201,154,212,3,129,198,151,78,58,153,243,121,201,171,10,105,117,213,20,99,241,218,79,95,144,152,73,17,46,101,22,32,99,71,121,221,195,196,118,211,7,228,210,103,175,113,87,8,119,30,183,102,91,5,155,203,229,123,128,163,120,30,121,146,162,80,208,91,79,83,84,98,189,164,245,229,211,83,32,167,147,27,156,56,3,220,32,73,45,176,218,74,97,38,179,160,253,205,163,255,150,46,246,27,157,83,0,233,238,9,11,112,164,59,121,69,74,70,233,38,226,5,208,64,231,28,156,66,166,76,148,48,64,1,56,200,16,163,80,37,132,128,157,207,20,253,31,189,174,197,174,219,40,233,21,65,17,97,66,14,220,99,188,61,230,69,218,171,95,187,237,129,175,108,97,7,59,129,137,127,162,40,139,48,149,199,116,108,170,175,110,205,91,203,98,254,238,60,91,137,8,237,250,18,61,160,248,124,195,177,252,234,59,18,172,27,251,67,195,219,193,1,211,55,78,13,190,177,151,34,132,159,122,8,134,104,53,196,180,24,57,81,115,26,151,197,206,58,21,200,2,226,112,110,48,145,3,10,175,6,100,78,191,8,57,142,150,25,214,138,129,112,119,235,77,128,207,21,20,181,41,14,6,50,253,239,154,46,146,190,92,85,2,244,83,160,9,19,159,194,32,155,99,4,124,181,8,140,21,253,249,33,45,146,176,33,145,111,214,81,50,14,72,33,93,141,226,137,20,137,196,217,20,202,51,181,121,164,213,63,9,163,85,69,95,78,37,97,246,195,184,104,4,72,91,71,85,221,93,155,15,34,215,75,45,166,214,62,83,169,99,149,79,208,28,193,120,204,62,126,182,55,137,62,35,133,236,161,232,0,208,95,88,171,5,240,178,233,175,199,204,27,45,125,91,208,249,56,123,136,154,53,216,221,219,157,217,229,80,176,252,98,18,115,100,158,245,61,88,157,222,199,65,95,12,254,233,176,62,187,221,166,152,7,206,110,40,254,248,229,11,141,148,69,140,121,151,88,28,188,147,158,94,165,54,117,160,31,246,53,221,89,253,103,19,121,135,137,2,149,118,241,66,96,193,164,246,29,226,227,234,150,180,29,248,228,206,8,251,159,54,163,49,155,227,6,170,202,42,199,211,156,167,195,88,196,40,34,149,206,248,35,192,8,218,189,97,148,38,255,194,192,118,226,4,51,217,176,106,239,179,92,38,150,43,125,69,61,159,206,134,27,46,24,143,128,95,164,57,48,158,216,31,230,120,92,213,55,92,73,235,246,108,110,231,109,228,158,134,118,62,70,103,159,61,40,171,211,54,82,190,98,23,196,17,137,246,87,72,254,227,224,185,138,148,88,15,147,216,22,196,75,168,73,133,24,249,138,249,224,192,79,146,90,244,183,205,124,255,189,30,171,240,12,0,37,11,134,75,108,115,149,170,57,132,190,87,37,16,169,111,179,24,218,143,57,239,245,170,185,201,67,141,126,183,153,41,87,91,102,120,185,5,221,132,78,48,135,153,1,192,103,200,179,195,135,216,15,126,60,200,210,109,158,165,141,128,89,112,26,245,165,164,254,245,14,226,34,199,227,196,56,247,107,81,43,196,67,82,120,80,162,101,72,161,56,34,91,211,189,204,233,95,212,227,56,105,30,127,254,207,6,162,113,183,181,97,131,177,78,153,109,38,18,94,32,91,223,37,149,138,89,231,116,39,254,24,54,34,182,225,99,252,19,254,17,143,238,206,227,198,161,130,18,65,24,111,162,89,231,45,211,212,8,152,4,248,24,29,107,251,184,43,5,8,68,101,122,121,185,193,42,8,110,69,209,253,207,62,208,221,46,125,225,176,147,78,98,124,139,189,93,223,106,206,133,150,103,214,210,153,1,252,96,81,113,175,118,122,40,112,203,121,37,56,41,4,102,253,21,174,225,173,215,243,126,205,198,192,233,113,33,79,173,222,222,162,162,254,170,101,220,91,183,122,230,243,177,223,248,254,102,122,104,250,186,9,238,119,206,232,93,48,66,60,117,79,173,93,157,86,120,94,168,16,111,179,215,240,154,238,36,23,178,65,131,128,115,166,183,153,101,162,174,203,2,217,206,116,181,182,145,203,36,91,214,76,118,161,93,102,198,39,167,50,109,55,14,17,54,221,30,160,247,231,169,112,172,104,154,80,65,193,123,54,221,228,44,7,85,178,131,201,27,178,186,10,17,227,31,233,254,112,206,123,131,77,242,27,185,66,47,237,170,128,112,53,165,200,134,82,61,18,37,155,62,166,128,25,211,96,165,32,12,36,157,93,40,21,131,12,181,195,182,153,89,86,155,111,133,175,83,223,79,228,234,175,33,61,176,224,41,140,123,224,155,58,83,20,202,87,118,42,170,187,223,153,36,137,76,105,139,91,68,249,80,35,207,223,231,93,224,184,217,145,186,84,102,3,32,85,149,175,23,87,86,89,85,162,11,22,232,2,136,61,173,37,249,229,88,65,44,148,101,50,188,72,19,50,103,210,184,231,177,185,82,238,96,234,46,68,234,216,5,202,115,158,143,138,120,246,232,91,84,190,106,2,105,146,2,226,143,127,75,55,58,189,188,165,73,0,138,76,86,172,244,196,72,181,118,86,198,177,82,233,67,187,71,234,208,100,29,33,234,185,155,185,184,159,202,232,125,117,76,228,213,211,155,2,222,210,155,183,102,74,61,35,63,248,154,145,83,223,37,250,53,248,52,43,39,224,131,132,113,60,44,119,238,126,159,143,51,210,163,254,61,254,171,127,189,178,78,201,224,198,195,38,238,70,111,31,215,0,225,55,51,229,159,127,182,50,107,56,128,225,206,252,109,136,222,54,22,50,98,68,97,113,57,214,2,197,72,157,140,215,211,201,93,62,62,153,116,40,166,252,220,155,162,82,58,204,38,221,14,246,93,234,49,230,113,107,93,55,226,164,162,240,197,199,175,56,34,127,74,1,140,86,15,97,104,132,183,40,146,182,190,243,0,16,19,55,5,156,100,36,230,161,99,89,49,173,63,227,103,110,244,246,182,83,211,214,63,172,106,168,156,236,195,18,175,96,19,99,155,127,195,249,201,201,10,71,227,79,229,77,34,152,50,79,66,149,122,25,40,168,89,211,81,160,253,241,206,65,11,228,53,151,75,9,44,213,227,9,109,245,235,1,220,197,114,233,176,201,170,164,20,190,70,65,223,198,84,27,240,213,5,46,158,249,214,97,212,11,131,214,13,248,252,196,249,70,58,77,156,237,70,25,124,10,60,202,101,184,164,58,123,40,252,63,66,59,150,254,219,88,31,143,57,24,206,68,173,149,253,109,70,48,138,177,47,173,47,59,41,223,106,167,57,124,100,185,237,128,22,144,154,9,131,206,236,26,23,192,148,2,64,44,26,99,138,244,240,48,80,215,197,172,144,240,138,123,218,58,111,193,213,148,5,226,22,78,148,247,156,72,80,64,102,156,240,200,100,8,69,218,43,142,3,249,173,98,51,23,6,153,251,182,189,86,184,56,152,134,199,78,143,181,49,128,63,127,104,184,38,50,77,68,255,44,181,210,205,166,69,193,25,213,221,156,69,114,192,149,29,129,87,202,204,148,240,155,163,217,56,201,85,192,231,246,8,127,237,223,59,198,120,138,22,139,42,135,8,17,154,245,204,195,124,160,140,148,186,21,178,197,56,133,78,89,155,191,60,68,56,234,44,203,83,87,57,79,47,205,59,200,150,235,146,21,182,98,118,138,44,146,205,191,36,75,128,70,44,226,148,161,123,180,125,232,99,88,212,61,233,5,226,117,63,179,76,247,17,40,165,235,9,106,108,247,137,191,250,141,254,149,64,186,223,206,251,171,151,62,222,7,72,222,92,163,235,70,153,33,104,94,223,99,39,160,50,208,53,124,83,212,73,129,244,110,254,58,57,236,178,181,247,19,250,198,76,214,125,184,156,78,121,24,37,7,199,247,87,234,37,46,77,150,199,69,132,98,126,185,7,180,8,87,121,157,186,11,1,218,50,217,122,171,171,239,245,127,84,148,218,247,32,177,122,147,185,238,118,79,103,253,159,233,235,110,225,40,89,169,50,160,206,177,246,214,47,36,119,20,216,139,96,21,159,213,150,2,236,170,42,114,49,196,30,238,21,201,137,173,144,35,177,198,14,209,251,165,96,153,145,17,134,77,162,119,171,76,130,248,205,98,210,113,162,13,142,65,131,61,9,126,156,142,233,210,229,138,92,221,138,216,34,184,242,54,174,166,238,62,32,97,53,197,204,165,25,176,149,247,188,221,228,140,209,63,160,122,235,154,196,47,159,161,93,201,91,106,156,120,139,115,246,190,251,124,71,246,132,26,148,170,67,79,212,72,33,249,3,155,53,32,111,128,125,93,235,93,52,241,186,92,16,126,186,204,126,220,54,234,44,65,44,5,2,112,103,72,206,214,170,164,207,163,236,66,34,233,122,181,166,178,106,50,60,102,163,99,87,133,163,171,250,64,45,138,25,8,219,2,101,193,228,107,28,104,67,234,140,69,136,237,233,227,60,37,130,151,254,25,183,216,250,174,93,75,156,6,187,98,151,79,94,169,55,52,3,177,218,52,213,247,153,19,26,228,94,206,72,215,17,107,83,184,174,136,140,216,138,85,183,195,217,174,227,93,86,95,247,121,21,190,251,82,134,167,183,84,38,223,152,190,207,205,195,27,54,54,9,253,227,2,127,222,103,30,119,28,219,216,127,75,200,68,141,151,47,122,92,189,38,32,211,168,67,164,130,146,117,95,195,171,95,203,54,23,121,247,21,170,133,108,167,30,19,212,195,115,246,151,248,174,90,117,26,241,131,124,82,19,104,41,86,250,2,104,75,60,176,109,174,141,242,208,180,219,235,235,215,79,2,142,172,21,34,144,149,100,123,68,210,107,96,171,62,1,119,134,66,107,65,26,92,242,50,196,42,58,45,151,116,232,90,22,188,204,196,159,178,38,25,19,81,247,131,255,255,148,142,229,221,210,66,67,55,77,68,198,175,203,20,32,42,229,7,13,137,162,39,180,198,58,150,13,192,57,41,102,98,116,43,6,254,230,118,65,139,177,39,229,183,57,230,7,49,53,74,230,52,59,215,129,65,37,247,42,228,194,105,111,225,106,22,216,33,190,77,26,229,28,44,96,100,175,158,66,93,203,170,100,251,207,173,76,27,38,225,193,165,239,156,251,237,180,186,89,232,125,117,109,244,125,244,74,124,118,224,255,121,156,52,170,56,25,183,189,143,10,17,186,20,120,96,16,17,243,61,5,88,218,150,227,222,57,166,182,54,51,246,126,103,45,223,182,37,40,98,219,3,10,62,230,93,90,7,111,65,80,71,234,125,13,17,96,228,254,176,123,5,219,221,226,99,229,185,242,226,147,15,173,211,13,180,82,249,192,69,209,157,54,72,254,196,255,55,223,130,141,86,206,128,205,153,109,111,239,101,186,26,251,135,87,109,243,15,245,129,67,110,67,170,156,56,212,68,27,182,209,132,34,54,76,87,188,253,8,126,104,22,165,7,244,4,0,52,209,136,171,118,63,191,183,218,223,47,103,88,106,141,234,81,213,53,102,10,249,67,247,41,140,96,180,247,67,28,42,187,207,233,4,35,98,86,139,65,207,44,68,243,209,166,244,130,18,235,156,111,219,41,67,225,62,178,205,4,220,3,1,201,251,76,237,94,38,23,245,218,29,211,103,217,57,119,228,158,9,0,214,94,247,206,13,46,191,54,164,228,121,113,201,125,9,145,30,251,36,172,180,151,177,210,112,194,196,38,238,13,4,57,211,144,78,104,48,45,225,245,97,211,248,156,110,187,177,215,252,0,234,80,217,63,22,36,168,96,172,73,117,59,223,24,115,57,93,100,238,148,115,182,129,41,125,170,31,120,3,84,182,146,227,186,212,145,62,34,189,10,54,48,148,56,65,68,43,57,17,79,83,114,3,67,31,25,49,216,7,14,44,29,29,251,94,62,162,150,190,6,89,67,136,5,115,95,94,245,194,240,234,49,80,114,167,78,165,2,32,15,36,93,152,96,156,252,192,169,251,189,134,95,79,195,151,34,210,238,226,182,6,28,55,80,166,8,87,10,77,142,56,146,199,185,144,75,252,38,121,199,213,19,119,185,16,130,135,158,91,191,96,243,199,252,179,93,88,203,250,227,73,63,254,65,160,14,213,229,63,147,49,16,73,197,126,109,204,242,162,77,151,68,38,160,157,247,50,81,203,116,116,239,204,186,118,130,17,189,133,147,198,130,119,197,124,22,173,222,70,91,85,168,34,35,136,68,202,39,7,130,21,49,68,47,184,6,197,203,207,113,20,0,93,197,131,57,68,209,75,17,181,250,86,202,177,252,129,65,10,34,162,46,113,194,9,134,229,52,247,16,216,86,233,60,181,65,230,25,100,149,139,157,129,234,201,224,126,145,137,247,40,121,160,133,70,229,7,113,9,152,240,127,105,248,53,72,3,219,158,7,223,183,194,194,79,153,187,14,47,51,221,108,243,197,252,96,172,25,135,139,182,149,41,119,87,30,94,91,207,15,176,247,124,44,102,131,247,225,86,68,167,178,31,55,60,19,128,131,98,252,6,37,72,32,97,205,148,129,84,4,176,5,13,250,55,96,161,163,66,228,58,236,132,233,148,227,67,52,3,145,19,94,96,172,222,229,3,179,207,85,5,194,136,97,114,194,137,219,90,96,230,11,25,98,22,210,40,148,177,109,213,123,235,102,8,203,143,86,222,72,100,81,170,8,203,254,7,204,152,140,150,44,114,93,82,134,171,64,106,48,67,130,144,119,131,92,184,126,141,139,148,180,179,29,153,61,63,251,254,251,42,195,35,79,240,234,203,54,237,41,220,158,86,222,193,237,56,21,159,174,155,211,35,192,156,99,240,245,105,6,90,43,117,195,187,165,31,29,246,102,250,100,209,72,79,227,69,48,27,19,249,48,99,155,247,59,29,36,224,142,94,202,70,5,79,249,224,219,11,47,88,92,132,175,123,182,232,203,232,205,194,112,97,63,62,50,5,190,143,133,6,203,80,80,168,62,229,202,132,106,153,28,207,195,131,114,199,234,199,196,35,56,131,97,246,219,160,110,21,10,38,18,207,93,110,133,100,51,96,233,196,231,232,161,172,81,156,78,161,100,102,156,23,136,132,223,193,100,234,163,231,111,227,168,249,169,102,56,37,210,114,165,8,166,240,13,251,68,100,115,235,110,0,174,224,94,200,79,155,126,221,62,137,116,64,135,83,145,135,76,237,164,160,91,200,26,216,0,1,16,115,143,63,254,189,14,160,85,21,181,219,81,207,67,63,251,187,46,40,86,107,25,255,46,95,40,255,108,67,57,195,133,241,210,21,69,90,17,67,72,149,190,175,67,95,143,8,255,245,51,255,220,158,93,222,140,71,6,24,38,137,24,160,181,93,59,162,78,142,213,234,208,137,11,131,231,101,26,166,231,35,27,199,197,235,6,229,5,116,228,95,40,214,127,253,68,208,134,154,144,56,144,220,33,70,97,67,178,62,173,3,134,189,224,201,212,89,89,92,241,133,109,28,117,90,249,184,188,147,202,230,33,220,151,201,7,92,230,87,151,209,238,120,93,8,38,98,222,137,123,228,59,125,6,167,55,171,255,60,43,118,125,197,178,214,225,197,198,73,161,180,214,125,19,221,125,138,60,253,164,152,250,219,67,235,57,237,86,228,210,15,191,12,68,31,233,70,64,3,51,75,110,190,38,65,214,40,240,67,92,32,229,182,171,153,153,135,15,153,91,209,248,153,2,215,2,64,155,73,21,155,117,199,155,219,135,51,253,28,239,99,12,216,52,164,17,168,232,69,232,205,209,66,139,65,161,157,166,105,75,54,14,134,199,127,193,55,200,86,1,172,150,254,50,221,59,11,205,140,181,149,231,234,113,196,183,115,245,147,141,100,88,2,239,70,209,224,162,239,255,101,157,138,73,204,117,5,115,36,250,182,124,84,98,71,99,48,204,183,187,16,169,184,39,129,112,197,95,236,119,148,151,114,1,233,35,60,9,236,194,78,195,20,220,200,56,210,123,248,168,98,239,112,154,46,173,161,215,247,213,97,62,4,49,174,202,33,138,136,35,151,195,82,217,244,213,46,162,15,241,52,141,242,134,143,65,160,71,166,209,155,113,162,9,72,11,231,210,231,87,6,130,5,167,15,53,98,21,54,129,53,168,236,183,41,250,212,4,242,213,48,16,246,190,120,89,114,56,19,122,246,180,178,18,3,84,21,72,87,250,131,235,25,132,218,70,57,244,128,253,133,127,80,8,79,187,202,190,204,231,26,61,44,8,103,39,187,133,214,231,27,10,247,12,187,87,56,99,40,166,81,85,158,80,176,167,82,167,178,60,62,21,115,164,3,138,58,58,3,226,202,154,2,54,174,224,178,83,120,128,187,55,235,169,66,112,53,64,168,109,31,195,66,139,239,98,105,190,148,209,234,206,67,7,255,23,183,52,208,193,229,233,99,188,237,191,185,217,158,26,60,14,127,195,163,120,180,34,129,204,230,136,255,28,132,19,141,48,90,10,1,56,30,209,248,45,86,179,141,149,188,204,85,80,155,113,39,187,190,37,90,208,82,21,208,63,97,114,101,197,149,29,116,206,42,82,6,48,53,34,201,186,220,45,225,51,245,135,59,21,36,129,105,81,189,213,28,249,206,214,30,141,42,65,209,9,117,158,16,180,250,173,247,168,237,169,240,201,130,229,190,80,68,62,170,208,227,174,106,86,73,87,14,219,13,156,143,204,132,110,239,242,159,212,54,69,185,115,48,94,147,221,169,246,133,52,41,145,242,245,242,63,15,195,59,85,238,209,182,147,13,17,206,157,175,71,97,8,201,89,147,43,104,140,173,37,44,131,146,193,251,139,122,51,246,134,199,243,230,68,236,11,172,131,150,188,123,57,174,220,232,133,51,240,238,118,22,84,137,210,232,168,228,63,126,250,12,117,187,104,254,33,27,202,118,72,45,7,59,165,71,214,161,101,104,136,197,247,208,156,254,91,131,113,254,178,178,202,143,12,181,87,229,244,78,228,60,133,185,4,117,237,220,7,157,60,138,145,184,178,164,246,96,112,30,76,17,60,132,64,51,161,116,156,76,27,147,94,217,42,54,30,107,84,171,214,19,141,224,122,187,22,110,136,187,17,63,226,20,141,45,101,27,136,213,146,174,128,222,99,35,201,190,185,149,29,168,38,0,253,119,41,203,33,62,81,6,175,88,184,169,194,149,122,57,203,129,237,176,143,81,175,37,125,235,159,9,109,89,124,33,111,240,102,29,233,13,123,172,162,177,173,191,170,89,16,79,41,90,8,199,158,185,143,143,220,103,2,209,245,253,166,137,236,77,13,213,78,187,112,97,101,13,43,25,156,29,209,95,59,26,99,64,218,81,175,66,167,223,54,167,4,17,130,243,132,161,88,211,18,132,62,161,10,140,57,148,244,204,129,178,109,236,239,10,108,90,204,105,34,114,1,247,187,191,80,104,248,71,115,84,44,147,50,171,213,167,195,157,79,133,147,105,129,132,186,68,111,199,245,124,129,16,57,138,141,80,42,218,235,120,81,222,64,14,87,74,246,73,76,220,114,90,137,242,235,7,148,172,58,99,152,12,102,33,75,12,62,115,15,78,95,47,129,161,244,73,135,64,196,96,148,223,66,68,43,51,163,42,148,34,6,79,27,211,57,67,3,8,113,226,60,171,207,156,10,166,54,162,221,164,50,127,175,126,105,249,105,148,240,65,17,24,114,232,165,231,131,128,3,144,71,205,35,47,114,102,25,62,2,159,246,90,227,157,175,3,4,198,211,254,191,68,182,180,20,108,183,148,85,41,247,0,100,14,24,213,228,162,62,134,185,58,184,155,10,0,122,241,119,104,35,142,40,209,111,233,65,203,78,151,23,244,138,204,116,179,234,99,101,19,161,40,195,187,10,101,252,61,124,213,87,22,52,34,104,1,106,125,155,118,218,245,250,221,204,134,19,190,141,167,207,135,52,159,171,22,112,28,42,21,117,151,220,54,9,66,129,42,123,236,80,99,199,157,76,223,36,83,246,22,133,177,28,155,184,134,113,2,212,206,205,161,115,23,144,55,198,248,137,53,210,237,198,33,172,199,48,34,165,246,37,253,7,27,248,240,72,251,233,112,240,83,240,131,55,42,166,25,247,211,49,213,114,221,175,181,10,82,197,248,166,209,128,223,148,92,207,208,69,17,255,12,137,66,182,75,176,44,21,43,180,56,171,11,234,48,12,117,95,63,150,47,167,195,97,237,32,250,185,252,219,185,166,24,222,124,69,138,156,19,181,169,127,114,161,26,250,123,148,3,66,95,66,73,232,119,236,148,142,49,55,248,40,143,134,240,158,6,139,69,211,226,177,236,21,143,227,146,21,181,35,55,111,130,63,140,55,197,134,247,229,103,12,174,200,57,179,119,70,229,75,187,245,36,169,207,8,116,57,247,147,13,45,137,68,150,6,167,53,129,236,156,165,135,12,107,145,237,66,161,97,203,12,224,18,82,107,195,117,145,160,205,117,127,37,125,26,71,60,187,83,252,71,228,45,249,206,60,26,189,140,143,183,66,147,169,234,20,174,128,75,143,125,59,140,21,91,221,123,237,168,155,210,100,224,145,63,223,191,8,109,31,49,157,160,84,202,6,165,30,184,117,191,117,219,2,204,210,186,216,153,46,152,81,73,32,159,4,36,34,80,132,15,153,58,238,135,237,112,83,115,21,232,39,96,166,163,255,142,1,3,43,101,125,1,98,38,237,63,88,179,101,123,86,225,241,102,156,88,112,113,10,163,108,111,63,59,167,126,155,109,85,133,135,62,66,85,133,78,35,247,1,159,254,203,123,120,163,148,69,198,9,199,171,90,172,12,178,83,164,124,229,127,118,116,43,39,111,239,207,214,242,222,34,12,53,110,180,205,187,129,140,14,142,242,215,162,104,68,223,104,80,202,167,195,212,169,15,169,15,42,90,16,28,228,125,202,159,118,97,219,122,38,37,62,156,181,34,70,116,196,9,47,222,207,186,47,38,234,193,218,248,3,55,167,248,14,177,250,180,205,198,110,149,122,117,49,132,159,65,108,221,245,112,110,12,59,234,178,69,245,173,124,213,239,39,110,22,191,15,222,240,170,28,188,118,40,240,235,213,86,42,210,233,69,30,84,38,144,65,190,72,127,125,140,7,221,30,161,139,224,209,233,13,46,112,79,228,127,55,54,193,23,113,47,232,100,75,175,150,95,212,29,116,113,133,16,27,238,245,187,149,161,60,79,186,127,82,84,168,56,26,24,13,39,32,134,234,137,85,93,198,228,250,229,188,240,48,87,44,145,109,11,120,78,30,234,129,168,143,221,89,6,1,23,234,92,40,77,130,27,240,93,3,151,187,100,223,212,26,43,92,177,246,253,221,191,63,90,229,26,2,220,27,207,167,107,19,48,210,68,199,12,206,17,56,152,48,187,202,113,155,31,215,9,120,8,217,207,114,197,235,119,211,77,66,199,22,22,234,39,116,15,11,28,22,195,172,20,157,55,130,27,112,147,32,23,241,73,212,197,62,55,171,76,182,236,196,36,110,202,90,116,223,144,145,152,72,99,17,134,194,242,8,130,167,157,228,42,37,92,55,196,100,57,94,163,103,17,152,140,106,15,48,99,24,63,46,140,233,165,68,82,3,4,48,251,160,136,217,158,120,246,210,21,87,89,122,63,224,188,33,191,153,190,187,32,104,239,187,156,126,128,220,10,233,18,149,160,227,19,249,206,245,253,163,110,2,191,130,185,206,208,204,25,165,73,176,218,74,97,38,179,160,253,205,163,255,150,46,246,27,157,83,0,233,238,9,11,112,164,59,121,69,74,70,233,38,226,5,208,64,231,28,156,66,166,76,148,48,64,1,56,200,16,163,80,37,132,128,157,207,20,253,31,189,174,197,174,219,40,218,238,25,23,192,246,21,86,236,103,100,143,229,141,36,164,154,221,203,6,67,67,31,105,42,185,108,162,197,92,119,58,78,173,56,20,42,79,105,32,97,204,80,36,51,49,112,211,164,111,129,215,50,183,161,213,100,86,198,189,182,52,246,68,148,53,173,152,111,104,110,244,77,3,233,94,12,25,185,145,158,215,176,134,67,231,167,21,181,225,197,194,124,86,199,219,17,210,154,201,236,164,165,229,165,203,175,148,86,254,60,44,105,181,170,4,85,221,95,100,101,144,80,6,91,95,241,160,14,252,22,20,197,245,82,14,237,234,185,246,8,239,13,27,136,106,223,83,50,97,227,133,126,133,124,215,249,229,42,176,51,247,91,129,170,116,193,232,155,184,243,236,111,217,219,140,253,218,84,160,81,230,87,244,124,149,166,134,104,180,180,0,241,188,41,209,153,88,226,36,252,184,23,111,19,84,115,214,203,174,136,109,118,193,242,213,40,214,105,243,132,146,21,200,214,176,102,124,246,149,24,15,140,158,22,83,110,9,197,62,129,240,201,119,178,92,50,249,139,13,148,120,215,142,249,139,250,15,125,117,16,170,175,133,125,120,138,31,156,238,132,34,137,79,98,3,132,137,82,34,51,216,206,100,148,157,164,236,112,175,91,155,252,33,239,51,140,203,19,254,188,86,184,94,10,40,173,1,246,188,58,116,145,25,163,190,243,23,230,145,124,165,107,87,157,82,198,33,227,151,25,142,65,177,53,68,6,31,80,99,99,40,98,39,207,211,177,249,123,240,211,232,12,85,141,46,81,245,140,168,54,59,23,177,209,78,249,182,19,30,237,133,248,46,23,236,19,183,183,242,216,168,148,192,222,200,253,170,108,153,94,208,194,238,152,229,211,227,43,86,7,212,225,176,192,254,40,192,119,252,140,35,142,131,249,55,147,131,16,46,60,58,22,34,141,83,237,94,110,176,126,51,64,137,113,42,196,202,211,203,192,192,161,107,104,37,159,75,61,210,124,162,115,208,100,175,231,102,1,130,105,102,21,204,164,34,73,133,176,236,181,63,14,20,101,53,55,201,181,101,195,5,3,194,124,215,135,123,118,115,46,116,174,15,252,71,122,202,158,146,129,205,100,159,232,251,99,210,249,145,211,73,173,41,87,91,102,120,185,5,221,132,78,48,135,153,1,192,103,200,179,195,135,216,15,126,60,200,210,109,158,165,141,128,89,112,26,245,165,164,254,245,14,226,34,199,227,196,56,247,107,81,43,196,67,82,120,80,162,101,72,161,56,34,91,211,189,69,130,230,5,165,56,46,232,194,69,154,134,208,21,23,177,229,109,39,106,99,6,208,36,21,107,96,66,38,17,129,97,145,151,34,96,132,123,151,188,219,50,128,128,4,12,124,131,165,95,170,195,238,191,85,49,103,194,164,146,192,94,198,254,199,175,141,79,85,157,179,18,221,185,251,163,65,68,41,96,195,45,205,145,189,30,82,36,113,75,133,160,97,246,96,250,147,67,193,148,255,251,187,242,24,105,142,112,24,61,84,164,111,174,204,190,94,185,52,54,89,78,58,78,154,56,87,104,179,89,106,232,57,80,147,30,71,46,159,54,144,128,134,102,243,141,84,138,58,255,104,46,196,72,49,192,154,233,117,99,230,241,1,137,9,71,196,187,194,170,215,22,95,176,9,28,34,67,130,41,44,134,203,147,230,210,194,205,59,182,180,198,116,121,141,166,151,153,208,145,126,218,208,125,47,46,126,212,60,77,142,219,81,139,88,229,83,144,170,149,56,74,26,241,96,191,204,125,236,100,102,96,246,158,178,28,246,74,88,99,221,232,4,156,51,99,44,116,173,221,219,234,75,74,54,210,10,76,16,211,44,59,169,244,165,61,106,194,28,175,28,225,227,40,120,226,107,60,82,157,86,33,247,216,229,216,175,243,249,173,202,120,33,252,182,93,136,125,199,213,234,243,37,121,242,102,65,1,161,174,198,52,86,68,47,160,93,41,61,10,207,126,72,13,221,224,219,199,28,242,238,37,226,226,249,124,93,186,118,231,42,173,125,111,82,25,99,124,190,244,67,118,29,200,171,119,110,171,121,97,227,3,214,81,34,213,106,26,172,106,62,239,23,242,242,70,76,69,221,206,177,12,96,129,1,153,55,217,98,153,38,54,251,126,12,219,187,92,77,190,25,111,191,210,232,3,75,160,7,220,250,82,42,132,139,182,186,247,172,223,214,198,102,49,100,235,13,133,219,9,82,218,139,80,137,242,23,35,105,23,147,221,211,67,29,251,70,120,61,185,4,239,209,36,219,152,123,20,15,77,146,155,150,122,199,190,91,241,201,204,5,46,250,182,144,66,77,128,33,94,147,98,126,229,49,25,134,199,57,82,218,54,57,185,224,244,180,245,18,140,187,238,117,155,25,93,73,107,99,112,15,79,25,224,198,195,38,238,70,111,31,215,0,225,55,51,229,159,127,182,50,107,56,128,225,206,252,109,136,222,54,22,50,98,68,97,113,57,214,2,197,72,157,140,215,211,201,93,62,62,153,116,40,166,252,220,155,162,82,58,204,38,221,14,246,93,234,144,189,200,144,233,149,223,130,171,152,60,67,203,255,253,113,5,237,76,63,16,59,115,163,16,200,162,230,51,44,2,222,145,85,87,17,65,177,119,189,243,38,224,225,216,207,145,214,65,49,4,156,93,17,182,114,80,37,198,119,182,54,135,157,144,138,74,95,84,161,7,230,141,251,243,218,215,102,140,254,142,25,194,74,58,215,186,112,142,254,152,91,30,85,205,209,252,172,0,153,73,201,61,212,218,12,167,110,186,210,11,171,28,25,211,67,65,1,119,52,152,142,125,58,231,12,201,19,208,170,197,178,106,172,178,162,161,157,231,69,109,20,12,67,133,27,154,84,49,33,80,192,17,18,76,38,83,150,3,66,185,66,63,105,102,179,253,174,49,233,23,197,120,139,85,252,16,128,109,156,10,165,160,134,171,16,176,245,35,55,229,91,143,88,94,172,8,199,226,41,52,129,126,30,115,141,195,133,33,173,197,47,34,81,195,172,136,166,249,166,67,85,104,202,158,229,20,232,60,186,215,185,81,102,199,117,216,22,31,101,171,73,76,150,161,11,132,43,82,65,72,105,77,224,181,234,6,84,104,133,196,74,144,185,13,84,236,52,77,93,249,187,121,225,167,61,120,102,199,167,84,182,199,70,238,226,233,128,109,33,85,235,0,16,172,182,206,153,60,3,148,152,69,198,90,36,121,116,83,117,236,223,175,26,67,30,135,106,217,68,191,208,195,240,144,3,59,166,38,208,1,69,231,176,205,87,38,199,119,209,158,65,87,6,128,97,128,253,180,102,15,111,156,29,100,239,216,124,11,184,159,54,13,143,33,151,8,19,20,94,147,107,126,29,255,119,179,108,26,203,173,135,15,254,160,61,233,5,226,117,63,179,76,247,17,40,165,235,9,106,108,247,137,191,250,141,254,149,64,186,223,206,251,171,151,62,222,7,72,222,92,163,235,70,153,33,104,94,223,99,39,160,50,208,53,124,83,212,73,129,244,110,254,58,57,236,178,181,247,19,250,198,76,214,125,184,156,78,121,24,37,7,199,247,87,234,37,46,77,150,199,69,132,98,126,185,7,180,8,87,121,157,186,11,1,218,50,217,122,171,171,239,245,127,84,148,218,247,32,177,122,147,185,238,118,79,103,253,159,233,235,110,225,40,89,169,50,160,206,177,246,214,47,36,119,20,216,139,96,21,159,213,150,2,236,170,42,114,49,196,30,238,21,201,137,173,144,35,177,198,14,209,251,165,96,153,145,17,134,77,162,119,171,76,130,248,205,98,210,113,162,13,142,65,131,61,9,126,156,142,233,210,229,138,92,221,138,216,34,184,242,54,174,166,238,62,32,97,53,197,204,165,25,176,149,247,188,221,228,140,209,63,160,122,235,154,196,47,159,161,93,201,91,106,156,120,139,115,246,190,251,124,71,246,132,26,148,170,67,79,212,72,33,249,3,155,53,32,111,128,125,93,235,93,52,241,186,92,16,126,186,204,126,220,54,234,44,65,44,5,2,112,103,72,206,214,170,164,207,163,236,66,34,233,122,181,166,178,106,50,60,102,163,99,87,133,163,171,250,64,45,138,25,8,219,2,101,193,228,107,28,104,67,234,140,69,136,237,233,227,60,37,130,151,254,25,183,216,250,174,93,75,156,6,187,98,151,79,94,169,55,52,3,177,218,52,213,247,153,19,26,228,94,206,72,215,17,107,83,184,174,136,140,216,138,85,183,195,217,174,153,214,72,112,191,40,89,46,126,247,222,107,74,213,113,215,32,230,101,161,54,152,85,72,65,231,169,78,55,76,220,241,205,243,11,95,207,13,163,132,34,132,166,92,24,200,153,106,1,172,109,139,225,227,153,25,246,227,27,190,187,233,156,113,226,140,12,80,60,40,122,161,81,1,82,164,218,75,50,52,172,132,63,166,82,13,229,38,228,119,1,116,70,57,60,75,219,218,114,58,72,140,246,68,211,38,129,80,37,26,179,188,205,196,91,21,113,102,93,233,215,6,251,169,59,236,155,41,97,23,4,12,73,242,183,125,225,124,160,84,149,19,209,10,28,166,190,133,62,123,109,12,218,61,172,174,192,127,69,135,252,163,25,61,52,181,126,208,117,170,92,151,185,106,30,156,170,143,237,9,22,144,87,107,246,201,187,99,206,232,112,158,122,173,4,120,22,185,166,42,176,50,119,231,213,82,232,146,156,211,87,251,198,8,198,26,140,86,63,137,135,93,15,47,211,42,99,121,205,3,75,141,97,9,100,135,162,116,230,44,153,45,200,57,177,210,44,6,184,90,181,164,246,114,35,195,31,17,51,208,95,224,46,36,205,55,14,223,160,219,115,25,215,174,83,209,155,72,165,129,180,68,20,204,155,108,87,57,31,144,173,112,156,9,220,147,75,123,128,1,194,105,112,53,158,107,231,48,155,161,185,137,188,178,127,140,113,4,250,182,189,186,255,12,16,184,226,172,85,73,207,159,1,137,4,234,181,56,233,246,40,106,55,153,0,250,75,61,134,80,37,223,207,243,17,56,252,198,155,204,22,204,161,143,124,161,234,84,46,239,50,142,142,7,194,51,2,251,198,27,106,8,53,208,166,132,90,175,166,87,246,148,220,111,216,181,143,227,178,125,231,26,167,57,126,114,119,217,65,178,230,248,106,87,25,43,118,211,131,143,46,118,79,219,193,221,230,46,6,146,33,30,76,58,131,125,124,0,177,172,27,246,192,131,60,84,87,82,4,227,97,223,207,117,79,197,136,213,115,107,228,108,238,40,181,165,101,217,241,14,140,10,209,123,2,36,18,165,169,101,7,26,182,187,39,71,138,85,43,24,213,165,218,118,200,23,202,18,4,252,224,97,110,86,107,25,64,218,221,170,24,15,130,65,88,180,208,23,91,233,102,118,249,201,115,113,244,57,115,121,210,14,17,232,69,186,166,66,113,124,75,157,195,210,194,65,39,253,80,189,148,217,134,182,252,11,216,78,0,159,156,57,185,180,225,55,20,48,188,103,68,110,213,41,9,12,61,182,179,148,100,124,6,225,92,223,164,146,102,79,17,136,212,234,243,101,211,125,184,207,219,137,67,103,52,182,192,96,188,117,26,48,248,133,125,125,126,93,71,16,166,87,56,184,188,96,48,42,221,46,249,13,10,126,23,193,232,23,126,176,191,187,222,144,121,211,165,170,3,222,130,173,103,106,167,178,175,54,53,190,115,165,28,148,202,127,232,36,182,97,162,48,166,181,180,171,161,247,179,204,165,167,207,106,8,15,110,112,14,189,246,115,19,223,160,186,251,81,147,227,248,124,12,41,158,46,63,188,44,70,163,156,188,60,141,30,175,136,238,252,179,105,197,223,61,51,72,94,26,8,200,199,243,157,253,232,120,226,112,36,145,65,144,184,190,17,246,12,46,200,221,203,156,118,166,27,163,73,102,97,175,233,202,98,152,8,151,27,226,16,169,129,183,229,204,56,247,252,30,245,36,237,132,230,93,110,50,196,116,210,44,11,220,15,121,24,77,50,160,203,191,0,54,87,5,177,146,44,11,28,202,87,155,169,86,122,89,215,14,216,34,35,44,32,52,171,61,19,145,147,163,193,129,85,179,73,238,120,233,196,220,165,27,46,141,250,234,249,199,155,90,128,101,221,72,169,97,194,201,129,96,228,33,3,103,224,40,58,236,109,22,182,245,234,117,229,194,89,166,91,65,199,143,233,74,68,166,38,163,226,35,144,79,82,74,43,24,6,10,91,231,161,97,79,187,42,204,114,89,24,66,77,54,163,29,188,231,247,179,239,99,52,120,133,255,78,129,229,195,50,244,95,182,182,30,223,211,101,65,9,8,206,140,225,1,77,53,91,168,128,116,120,249,140,94,48,102,80,222,77,2,69,242,70,183,199,201,150,228,189,197,85,219,62,149,35,4,129,202,121,136,78,102,82,103,215,123,138,24,231,55,82,235,165,244,254,41,15,54,160,63,209,52,103,105,210,8,223,101,140,187,213,73,218,60,34,70,12,216,76,137,17,162,241,168,119,33,216,169,12,42,44,28,70,91,191,16,159,187,88,133,57,250,95,66,106,27,173,145,77,251,172,89,184,174,124,117,12,114,3,163,106,172,195,101,103,127,191,169,19,244,208,156,144,142,187,23,169,158,196,99,102,193,252,205,43,61,169,51,236,98,200,149,107,143,240,223,52,238,203,89,221,83,105,69,211,49,95,72,169,232,130,123,62,100,131,178,230,108,25,225,120,89,192,47,28,208,61,13,181,215,123,236,190,187,79,117,108,142,74,73,210,160,215,220,249,157,40,202,173,20,149,91,204,54,81,31,239,220,165,0,218,196,212,236,213,43,60,161,55,89,191,44,80,71,1,245,1,163,17,184,85,186,183,203,113,26,221,226,118,8,154,156,89,57,59,13,138,117,93,109,60,5,59,205,168,96,78,117,102,156,85,173,216,89,84,69,165,100,75,17,21,58,12,77,71,168,170,168,186,19,212,22,172,90,182,82,152,227,126,220,112,203,237,217,233,28,76,26,74,5,48,145,151,221,83,60,76,110,43,213,132,253,57,83,155,212,153,104,137,228,62,168,127,225,215,170,17,39,48,26,88,45,167,200,75,67,140,105,41,216,236,236,214,187,16,46,192,132,70,62,130,89,19,220,227,85,189,83,37,15,21,101,127,248,49,165,43,0,51,34,157,21,205,244,169,63,13,142,57,170,201,36,10,51,210,39,157,199,52,106,73,243,150,31,21,188,41,207,89,190,255,249,25,33,3,43,39,33,63,180,16,97,236,179,133,190,15,106,20,130,57,71,17,141,153,115,151,125,100,45,121,189,235,85,171,136,37,148,177,150,63,158,76,68,213,240,27,10,46,83,56,138,54,152,194,118,196,166,151,220,71,128,172,242,204,192,131,32,2,14,86,135,116,2,96,191,70,74,72,233,76,33,71,104,116,47,17,77,203,169,12,234,237,240,120,150,106,16,51,57,26,253,62,65,104,107,7,151,180,109,110,200,28,85,19,185,74,148,253,66,169,203,83,38,190,14,190,9,13,58,18,230,36,91,39,13,186,101,115,145,136,46,18,163,166,178,97,153,222,130,97,209,43,118,32,12,240,222,138,233,133,71,247,107,252,192,108,246,133,88,76,248,126,143,43,231,40,233,51,96,37,222,134,234,240,235,67,70,69,109,240,38,126,84,44,193,110,117,218,179,171,235,126,110,127,134,240,119,110,11,3,107,75,253,196,178,209,34,102,2,173,163,88,163,24,134,152,156,119,118,128,203,125,88,244,17,212,231,110,26,67,11,45,16,208,81,191,125,243,241,222,5,134,202,241,208,230,87,78,153,162,162,142,230,211,107,95,221,237,204,160,213,79,168,114,62,14,122,164,177,144,212,29,107,186,197,5,26,77,58,117,195,174,230,61,47,242,84,116,127,186,90,40,80,191,175,155,90,50,41,41,233,112,118,214,207,228,13,105,180,202,223,248,114,200,141,233,18,225,237,166,93,111,59,134,210,96,165,143,1,169,42,206,8,61,59,250,139,45,193,224,215,220,185,28,74,5,188,230,151,145,57,97,98,26,66,209,172,122,184,30,72,90,124,106,68,159,117,121,0,110,120,112,204,144,90,136,152,53,222,241,41,51,243,6,158,182,165,8,60,213,46,179,95,211,20,72,105,43,91,130,92,249,189,89,13,102,41,180,26,161,20,245,91,102,78,41,206,106,142,222,249,129,240,93,59,176,116,15,167,214,51,14,237,85,128,153,236,34,189,134,120,216,76,90,213,141,9,255,55,9,134,97,11,69,163,124,76,245,183,1,63,54,195,45,58,218,33,223,193,237,190,92,69,54,37,100,135,151,229,224,212,11,79,141,146,116,10,61,184,221,61,26,216,254,30,170,166,142,66,96,42,14,180,95,248,2,189,63,253,172,98,145,231,234,226,12,217,200,180,185,75,129,46,180,145,246,8,167,121,92,22,37,88,17,32,142,186,183,119,233,188,207,104,19,152,1,171,141,81,165,164,72,77,133,140,132,38,191,126,197,109,118,231,199,101,122,56,68,211,107,182,251,143,186,99,161,194,123,46,23,34,3,117,178,46,215,102,112,187,143,164,153,135,137,195,92,203,118,196,131,55,238,49,23,133,114,37,0,149,147,70,65,133,198,163,3,10,84,144,195,32,112,241,13,212,235,68,183,214,32,14,157,240,92,237,171,37,103,160,109,141,113,227,92,101,229,120,245,188,107,15,10,48,203,168,138,31,157,81,132,192,167,54,113,130,33,39,164,193,78,50,135,251,164,133,108,220,240,11,171,46,203,221,94,185,196,194,214,1,83,199,119,17,60,163,120,222,242,94,28,57,97,0,210,106,32,249,66,215,204,226,185,142,148,148,19,58,219,69,185,68,170,187,1,254,215,32,148,191,124,193,82,46,240,73,65,134,230,203,15,128,173,19,52,3,218,185,168,149,140,50,161,202,27,40,101,143,25,91,185,73,147,128,124,135,151,204,101,152,149,98,252,64,41,52,182,95,117,185,32,31,248,61,89,91,128,113,236,57,98,164,33,129,230,67,136,2,135,74,109,139,195,162,224,97,173,168,135,208,103,58,40,116,123,186,127,205,237,83,180,86,255,119,92,201,110,232,8,226,27,208,76,38,206,102,221,105,16,120,8,240,107,11,165,189,41,119,248,130,36,241,218,12,186,97,14,8,194,188,138,78,167,210,50,120,250,113,42,243,59,4,127,5,86,227,80,94,113,213,224,215,214,82,132,54,80,89,203,220,21,53,16,120,184,14,237,60,188,60,97,26,84,235,252,230,160,123,158,169,189,154,227,7,254,16,128,227,69,132,25,8,148,228,93,77,163,60,111,143,138,60,34,148,246,117,70,234,118,242,2,167,57,118,59,110,65,250,167,241,239,63,81,51,41,58,140,135,163,75,225,117,45,25,196,211,178,57,69,196,229,92,58,151,53,236,145,97,151,8,220,64,38,217,117,237,175,3,29,203,92,209,196,128,30,101,220,43,25,74,182,24,5,25,53,226,208,25,181,11,131,152,196,196,136,173,201,184,173,112,82,193,134,220,41,162,195,120,173,152,185,68,88,122,229,135,252,187,217,33,159,169,235,182,89,218,74,229,173,189,94,115,128,95,53,251,193,146,64,118,253,187,25,167,14,228,125,94,113,232,151,124,250,41,18,190,184,245,55,201,28,113,254,150,185,3,221,55,140,65,122,111,174,119,45,104,91,92,231,233,22,114,198,112,192,79,136,232,130,148,105,210,55,198,14,16,38,146,242,74,20,153,17,76,186,68,148,96,170,118,151,206,101,215,215,229,137,64,116,170,73,31,215,161,43,200,183,239,189,124,156,176,147,161,51,77,131,229,109,235,221,27,153,25,187,181,7,230,100,55,47,218,55,77,170,212,26,234,216,45,18,94,193,17,209,186,147,27,25,212,255,145,172,100,79,15,48,110,255,70,27,20,93,194,200,114,203,150,51,227,107,100,225,73,253,76,233,201,85,84,154,194,124,158,194,173,21,174,32,57,154,120,227,200,158,33,25,236,49,113,150,95,40,167,82,80,114,227,229,231,234,157,109,250,221,193,237,100,161,6,83,130,58,48,40,146,112,27,165,99,197,46,86,103,128,31,191,32,104,201,148,78,124,220,63,21,159,146,58,116,73,200,13,27,92,62,122,213,216,216,12,209,106,224,221,207,179,207,117,29,8,188,50,172,153,55,216,3,96,208,215,8,13,166,97,172,92,167,81,19,16,253,131,90,170,86,128,7,165,142,72,195,201,80,34,10,59,164,32,7,50,214,34,221,67,199,21,251,119,56,183,189,34,10,155,172,253,220,31,230,0,57,245,127,113,74,185,248,130,253,26,183,126,98,218,243,97,130,216,241,43,15,94,119,32,2,236,18,81,192,16,141,198,93,70,179,170,90,105,240,20,78,208,209,197,127,105,205,181,6,48,73,191,151,218,175,202,173,178,234,100,208,203,162,248,17,189,207,225,17,185,141,249,169,221,191,151,109,212,72,127,73,214,56,31,191,235,140,89,246,221,1,52,21,123,14,89,239,222,252,243,235,109,4,55,111,164,190,85,106,172,3,122,194,241,68,106,171,40,186,189,226,236,212,151,139,39,210,116,44,56,199,55,148,42,88,133,142,202,148,26,168,99,165,127,31,114,145,159,23,243,51,231,66,203,137,193,62,16,212,62,3,142,143,95,106,55,127,210,214,40,232,67,61,193,39,193,195,1,227,6,231,135,80,95,21,198,247,167,193,224,165,162,104,197,16,181,33,194,90,17,57,4,28,245,19,234,139,199,151,37,127,170,73,34,239,136,172,88,137,252,192,43,249,57,164,130,2,13,249,6,195,182,216,99,19,78,214,120,106,248,106,96,157,86,223,231,96,102,53,242,97,219,100,63,213,144,7,157,94,101,61,122,124,117,202,52,57,96,195,88,124,109,112,134,63,128,204,4,143,242,250,151,249,145,34,61,97,168,171,212,85,78,139,75,5,190,61,17,149,166,218,185,181,123,137,216,45,84,4,200,62,19,152,40,159,101,241,78,98,143,71,138,240,63,108,5,129,45,242,26,211,70,6,171,43,154,146,51,65,106,104,128,120,158,70,59,202,41,241,147,221,74,143,32,249,80,232,60,61,197,58,114,221,12,121,110,144,91,191,55,8,65,121,10,23,206,141,189,125,6,36,162,9,142,136,150,85,217,164,112,48,66,187,32,70,233,194,189,106,238,138,195,180,78,166,64,67,3,149,58,148,6,12,28,202,242,105,6,167,250,61,227,180,65,45,196,63,44,31,91,39,41,179,150,66,218,178,127,2,218,58,107,166,106,249,221,90,231,205,151,43,16,207,243,197,12,79,57,140,11,180,22,208,142,155,84,77,117,182,70,94,59,30,229,64,47,98,77,248,72,94,174,118,231,221,236,25,62,154,230,83,17,46,2,101,179,134,67,172,18,191,207,14,216,140,61,3,199,133,37,138,157,0,56,179,221,97,69,27,174,68,32,64,131,248,94,251,36,97,146,79,31,129,38,164,18,93,31,80,197,133,74,108,69,143,170,1,164,182,69,160,243,135,194,39,44,104,129,63,223,171,194,245,180,160,198,15,59,155,7,156,160,11,144,243,103,252,225,196,33,25,206,74,135,18,73,203,99,181,229,95,171,245,192,14,13,221,133,106,5,0,211,247,161,113,148,160,93,232,140,113,82,40,123,195,109,23,132,229,98,66,97,239,187,212,72,120,22,206,217,55,32,49,141,220,10,134,123,159,170,68,26,69,105,150,13,88,35,138,64,20,157,172,84,112,43,253,90,99,194,122,235,25,2,93,206,18,68,129,65,24,14,113,78,80,161,64,140,17,53,94,173,211,11,75,43,145,128,149,76,47,200,175,213,118,30,203,96,238,26,4,0,184,149,17,121,24,240,241,193,37,70,198,58,147,146,219,19,52,138,166,234,29,251,35,26,246,68,142,254,108,27,55,218,105,18,64,56,17,143,88,231,125,35,248,107,13,33,183,190,9,188,176,83,229,35,121,118,73,223,76,217,58,129,62,189,232,211,79,9,65,49,163,48,86,96,21,68,113,156,130,71,58,1,118,81,223,138,106,176,123,131,97,70,13,37,234,72,170,178,78,173,186,94,235,162,37,117,240,209,10,213,114,198,26,221,243,63,151,93,45,118,27,43,172,83,217,11,220,58,9,157,210,159,78,101,117,42,18,228,84,181,229,143,215,104,59,255,82,170,107,13,162,125,23,89,34,108,6,214,90,229,161,9,195,38,7,201,176,194,17,245,195,45,205,31,33,54,173,88,169,188,190,183,7,71,94,67,143,23,15,97,240,148,183,124,229,76,150,254,161,189,207,167,31,194,160,216,228,209,142,51,97,253,58,68,145,182,96,140,36,102,81,135,43,25,189,213,250,255,25,240,52,209,211,216,224,31,239,82,226,155,8,194,123,169,40,158,207,22,154,215,211,5,231,150,29,133,47,87,234,108,49,26,179,38,192,25,112,38,103,57,31,120,216,221,226,106,54,252,46,49,95,84,64,132,78,50,56,19,9,225,101,167,174,163,123,124,56,143,12,212,172,41,32,250,90,33,25,162,219,44,111,169,127,13,248,224,240,254,212,96,35,99,102,195,117,109,4,20,119,222,252,167,164,254,135,173,144,98,22,220,228,247,87,117,225,218,162,246,132,212,78,100,253,200,130,116,149,245,127,7,124,219,22,166,120,147,41,54,14,37,139,240,231,53,61,68,59,188,226,208,56,50,29,41,25,171,219,134,85,159,252,53,99,21,71,26,204,234,161,70,83,132,194,127,255,38,2,125,37,70,101,70,174,196,195,193,248,0,27,109,158,29,198,156,254,114,181,152,242,194,248,170,95,117,153,109,56,200,254,103,117,85,186,69,125,8,173,236,45,49,10,3,179,243,124,32,232,135,125,99,226,221,133,163,190,184,41,215,255,127,193,90,254,84,72,45,5,152,21,242,208,56,162,68,102,156,249,171,185,188,184,217,136,184,47,49,118,164,25,224,63,68,234,85,32,173,142,119,145,57,8,197,117,2,25,167,155,85,126,229,238,203,55,130,58,182,219,133,223,72,9,141,114,4,63,6,4,202,3,168,206,176,64,255,30,160,215,209,169,177,112,143,80,174,59,228,89,179,114,100,72,9,209,227,83,71,96,233,240,163,194,252,194,137,27,141,198,191,44,45,110,250,70,220,65,154,171,203,88,250,110,128,119,124,51,84,215,9,91,242,220,60,144,53,43,67,145,90,27,152,97,115,48,234,121,73,136,167,233,242,230,90,24,38,123,193,118,58,187,48,191,31,120,81,159,225,216,116,54,79,136,5,66,176,189,238,209,133,24,138,243,6,159,221,138,79,243,74,156,44,186,196,238,89,214,94,41,216,155,5,135,82,209,88,10,85,108,99,86,197,245,168,19,231,203,18,250,155,8,68,7,247,20,4,117,82,230,245,195,223,18,199,218,234,166,233,69,240,169,55,13,7,69,187,170,253,59,222,72,150,4,94,150,149,139,96,95,133,25,53,134,192,61,213,23,245,193,63,27,35,146,175,193,136,153,173,197,171,36,33,170,98,86,172,125,59,128,20,151,54,110,1,185,28,18,150,135,97,147,163,125,149,29,254,211,223,159,229,72,9,61,91,167,177,180,230,206,126,21,164,105,78,49,124,250,45,92,72,19,149,161,123,0,58,121,194,149,156,74,184,189,26,143,188,64,164,175,85,144,36,3,199,152,179,204,116,29,62,143,1,69,83,130,56,250,66,250,0,223,36,56,72,161,114,215,165,118,128,123,65,67,165,93,19,116,11,117,6,108,134,171,104,196,217,25,34,236,252,120,221,15,174,110,222,144,195,133,8,209,125,52,161,112,28,178,170,242,139,139,111,36,24,73,55,179,253,188,24,128,208,97,47,251,21,68,176,124,180,244,250,144,133,139,140,4,216,5,186,114,78,34,216,8,78,111,69,179,14,218,156,43,85,251,123,233,119,179,56,51,28,216,66,91,29,134,158,67,5,91,42,53,28,10,95,81,61,161,54,200,100,28,31,75,77,163,169,228,28,185,118,169,143,34,134,37,253,236,45,194,36,119,163,246,113,77,191,87,151,9,91,68,210,214,177,2,249,85,2,39,234,35,57,228,40,225,202,242,133,178,60,117,222,17,93,164,64,236,117,115,237,223,48,160,71,231,227,161,63,140,213,153,147,56,16,19,46,18,147,178,129,65,32,5,100,73,95,36,107,71,155,172,245,52,250,157,81,244,190,6,232,116,67,142,253,104,137,99,49,77,12,134,191,8,190,43,205,157,216,1,181,46,10,33,92,17,250,18,126,185,32,40,45,146,19,160,173,98,201,87,12,82,104,134,167,71,204,185,216,176,120,17,200,2,233,103,133,236,10,50,82,29,246,187,48,2,179,155,49,222,88,79,104,189,154,98,138,224,54,144,94,229,85,112,74,27,78,39,250,187,120,175,27,10,109,203,98,166,179,224,53,251,33,87,186,170,9,142,25,196,57,124,43,189,228,224,96,58,196,64,240,244,212,73,148,103,157,233,80,192,198,151,151,27,255,191,197,210,168,102,85,203,110,81,168,81,20,243,174,130,34,218,243,22,225,44,109,11,181,26,30,155,123,28,131,176,11,12,242,129,190,16,115,147,86,225,158,44,233,170,246,250,68,224,96,204,101,66,221,69,248,11,6,184,220,59,180,120,71,90,119,88,150,149,57,210,3,20,33,51,219,112,9,63,4,8,186,176,53,124,199,130,202,139,125,228,107,157,140,167,25,99,14,88,84,144,226,84,138,233,70,155,135,30,48,222,134,19,23,132,38,219,39,52,0,206,254,177,148,18,138,87,111,192,138,243,95,28,167,103,88,180,6,5,228,36,125,52,21,66,214,121,128,201,33,9,213,227,146,172,103,135,109,21,18,1,218,21,220,180,227,83,56,182,208,131,209,32,212,39,152,245,160,231,195,242,22,234,33,171,29,14,233,227,13,91,252,239,57,132,248,25,189,112,4,169,80,235,7,118,89,46,239,86,0,176,133,165,8,83,23,149,214,131,78,151,1,187,82,249,217,20,32,168,208,100,6,85,41,130,242,245,170,60,198,146,211,250,161,201,46,161,188,12,248,248,239,224,147,121,105,64,219,141,156,210,233,223,105,50,158,196,8,144,72,80,140,89,11,214,19,214,69,147,19,101,164,52,164,87,224,162,77,132,193,214,117,247,233,38,68,133,154,220,87,141,83,83,205,175,244,70,113,199,193,2,219,187,125,92,16,91,52,226,89,218,90,228,119,62,9,204,237,46,103,93,99,239,121,26,24,173,117,152,250,144,27,8,31,5,45,192,51,56,100,73,64,130,32,190,212,250,122,219,129,33,227,90,150,96,225,117,75,86,139,75,68,124,168,77,105,46,80,50,230,133,80,209,226,183,241,217,140,9,53,176,254,131,251,221,178,176,107,167,144,170,0,96,99,59,96,203,194,4,162,90,206,182,51,45,158,168,90,230,155,101,110,12,227,188,11,183,227,89,144,36,170,200,141,244,154,136,52,160,84,105,8,178,98,90,250,211,145,124,77,197,38,198,186,221,156,238,169,93,222,133,251,146,186,226,64,119,204,154,216,19,9,4,185,235,81,74,126,240,155,41,14,192,116,130,26,1,250,124,141,171,239,104,195,23,150,142,16,184,23,255,78,92,145,7,65,2,231,128,241,71,61,144,138,149,203,227,216,136,82,103,230,234,181,60,198,160,65,17,242,56,140,93,148,177,138,236,37,182,68,87,82,45,61,17,29,174,157,183,198,131,55,44,24,246,42,250,2,187,16,215,214,143,17,188,20,240,222,186,20,229,189,76,50,2,32,206,114,156,49,229,96,28,148,42,4,168,112,221,136,102,131,110,161,232,240,38,110,234,77,125,64,38,238,114,27,43,20,87,229,131,109,93,119,185,239,59,252,214,38,78,62,79,224,19,152,64,122,79,61,241,118,98,8,206,94,126,131,227,55,148,149,16,176,45,155,48,232,86,21,118,114,157,58,148,134,181,19,52,111,168,10,57,109,36,193,38,190,6,120,12,120,46,177,176,71,207,219,21,20,228,124,142,101,83,156,227,222,23,184,119,32,82,196,205,63,204,185,164,248,98,218,181,141,89,215,73,218,99,10,62,255,41,115,130,81,157,88,74,169,119,145,133,189,67,144,55,4,106,90,26,101,39,193,216,87,249,125,146,172,58,243,60,125,127,44,180,114,200,75,83,128,171,7,126,217,129,89,78,52,92,61,204,194,246,53,116,99,54,105,139,246,249,60,26,78,152,210,223,52,66,71,104,98,23,66,113,116,240,249,20,80,112,222,83,22,213,234,93,139,217,194,218,165,52,235,196,29,24,95,248,69,244,81,110,33,88,73,47,141,67,30,40,56,45,130,208,146,25,143,204,61,165,138,128,81,208,135,113,90,53,55,102,125,9,165,41,179,49,254,125,163,87,83,70,166,59,22,217,77,198,100,108,47,247,145,2,32,237,106,120,89,29,248,50,82,2,52,237,34,21,90,151,248,146,156,238,62,200,239,12,92,146,149,28,175,67,208,66,137,254,152,236,100,243,205,73,235,40,225,89,155,177,88,139,182,253,133,136,26,2,141,168,175,6,119,206,10,179,149,32,196,143,99,174,200,197,115,151,43,81,32,43,243,144,191,214,64,226,164,175,15,97,248,191,34,107,10,112,214,163,228,175,188,209,177,16,107,90,108,239,92,157,103,13,157,18,251,10,72,217,73,229,147,116,143,19,148,126,3,49,48,12,173,235,65,96,118,146,200,49,227,7,173,9,0,52,92,23,33,166,236,81,39,133,50,98,250,253,54,230,123,96,174,180,35,251,62,226,172,84,50,14,253,235,218,121,195,134,109,173,42,26,86,156,94,14,69,26,199,179,225,237,65,42,184,67,8,33,72,162,142,185,49,84,178,181,176,13,180,41,249,5,123,131,182,29,107,218,192,47,162,30,33,185,27,61,47,181,196,127,139,40,152,25,100,73,254,161,19,186,94,179,68,152,201,220,231,230,78,94,121,25,226,123,203,146,5,75,39,208,192,129,231,190,212,93,117,96,153,91,37,115,229,136,231,130,128,34,254,202,162,51,133,33,124,190,139,185,44,126,174,176,176,59,11,237,163,72,20,78,211,102,222,150,77,5,162,211,155,192,168,58,198,200,74,242,232,91,203,216,185,164,14,72,192,27,166,240,54,127,213,16,4,255,48,45,55,213,233,35,80,239,231,168,204,178,17,44,213,174,111,207,47,83,167,84,197,5,100,192,27,182,50,205,168,78,157,53,221,116,19,14,248,239,194,238,231,150,170,32,208,145,213,252,200,132,146,125,160,10,100,195,18,188,194,180,206,115,14,25,108,78,129,24,201,118,49,201,222,62,79,214,153,43,231,147,124,239,161,106,23,169,172,42,196,96,4,195,85,107,248,128,172,128,106,53,252,5,50,208,48,1,83,109,156,224,227,32,57,194,128,143,229,140,253,18,172,166,221,159,249,35,165,249,76,125,50,54,98,191,139,230,89,105,253,63,72,207,253,11,94,255,189,140,76,7,227,100,101,66,27,212,179,132,244,4,22,167,111,40,101,127,204,198,19,204,255,125,89,106,226,94,170,142,118,9,85,67,131,154,15,114,109,171,155,70,156,239,105,229,56,56,231,210,192,135,192,83,72,53,16,126,225,52,32,22,44,218,40,232,78,78,105,96,93,187,25,236,194,42,41,19,50,220,190,43,189,252,77,253,97,56,13,253,53,210,148,32,184,37,206,202,3,88,45,204,118,113,14,65,36,36,213,157,122,119,71,128,246,172,167,234,252,180,71,102,0,45,33,49,178,141,77,48,51,246,12,0,50,243,185,130,35,14,248,48,105,242,110,242,168,166,43,210,230,179,253,140,33,115,137,88,151,19,52,107,30,31,221,13,74,163,70,95,140,201,178,19,28,221,155,182,58,117,174,29,24,189,5,113,233,133,148,187,189,107,206,20,172,134,140,99,237,61,29,51,223,100,230,15,220,238,186,22,192,104,6,227,191,26,251,255,104,127,202,30,76,47,226,152,193,16,253,46,10,223,47,120,157,77,117,103,220,81,7,137,207,169,9,41,94,84,230,197,237,170,224,177,193,121,225,49,107,117,190,246,124,67,134,76,46,116,125,2,202,205,86,60,173,72,137,128,205,145,5,89,245,133,104,161,50,155,247,110,55,16,132,9,244,168,11,12,177,16,117,114,200,18,218,177,64,197,153,172,81,111,134,82,40,57,142,147,150,105,106,44,23,178,129,137,174,100,69,184,195,82,0,60,236,50,243,106,17,188,142,99,234,32,159,45,13,164,242,14,194,161,232,159,229,88,64,214,180,199,116,134,90,166,20,14,237,183,237,75,119,168,161,144,245,221,38,249,215,31,209,116,235,49,246,116,159,192,95,72,153,234,18,182,12,75,218,46,154,219,179,192,78,226,89,176,226,16,93,141,52,110,187,12,73,230,252,132,51,227,19,28,34,43,72,167,46,227,132,128,252,163,115,8,22,119,68,178,68,136,38,255,116,64,192,14,93,9,5,82,191,46,74,242,94,80,226,239,5,120,186,245,208,249,75,143,232,62,21,254,79,188,240,226,154,117,231,3,172,46,89,102,120,23,238,114,42,141,124,29,228,157,40,99,66,103,36,146,179,208,202,73,205,61,185,185,102,107,2,152,235,255,26,42,179,241,39,118,221,61,130,33,52,71,218,55,157,97,59,253,55,196,93,66,85,14,248,173,72,109,139,74,204,70,20,6,195,204,235,204,28,100,239,99,163,2,141,235,42,66,162,24,109,225,153,4,62,111,101,121,103,205,220,50,61,182,7,138,198,62,34,187,53,162,87,194,65,86,36,202,117,133,99,6,149,226,90,209,80,249,117,41,151,31,76,209,156,73,116,46,211,132,174,233,184,28,110,196,55,120,19,11,206,243,32,171,84,28,238,194,2,29,222,98,164,132,207,75,252,144,155,119,71,152,170,166,73,136,18,24,213,48,82,219,134,253,32,92,212,97,189,153,166,160,254,18,192,25,153,39,200,252,141,60,239,10,148,171,199,186,153,111,23,191,33,86,148,212,121,199,195,68,112,192,213,188,51,80,186,41,231,215,240,225,67,154,11,5,27,167,135,73,144,23,17,120,8,224,186,232,55,196,61,254,13,231,20,149,165,36,215,40,109,205,22,175,129,127,216,155,47,188,59,24,95,160,202,69,136,168,253,98,244,233,130,130,116,248,40,168,102,120,186,16,182,139,114,144,51,164,23,253,70,148,13,61,237,22,211,28,84,27,173,220,103,39,165,99,241,252,59,202,135,197,67,203,52,185,22,128,37,21,183,153,29,152,32,132,181,218,15,229,40,56,161,204,46,155,120,67,76,82,139,119,41,81,94,89,224,243,219,25,92,129,95,239,226,151,117,45,162,64,165,145,229,118,172,154,9,88,75,126,99,150,203,61,254,8,153,179,88,160,251,208,88,148,159,143,231,192,139,60,198,69,44,228,49,211,213,191,154,89,49,158,224,177,207,74,31,176,237,245,6,73,222,3,10,121,179,222,26,94,164,116,229,8,137,215,73,133,121,34,87,125,64,124,247,251,33,213,132,113,36,122,171,172,54,183,152,35,75,4,109,180,50,73,89,6,154,44,175,43,137,22,223,205,161,230,204,179,53,48,251,28,9,148,129,228,72,23,239,166,250,80,76,74,116,21,143,85,191,90,3,255,127,246,240,0,122,167,66,84,229,36,248,242,144,253,64,249,184,115,103,174,116,110,176,57,148,159,8,112,154,17,66,215,81,118,169,225,179,226,155,180,116,248,25,230,15,241,141,46,192,20,85,195,125,255,87,19,171,235,205,50,153,164,73,110,225,40,161,111,70,177,56,120,196,222,118,111,16,172,177,44,171,84,115,96,61,247,101,207,108,15,207,39,251,148,255,32,62,197,132,204,168,124,62,68,67,41,28,157,74,145,42,99,131,66,235,56,173,213,29,108,181,239,2,43,57,27,142,176,36,201,102,52,184,99,124,101,220,129,212,73,119,14,59,65,54,102,233,141,154,44,90,28,174,24,237,146,249,54,31,113,138,209,184,189,134,205,110,28,113,215,173,207,254,185,118,118,202,164,169,235,146,203,170,192,90,220,101,138,96,78,112,105,161,220,248,176,187,37,95,204,123,40,110,156,129,241,143,14,208,250,142,124,157,52,253,40,194,242,132,167,56,200,56,114,39,213,218,155,189,194,95,63,34,168,136,126,241,230,49,18,167,170,84,92,4,194,111,118,99,180,90,116,14,34,142,74,212,26,223,154,226,63,196,199,83,111,122,177,111,9,165,71,157,22,107,108,19,131,130,38,255,147,33,231,162,95,242,67,37,40,172,4,87,65,116,172,202,213,246,238,153,46,195,75,97,190,144,162,17,240,245,15,46,169,229,108,231,39,132,129,171,87,172,230,86,124,96,203,236,164,81,233,253,186,155,2,68,243,34,186,216,189,181,60,151,92,181,177,153,38,163,111,163,137,88,25,135,234,19,212,174,138,159,0,78,195,21,215,191,201,16,119,223,0,5,242,0,162,172,223,30,213,145,170,254,38,67,243,1,126,212,144,169,95,139,28,108,242,176,86,78,224,209,170,173,188,83,200,253,134,132,12,48,164,31,205,71,74,27,255,30,185,218,105,74,238,186,76,251,142,125,168,177,163,200,228,0,230,130,56,97,122,191,214,180,60,127,98,0,33,105,8,159,19,56,201,141,90,109,17,17,95,91,48,127,158,248,164,175,14,176,189,157,142,241,21,90,221,190,71,46,21,98,116,90,142,119,121,157,93,134,91,138,148,143,34,23,5,24,134,156,132,167,183,144,235,118,123,228,136,90,148,208,65,0,48,157,201,180,2,64,219,104,144,65,169,157,150,188,65,103,13,50,67,181,37,47,231,29,60,55,111,170,173,48,39,197,19,178,13,31,162,179,41,250,46,8,193,95,137,225,114,129,159,63,119,38,80,225,214,94,182,13,3,93,211,92,26,47,159,94,226,96,214,215,126,180,82,112,153,23,194,104,54,184,186,175,137,93,74,29,70,62,88,161,2,230,185,80,209,220,247,201,248,180,55,58,168,15,239,181,231,54,200,144,99,242,203,132,75,116,215,92,161,242,209,31,72,10,35,10,36,241,175,72,240,38,80,126,72,114,106,233,249,34,229,203,154,139,226,236,4,118,39,137,127,112,46,100,11,107,45,33,160,238,42,229,90,125,220,16,159,212,38,249,142,102,4,148,29,14,237,56,33,248,57,38,35,91,127,74,70,224,41,85,79,173,2,228,99,13,107,96,236,62,89,77,20,3,85,6,5,132,177,61,216,153,55,170,68,18,129,68,97,198,140,39,33,134,21,55,35,23,16,75,58,135,207,206,89,254,169,161,145,24,89,167,75,41,196,117,62,239,4,246,194,142,246,94,122,19,163,139,236,58,212,180,153,115,245,193,250,38,27,77,95,96,86,33,145,244,231,4,26,147,106,13,247,108,234,121,167,77,46,116,34,224,44,16,240,193,253,49,232,220,199,4,37,51,85,155,72,7,190,182,76,143,106,24,48,173,50,244,225,34,69,33,5,183,145,74,177,35,52,218,170,29,221,76,84,170,130,126,231,155,20,187,193,138,22,241,170,242,102,254,28,59,153,45,129,182,191,145,108,33,5,53,99,208,189,77,155,250,59,197,153,222,29,150,44,155,152,33,216,120,181,106,240,75,83,116,51,83,111,223,91,184,126,89,97,199,121,135,207,234,151,13,108,11,58,193,123,35,7,244,170,139,47,137,4,114,201,146,227,212,55,40,217,174,98,216,82,101,64,118,92,12,215,111,145,181,253,6,8,37,170,178,48,226,53,115,132,166,198,231,33,218,119,84,194,251,231,182,76,17,159,252,94,241,178,75,255,67,216,39,20,253,78,102,188,244,55,158,60,43,140,232,243,174,235,24,88,64,182,0,79,200,146,58,42,71,140,0,66,160,127,242,234,97,45,182,210,166,85,192,5,95,249,229,178,109,185,154,245,83,159,128,212,14,181,80,112,29,194,21,97,129,47,122,111,173,90,174,139,199,172,245,157,11,188,92,58,60,252,168,102,51,61,232,7,94,222,218,49,32,200,132,53,14,14,59,178,42,125,66,203,79,98,71,42,180,150,27,215,90,27,31,85,203,252,77,233,105,160,31,166,23,47,1,187,107,108,231,24,205,159,30,247,234,140,247,163,96,130,72,202,122,173,209,127,121,13,63,59,201,115,170,77,210,218,122,255,241,83,22,105,223,114,198,251,195,94,169,145,221,188,131,223,224,46,95,197,3,126,50,27,98,248,80,181,109,102,185,74,253,247,84,117,89,18,247,69,31,168,246,92,253,96,66,38,159,53,114,197,208,49,180,122,70,0,133,127,204,123,107,225,225,196,74,248,201,148,183,144,159,91,17,179,169,150,131,128,73,0,67,177,67,243,187,213,143,102,160,105,128,49,58,31,139,64,55,84,56,69,228,41,132,225,94,215,112,61,96,173,242,156,181,52,2,197,161,74,218,183,143,154,109,247,116,86,212,143,213,201,111,164,178,76,219,113,151,148,17,111,51,236,24,145,13,78,64,5,37,169,88,18,40,160,97,107,39,215,195,203,23,198,134,164,151,199,231,60,95,176,121,80,111,161,84,106,25,174,72,91,50,71,125,121,117,34,130,39,43,193,153,184,103,31,133,122,4,186,63,24,181,226,232,210,23,83,73,198,107,203,147,2,155,71,107,16,162,108,86,73,210,51,2,48,9,244,62,54,16,116,183,213,232,107,76,34,25,0,156,99,208,207,10,189,241,43,145,17,95,211,228,55,83,63,164,59,126,30,161,29,37,100,43,182,44,174,156,179,97,139,232,1,222,67,183,225,26,101,89,214,179,229,208,168,92,80,248,202,99,149,29,46,8,62,148,133,21,106,46,204,186,234,206,58,14,207,155,33,130,136,52,72,195,165,148,85,252,82,215,193,1,182,84,104,142,175,181,26,81,252,122,191,159,24,19,72,63,219,200,49,57,57,217,50,162,247,194,24,241,169,18,112,194,141,192,39,99,165,139,224,251,119,22,197,240,135,143,245,170,183,194,81,12,156,209,75,175,62,22,236,151,217,219,198,189,186,169,222,202,178,13,89,110,185,4,224,102,140,211,56,157,11,216,32,3,121,207,241,212,10,93,168,96,238,111,173,233,173,164,178,135,18,150,162,220,196,249,153,244,45,230,188,252,20,39,16,30,174,60,124,5,39,120,145,249,162,23,113,156,149,12,69,229,62,98,144,101,115,113,48,130,176,88,46,173,110,41,246,110,15,213,13,230,86,48,96,161,180,14,174,220,235,105,193,156,216,255,12,97,117,66,29,27,227,219,92,78,237,229,214,77,182,47,37,139,209,72,107,38,4,34,14,160,76,165,179,106,41,155,217,236,122,45,242,149,36,93,77,167,8,170,116,13,118,14,193,111,124,29,26,38,122,4,92,118,169,96,34,64,211,251,20,89,136,236,149,175,119,28,205,207,110,153,89,199,146,132,6,69,27,11,11,158,28,163,60,112,229,220,174,100,100,132,47,230,121,213,216,239,50,87,2,141,165,208,78,59,101,202,203,179,22,28,180,127,28,168,19,48,176,241,60,228,215,50,216,160,180,118,19,155,245,106,224,121,130,175,250,151,43,108,199,244,249,71,124,66,182,233,185,41,217,88,3,169,247,194,228,73,159,241,21,65,168,52,106,177,31,199,128,136,183,208,218,96,92,112,17,0,165,101,136,80,234,115,214,38,128,3,87,165,234,112,121,203,17,248,168,122,150,133,140,249,34,81,150,201,120,70,220,174,70,153,114,172,88,16,183,0,116,114,131,243,254,214,154,4,53,218,28,228,41,94,133,194,81,177,145,23,73,120,186,194,137,26,8,119,135,15,253,97,249,55,241,202,124,158,182,28,152,119,2,160,33,215,142,181,182,185,217,16,174,137,203,137,10,221,159,72,113,150,37,159,16,237,108,198,65,18,11,201,133,247,125,83,206,86,42,150,123,166,35,135,248,18,251,140,16,127,50,186,205,4,37,98,47,131,86,86,48,233,254,183,121,5,98,2,32,205,90,224,147,224,76,29,234,166,225,78,241,156,186,40,250,185,60,54,208,160,152,35,72,51,207,143,185,111,114,202,200,6,247,53,17,169,164,62,101,13,216,27,2,232,110,5,209,132,202,173,99,190,202,80,155,68,128,1,96,181,30,156,210,218,84,154,137,148,153,224,29,8,30,29,143,20,186,8,229,178,104,184,178,159,236,189,56,28,78,134,3,240,42,157,16,193,174,103,243,142,1,9,23,253,127,49,228,30,71,76,100,98,84,108,224,118,153,139,187,60,157,220,176,124,146,104,50,249,196,110,158,32,73,236,197,158,102,164,191,216,208,19,123,112,49,104,88,12,87,44,55,248,35,250,83,21,160,86,229,28,33,165,120,108,220,93,136,173,8,194,188,68,107,143,140,194,15,195,86,239,156,68,157,240,79,77,10,199,81,20,20,176,253,154,20,210,32,247,92,198,212,194,40,4,230,223,238,204,8,60,251,156,79,195,169,103,96,236,51,108,78,2,186,21,171,84,253,135,79,215,242,13,129,208,56,214,71,40,180,213,246,213,214,87,93,45,81,153,68,18,79,18,227,81,190,129,241,49,133,241,131,118,63,128,209,206,232,163,62,95,47,66,67,172,64,49,148,89,179,73,98,84,175,97,4,23,128,180,154,27,158,224,16,20,242,137,55,183,141,50,193,180,9,89,103,201,117,120,246,93,116,255,160,101,47,210,191,198,98,46,124,24,170,62,4,217,225,45,52,92,160,143,59,158,24,191,114,126,131,141,249,108,102,231,231,246,153,251,147,50,37,133,218,14,203,126,235,134,54,78,230,126,133,120,201,19,48,89,60,213,184,142,215,210,64,14,129,159,164,86,97,249,138,88,181,201,150,44,51,218,181,213,52,237,129,122,52,10,115,206,73,172,100,91,98,188,86,182,62,102,183,168,222,228,132,117,88,45,55,4,22,42,46,79,213,45,48,23,122,28,80,225,138,143,103,246,71,223,84,178,80,150,56,6,149,95,252,193,23,164,90,81,168,125,89,150,134,138,205,212,244,241,167,223,236,36,150,21,205,191,5,195,172,155,58,223,183,212,78,208,134,86,118,99,61,139,103,204,244,122,80,129,47,75,104,107,40,187,201,68,57,168,18,12,99,243,24,113,54,36,237,112,12,191,39,191,133,204,2,111,111,103,182,169,17,32,185,31,27,176,229,185,26,192,41,4,120,172,78,248,91,32,205,213,15,93,26,143,8,86,45,170,184,143,154,197,98,116,191,236,128,84,253,66,224,32,4,182,122,134,187,244,147,252,44,77,42,15,246,168,53,102,165,126,68,178,36,157,205,1,253,48,61,75,39,80,209,85,107,91,86,140,193,73,97,138,89,10,51,222,79,150,0,245,15,59,124,134,161,207,52,83,231,215,41,240,3,102,208,230,35,186,214,117,172,65,187,72,40,190,33,179,211,243,203,73,3,218,119,88,115,80,113,181,216,180,253,166,83,250,30,55,185,236,227,93,211,9,193,55,219,168,125,86,8,178,109,245,54,12,6,153,224,195,112,140,221,128,125,148,250,164,15,50,231,239,177,147,160,79,244,225,154,255,62,109,57,188,216,115,186,146,104,122,180,118,211,217,81,247,200,56,234,23,242,142,251,251,57,193,69,97,0,129,201,131,96,220,87,165,100,243,34,7,177,108,3,108,222,146,46,53,223,47,33,222,209,30,212,13,231,105,105,229,253,90,167,58,128,124,109,154,131,75,172,208,44,36,75,50,43,247,134,193,139,14,162,116,40,51,45,198,122,246,165,199,60,236,103,49,92,15,216,219,66,205,180,97,202,115,48,129,167,135,22,13,58,36,154,113,101,238,138,163,59,19,61,161,38,35,82,218,143,242,30,222,198,127,83,62,145,152,37,155,238,134,114,95,147,193,185,11,233,135,252,35,154,101,169,183,74,66,144,177,180,91,74,243,29,253,136,13,86,175,81,106,31,254,183,212,64,20,75,38,127,44,80,62,58,168,203,181,214,141,39,196,144,21,176,113,247,251,7,22,245,87,24,135,240,171,71,113,197,18,166,45,50,104,233,12,179,190,228,191,15,17,95,192,12,4,141,45,155,244,145,44,222,227,24,143,69,44,91,224,3,5,85,35,30,86,37,18,0,35,31,51,77,214,107,170,228,247,157,98,107,215,193,195,151,179,195,156,199,181,6,255,192,10,160,125,121,239,46,0,149,246,69,193,0,129,82,17,124,215,208,115,9,94,220,101,225,43,35,168,215,39,240,161,234,142,9,211,214,138,92,167,25,79,137,180,251,163,36,90,23,64,56,43,41,24,226,254,252,184,117,14,140,42,158,22,49,13,212,16,73,1,205,162,157,19,226,126,10,102,162,150,113,116,128,85,198,109,83,177,38,18,36,96,61,229,213,20,40,74,193,124,215,226,124,175,207,250,221,30,73,128,181,150,146,239,62,133,28,145,237,113,97,87,202,221,69,14,140,46,56,123,101,172,187,87,249,124,169,149,81,218,24,5,78,35,105,108,94,30,95,243,149,247,84,208,217,235,17,0,130,199,11,204,43,52,96,46,11,170,254,164,239,238,77,219,55,32,196,109,92,149,188,131,247,233,203,188,179,194,67,4,113,254,240,200,37,191,148,127,176,98,149,208,95,203,110,68,168,215,95,123,73,90,207,152,218,136,178,222,47,183,138,197,229,163,223,209,198,90,200,25,58,120,66,104,200,194,72,245,54,106,64,5,122,201,249,148,142,124,207,40,112,233,22,180,49,146,52,151,185,204,36,146,43,130,197,97,31,224,177,38,133,137,136,61,20,209,122,162,59,103,132,61,211,24,114,200,34,65,107,113,146,25,162,125,22,121,35,74,57,72,221,125,66,123,77,92,28,247,82,255,163,37,188,90,135,104,124,168,145,165,145,245,242,150,206,165,169,167,167,30,1,249,199,129,39,32,150,110,83,75,143,23,60,22,238,122,162,134,169,252,185,77,228,219,2,237,71,108,143,165,179,253,56,202,133,108,252,184,244,199,187,35,187,175,176,151,2,206,64,192,11,225,225,108,170,201,106,32,207,188,223,105,246,161,150,252,125,150,111,70,41,168,156,122,175,89,5,148,97,156,168,150,187,217,162,254,9,162,218,80,225,14,117,81,43,72,49,8,170,37,15,70,177,53,158,237,163,171,202,25,161,91,133,71,217,66,108,2,160,72,145,229,18,65,79,165,236,174,193,102,17,102,40,114,93,94,185,93,155,140,172,175,55,111,201,138,31,128,151,248,174,154,92,55,26,132,44,52,110,134,168,119,199,203,148,53,60,18,173,125,167,206,74,233,168,80,144,28,10,54,114,98,30,185,37,67,107,56,54,104,148,236,186,103,95,249,130,150,6,62,12,201,25,3,72,129,83,172,27,103,138,165,133,194,202,128,113,11,209,20,39,197,26,192,180,178,125,243,173,82,89,181,109,163,131,63,55,249,55,94,80,122,133,172,89,18,89,231,248,168,84,22,39,89,139,66,213,178,117,51,110,174,181,78,142,17,89,114,213,203,166,13,152,56,228,191,129,183,223,64,96,71,191,90,7,183,38,243,73,58,123,242,181,18,91,7,55,175,51,60,207,81,163,211,210,159,161,11,164,124,203,251,14,199,127,212,147,32,17,93,109,171,61,152,45,202,13,23,42,241,161,203,236,235,117,193,58,121,171,187,152,117,101,216,12,23,39,227,208,183,241,195,231,61,204,139,118,241,164,85,245,44,139,44,109,159,6,88,89,107,69,62,41,64,37,62,160,130,62,35,28,219,98,167,122,24,214,116,194,34,101,174,172,225,21,188,60,193,73,253,72,72,73,69,48,68,244,196,175,247,32,113,21,150,207,9,129,111,156,79,246,161,146,107,247,255,30,75,105,227,89,95,112,72,11,203,192,30,127,178,70,66,203,131,243,157,204,206,132,217,182,24,145,211,134,93,80,168,185,1,135,13,51,227,16,179,116,92,152,136,6,65,41,105,103,109,146,127,193,231,230,165,24,212,14,217,245,93,92,224,231,176,43,254,204,160,225,122,159,235,165,161,230,83,89,89,219,197,164,246,126,235,30,177,251,78,181,151,5,169,172,83,174,93,247,100,122,48,25,45,144,27,116,61,123,25,211,182,235,12,100,196,219,186,110,63,245,31,67,40,191,241,36,255,85,76,207,78,106,145,108,5,10,118,113,51,28,250,147,137,92,70,105,187,61,219,155,109,166,193,45,210,170,122,211,237,129,221,32,67,141,149,104,125,146,116,41,168,229,103,64,137,171,153,207,110,212,6,61,161,207,17,85,245,10,184,231,175,22,191,204,22,182,77,129,185,184,164,136,71,59,99,134,201,61,18,24,142,95,150,127,169,232,138,27,98,148,34,110,132,42,72,158,136,163,175,53,143,70,40,11,162,27,240,81,240,59,142,10,244,119,116,193,121,123,221,139,250,174,62,185,169,149,171,160,253,58,74,148,68,254,222,178,184,160,39,41,210,46,96,230,80,255,254,118,140,146,96,155,219,246,171,161,122,76,149,83,83,44,157,15,210,25,45,118,72,150,130,22,246,130,241,230,135,222,168,70,198,46,185,80,243,253,218,160,64,249,135,19,181,90,166,84,49,96,140,158,47,76,203,159,27,183,37,107,33,87,0,192,77,25,149,1,77,182,171,179,240,24,66,25,160,83,141,199,125,205,159,204,34,248,60,174,228,187,204,137,40,204,250,252,99,138,71,25,107,211,220,250,169,22,186,231,57,54,254,215,45,227,211,139,237,119,82,205,252,151,52,134,101,166,145,164,188,207,110,18,234,200,171,81,176,174,97,72,18,252,144,176,42,96,0,206,244,7,38,53,191,172,65,23,59,155,124,74,80,105,99,89,125,14,121,219,6,142,93,90,82,65,195,51,25,228,70,181,184,55,186,95,93,244,27,40,88,12,73,185,175,76,16,2,35,105,101,176,98,30,116,91,79,59,152,120,203,110,210,208,164,171,169,227,94,57,186,100,160,239,160,62,163,191,38,232,70,19,60,160,96,95,244,83,239,5,29,110,95,129,214,62,27,37,109,20,15,105,144,114,95,103,113,97,96,234,157,214,87,188,168,39,185,53,166,38,252,172,32,68,53,141,208,208,80,113,33,26,12,7,2,16,231,52,228,48,82,111,220,35,134,171,38,24,252,193,226,184,77,0,13,185,119,58,212,247,152,150,74,240,188,155,72,124,115,246,255,0,248,15,82,59,86,239,150,70,72,66,209,21,105,94,100,140,179,203,13,184,3,138,241,245,21,32,118,118,167,122,135,201,194,14,246,237,254,110,111,183,88,102,210,113,245,206,82,224,146,46,141,171,183,137,75,101,138,159,193,143,61,255,2,231,79,71,210,16,242,128,203,113,187,121,170,213,108,81,195,41,139,190,46,29,162,229,91,13,115,80,81,214,191,62,25,214,63,232,144,5,77,57,253,45,219,241,17,232,121,79,183,40,45,155,43,71,46,130,26,10,171,197,26,180,165,76,35,21,117,6,158,250,200,79,64,83,40,124,74,132,2,252,240,173,116,245,151,70,228,15,80,126,133,35,158,188,191,66,124,226,88,80,19,128,241,129,56,66,235,206,160,231,162,214,111,127,202,245,70,24,183,200,188,237,211,73,58,224,250,152,246,215,166,66,48,160,67,6,83,201,160,213,108,176,63,161,140,127,47,203,112,143,0,99,210,30,79,243,90,231,126,51,141,247,72,141,198,8,146,132,15,117,27,60,190,176,160,107,4,114,40,215,132,221,218,191,157,24,191,0,87,80,48,150,197,166,63,67,156,250,204,88,64,25,228,108,132,244,154,223,190,86,117,111,205,32,217,206,29,25,18,162,0,203,197,38,62,126,135,44,239,32,26,202,119,168,246,137,67,134,59,114,233,181,114,11,91,84,104,125,26,39,77,130,173,145,164,213,218,131,161,200,55,56,121,182,211,114,96,120,253,50,152,208,184,166,110,67,82,226,228,117,27,134,16,106,70,224,130,243,104,95,174,214,34,223,91,63,28,121,228,191,222,41,165,5,104,44,227,128,237,209,193,139,89,21,173,251,5,173,167,174,200,186,123,229,186,164,123,133,72,61,23,69,1,135,23,70,111,237,23,36,52,209,195,94,213,196,34,141,168,22,128,112,69,116,90,36,219,69,196,56,57,27,20,71,2,123,177,136,242,188,227,207,156,82,50,39,141,164,222,225,154,244,41,117,167,76,108,189,190,74,29,212,236,72,49,155,96,2,74,121,122,26,208,150,180,219,191,148,185,250,141,144,94,87,203,169,4,151,215,187,18,191,200,116,166,249,67,142,205,126,128,200,232,157,18,55,116,83,216,168,233,15,243,219,116,158,168,163,136,102,154,36,199,226,92,25,191,17,242,58,194,96,252,82,196,73,190,160,190,179,130,18,29,135,198,215,1,43,254,41,125,48,52,74,244,41,61,4,214,96,143,161,38,212,176,85,226,160,167,149,106,67,173,127,101,131,253,161,249,186,120,19,243,148,194,128,138,209,140,110,61,26,219,32,56,151,106,249,155,221,170,40,125,150,213,213,235,91,109,161,15,0,20,175,200,221,157,145,187,151,26,216,106,204,158,195,11,20,5,99,254,93,176,123,66,189,34,87,119,30,206,13,141,71,115,37,135,122,84,70,123,81,121,5,192,205,3,230,234,246,139,193,213,213,200,128,254,235,66,113,69,79,166,149,135,40,28,193,174,130,14,65,15,16,174,233,194,224,37,136,149,109,40,228,143,10,27,192,230,97,99,87,115,93,5,113,98,159,154,49,239,222,92,129,63,218,111,130,155,182,133,62,18,46,36,98,242,89,71,248,14,56,43,213,211,82,251,228,216,245,255,1,14,142,14,196,100,205,238,184,221,111,209,122,129,46,148,66,98,200,203,151,177,120,247,249,174,141,32,125,48,50,237,183,155,112,82,35,191,43,204,199,15,115,199,97,217,165,46,128,175,60,155,20,87,83,88,221,238,242,50,172,24,133,176,13,208,222,175,39,247,253,180,102,45,129,68,132,155,68,17,244,106,244,22,167,87,70,185,66,4,94,108,86,141,151,125,218,56,125,51,105,15,139,145,202,72,227,92,1,26,37,144,51,228,68,63,35,42,247,224,145,156,199,28,130,217,239,99,11,112,29,13,32,243,183,144,232,193,19,197,244,222,67,74,132,54,135,41,238,173,224,76,214,134,1,36,112,205,212,253,38,240,69,145,174,125,58,237,248,191,230,112,52,242,171,54,2,43,94,152,101,38,161,225,53,174,150,175,208,67,242,150,26,105,255,133,137,127,68,184,221,149,114,125,58,58,36,119,25,207,80,105,209,48,162,23,142,133,23,227,58,111,87,224,63,11,78,102,240,134,143,68,111,130,78,152,253,169,137,139,198,240,253,140,32,234,237,58,115,58,0,52,50,241,101,64,115,210,191,17,0,249,148,106,239,166,236,81,222,222,143,82,148,225,95,22,85,214,227,71,174,87,64,74,176,26,33,95,210,234,44,188,91,223,206,76,2,135,213,5,182,184,206,70,49,44,13,182,118,218,135,37,118,45,176,49,191,73,133,29,167,19,113,7,199,60,63,203,176,124,54,30,87,223,121,62,106,159,67,122,2,12,127,29,171,28,77,144,110,30,187,15,226,133,19,100,104,74,251,100,12,96,146,25,231,230,110,48,44,102,177,157,186,119,226,231,234,247,114,163,253,132,168,235,74,84,243,185,237,106,212,16,235,96,114,26,203,125,201,175,179,4,186,106,16,100,41,32,82,78,201,197,35,195,215,212,126,0,255,233,52,85,171,219,3,236,249,27,44,165,23,242,76,254,183,154,13,196,254,108,79,80,213,104,48,225,108,195,147,187,103,7,115,251,32,168,226,161,35,23,17,255,2,191,120,224,175,2,91,214,36,250,98,88,203,140,233,253,187,75,230,195,41,29,198,161,44,30,119,98,70,41,207,232,128,112,196,232,168,224,129,212,235,47,72,22,58,50,3,4,210,181,69,160,98,55,161,10,225,230,219,144,58,56,161,215,210,100,38,218,148,92,89,238,228,192,204,136,61,117,62,113,228,180,74,119,223,249,51,34,69,80,168,115,25,133,213,57,102,224,210,12,185,17,68,177,255,244,46,203,93,245,237,41,233,243,23,19,40,17,246,176,175,139,215,138,186,19,249,148,232,168,242,200,30,22,195,66,183,117,82,195,203,114,251,62,189,227,19,24,227,157,94,227,123,49,227,88,12,115,160,216,249,215,194,250,237,42,41,60,101,91,16,62,112,251,123,6,24,132,87,14,232,110,110,255,248,233,185,6,28,25,231,167,167,34,184,218,252,235,151,115,231,31,242,134,24,140,49,243,155,109,2,16,62,44,102,154,86,163,176,88,11,150,0,164,4,110,37,95,240,97,204,68,196,84,157,76,44,98,3,64,73,107,193,90,152,98,25,186,157,100,191,37,228,174,115,67,42,215,23,129,185,219,241,2,65,71,179,251,190,66,99,50,27,23,150,180,64,233,147,135,205,12,133,135,78,236,194,189,202,0,105,44,150,201,204,250,188,0,11,134,2,131,123,38,156,137,132,121,81,155,114,199,191,178,27,5,34,3,26,113,239,27,251,212,14,158,200,205,147,168,214,218,147,104,4,206,142,90,124,239,210,174,234,246,177,148,54,120,219,194,98,169,78,2,71,3,195,235,62,202,34,185,163,204,160,117,210,156,16,138,105,35,1,224,113,103,166,250,107,79,163,224,131,1,87,186,233,168,35,122,189,208,201,84,207,158,59,206,8,146,68,72,245,46,154,61,152,58,185,220,254,103,150,156,19,24,11,215,173,192,29,49,52,179,238,49,209,246,119,158,154,31,166,119,108,109,106,7,255,242,88,146,145,78,1,228,143,19,141,207,108,124,57,59,142,229,233,110,74,38,176,154,56,117,121,171,96,128,69,57,21,212,6,138,120,5,98,216,28,69,104,122,84,81,43,75,255,241,234,111,136,199,149,5,132,2,241,197,62,227,58,101,156,183,154,191,53,155,233,28,130,113,45,213,65,104,152,151,3,224,87,23,130,237,66,234,208,255,127,165,132,124,126,73,44,242,151,105,191,86,17,86,15,105,225,152,106,207,8,59,62,106,204,54,188,210,74,132,80,117,222,134,33,228,51,179,110,191,228,143,11,114,248,106,162,20,216,101,119,173,19,80,193,145,30,64,29,167,223,227,113,242,96,37,227,57,135,187,131,71,157,243,76,12,174,207,87,135,18,143,17,73,205,186,92,37,11,45,198,53,35,91,160,73,24,172,145,108,79,28,44,28,152,191,181,251,78,97,231,226,44,18,82,132,2,203,41,222,233,30,24,185,177,160,94,1,36,62,177,186,96,151,112,161,221,197,48,180,92,231,212,102,253,137,56,98,185,226,37,139,22,118,218,55,81,2,109,190,76,222,214,111,17,128,157,198,109,219,34,141,105,106,154,139,192,25,115,82,160,166,39,203,54,253,11,212,217,138,77,253,107,178,76,160,142,231,76,11,107,187,30,40,71,79,202,10,238,151,42,231,140,35,200,243,49,42,83,175,82,211,62,126,240,242,101,89,153,227,232,230,142,240,219,180,214,56,129,17,211,162,65,52,20,27,233,221,20,210,234,150,176,207,247,143,118,163,141,81,14,157,120,134,173,186,151,229,2,186,114,138,17,196,82,81,82,175,201,151,181,146,163,88,174,75,104,11,255,99,60,222,255,134,95,242,41,41,250,69,47,107,103,195,82,183,152,173,79,106,150,178,141,253,99,209,211,170,78,54,133,254,170,39,181,22,209,195,249,34,145,111,169,104,2,35,78,227,214,183,88,144,197,106,50,61,77,135,6,22,148,62,130,249,241,7,188,224,80,148,57,1,149,247,24,122,143,123,129,131,63,127,62,191,99,124,58,177,88,247,176,194,27,111,105,84,4,242,178,19,219,172,24,31,24,162,53,103,39,94,227,17,245,38,153,60,130,109,181,188,185,240,152,39,170,48,32,34,23,71,166,147,57,178,75,223,238,117,108,176,71,181,41,6,63,53,254,167,220,228,93,15,132,160,254,228,160,71,15,178,213,106,248,218,29,108,185,127,241,185,85,132,98,117,124,101,174,190,248,167,83,204,153,158,240,228,85,135,162,98,252,21,57,172,3,99,204,73,115,212,157,158,135,70,100,142,128,254,7,141,111,222,142,203,108,154,90,129,40,143,98,46,206,26,163,235,65,51,76,94,245,192,132,142,62,70,37,46,85,133,82,91,145,61,62,200,63,249,220,223,82,134,5,222,224,142,85,232,107,68,216,193,192,193,247,96,117,25,210,96,45,245,160,58,29,115,65,222,180,99,99,86,195,55,67,245,135,61,186,49,171,231,70,111,59,49,173,211,66,222,235,215,30,139,87,38,147,72,110,188,76,239,73,44,188,178,102,226,124,162,113,6,88,130,226,224,1,132,106,120,207,205,45,145,163,145,40,217,58,11,3,19,95,243,167,237,28,66,208,65,121,159,26,94,36,136,220,173,119,27,3,83,185,131,37,255,4,225,47,204,28,173,94,240,238,194,37,42,107,167,8,197,186,98,139,74,39,75,187,157,137,82,2,249,238,17,27,71,175,132,6,189,148,117,55,202,122,147,228,108,48,237,176,150,232,127,78,149,36,10,169,135,42,202,72,224,25,142,219,49,181,105,1,120,99,105,250,109,136,109,147,42,75,160,180,205,20,212,28,105,47,252,203,69,97,118,117,47,77,77,164,230,20,238,51,25,168,22,74,186,239,65,205,205,236,79,120,63,152,123,77,154,147,106,131,94,55,239,76,96,169,173,110,51,206,224,199,65,248,179,227,138,43,147,50,172,203,42,39,211,163,82,216,45,231,117,159,175,31,1,25,11,162,129,35,88,211,70,213,105,201,89,173,52,58,6,99,169,130,222,198,80,77,21,17,31,62,14,35,107,161,86,115,135,96,242,54,80,40,11,232,139,65,108,56,16,60,134,210,54,107,253,110,39,72,198,14,224,165,138,142,5,215,253,79,60,108,255,236,149,93,72,91,186,187,248,125,49,62,204,6,235,123,4,207,138,10,198,6,198,213,88,213,58,158,59,12,22,17,186,86,203,12,195,118,179,154,216,206,62,1,208,102,166,71,131,89,243,235,227,89,15,164,113,123,236,251,182,115,40,227,101,138,105,118,78,154,50,210,52,86,44,99,145,119,98,16,31,157,245,173,48,246,83,194,84,18,217,39,226,70,199,167,119,224,186,81,186,170,55,84,247,157,252,195,253,178,113,58,137,4,214,104,90,108,158,102,16,135,22,37,101,147,208,105,182,235,68,190,55,204,162,233,223,44,251,170,28,28,234,195,151,196,53,16,246,112,78,212,12,177,173,243,98,199,242,9,234,16,229,184,240,78,77,245,190,76,104,90,131,179,58,116,244,141,22,253,150,248,241,184,99,202,39,209,242,39,34,107,66,164,175,45,168,217,189,168,32,26,58,132,39,137,77,41,123,17,166,185,102,27,217,19,84,57,6,21,250,23,19,117,47,101,136,46,193,102,6,175,227,193,35,178,185,203,76,24,173,117,137,83,197,228,8,227,127,158,134,73,73,7,224,96,99,80,64,107,166,1,7,48,195,152,230,50,89,225,181,96,86,183,65,198,15,68,26,133,255,186,73,157,241,67,5,136,124,57,27,110,134,39,235,106,226,217,70,106,240,188,86,190,234,82,69,144,149,53,226,129,206,97,30,156,217,85,55,142,16,108,219,108,177,43,36,36,94,106,247,231,228,199,81,104,8,49,239,231,192,18,25,18,175,179,7,121,209,238,184,11,161,255,192,244,226,59,39,228,116,158,238,38,61,103,213,213,168,78,254,66,187,100,34,188,9,224,138,208,112,250,32,217,183,58,125,140,168,254,42,193,36,229,217,190,152,132,148,134,67,134,52,195,251,108,168,243,203,211,255,224,135,170,107,249,97,11,196,161,172,254,234,29,67,118,147,141,92,158,161,68,182,220,201,106,49,161,116,185,182,248,166,231,101,183,245,156,139,126,51,88,109,229,172,170,171,137,32,191,66,155,216,162,20,200,175,0,29,173,254,116,23,113,23,160,26,86,81,212,166,23,68,128,28,184,43,177,222,75,93,208,35,132,61,95,66,100,37,67,245,209,140,60,242,182,17,160,162,168,195,58,103,131,32,49,113,194,197,133,149,190,102,93,61,63,41,69,14,138,45,140,139,229,132,179,39,107,60,66,239,73,229,163,213,22,43,206,133,0,218,186,72,11,31,66,23,96,40,207,226,147,233,38,87,39,209,252,100,218,205,53,192,227,117,7,88,69,53,247,172,242,41,173,77,2,114,87,227,126,3,203,162,130,76,150,228,143,183,150,237,46,209,159,123,100,55,83,204,14,117,137,18,83,101,26,5,150,24,64,1,12,208,223,251,237,24,117,149,231,39,92,138,29,200,209,204,145,96,182,6,188,179,144,212,25,140,43,61,192,198,177,216,40,229,153,238,180,206,92,220,236,117,92,181,10,0,142,204,236,169,40,84,105,238,236,242,79,109,55,11,54,168,19,187,1,216,214,47,181,35,214,252,66,147,150,72,148,27,223,77,62,152,24,83,83,248,244,164,99,164,229,185,200,240,185,206,246,145,166,251,81,134,123,198,30,234,151,30,242,238,40,129,196,194,33,231,28,192,149,235,24,189,114,110,213,185,85,240,145,112,206,59,158,106,40,140,248,141,226,58,42,57,121,107,187,48,68,83,228,160,243,250,124,15,151,245,9,32,179,62,40,151,193,128,178,73,116,155,139,133,21,109,78,17,68,62,44,89,12,255,133,193,108,39,53,146,27,50,239,87,155,104,2,77,115,201,243,173,85,137,177,146,80,89,115,239,212,213,68,123,31,153,98,241,160,163,75,10,111,67,192,188,51,252,56,140,236,16,226,45,141,90,157,224,201,214,215,202,190,213,124,149,234,39,185,1,50,133,249,188,68,72,48,191,114,223,61,227,235,27,122,240,245,122,120,137,95,26,225,203,28,11,17,89,78,246,153,81,89,221,119,155,199,129,214,111,61,183,147,142,6,96,161,169,53,228,210,159,13,178,171,128,156,245,75,228,234,103,156,42,190,48,118,182,231,83,66,193,208,53,250,162,103,12,171,187,181,39,169,79,236,211,5,74,74,26,67,208,253,107,11,3,20,131,199,87,137,199,164,111,66,193,27,13,172,176,245,249,226,70,94,151,117,121,68,85,39,239,211,143,77,153,213,17,103,185,235,71,88,237,239,56,0,40,247,235,15,104,242,14,33,224,204,193,172,169,174,22,195,214,44,161,72,237,182,73,196,14,101,75,225,94,239,148,41,7,106,147,36,142,163,78,245,242,192,128,66,218,64,122,160,139,222,183,93,64,137,147,22,254,157,179,4,187,115,253,163,22,44,235,134,157,233,246,45,121,153,0,220,245,52,82,221,233,193,152,236,18,49,166,181,46,12,203,12,0,42,236,63,232,242,179,206,29,134,236,85,48,130,124,62,170,51,92,136,68,100,146,190,229,81,206,96,191,139,113,148,248,149,45,232,5,196,96,150,216,56,59,197,236,28,195,205,7,132,75,149,240,169,51,223,188,233,211,64,110,136,124,187,159,220,116,146,214,42,228,80,62,225,238,151,40,7,156,251,199,219,231,160,242,87,10,190,21,164,139,120,106,4,13,22,59,255,252,237,86,120,249,25,128,181,232,176,140,77,175,86,141,45,151,90,238,129,174,145,102,122,16,151,189,193,16,190,16,249,171,248,65,24,158,71,131,244,239,133,195,230,18,111,117,128,6,207,85,157,206,188,188,165,46,74,94,191,232,42,118,252,118,121,120,171,18,148,131,70,145,102,210,152,16,207,57,68,116,7,44,19,85,120,207,52,180,116,149,216,227,190,247,237,137,119,60,104,182,13,130,45,126,94,208,71,238,173,111,82,128,225,168,178,76,156,118,92,169,219,76,147,175,143,73,253,240,13,56,31,179,120,204,207,124,189,120,149,247,198,76,47,156,50,38,250,101,226,5,197,2,239,193,241,114,243,155,216,66,38,162,217,18,250,98,76,214,65,127,196,218,34,39,69,173,87,231,10,63,100,42,53,172,228,241,184,66,66,155,50,147,205,216,68,73,27,195,147,111,78,86,37,93,22,89,32,6,212,11,150,255,137,4,243,114,253,198,11,141,247,38,180,71,142,57,180,198,112,131,164,124,116,184,92,229,25,163,63,93,67,200,36,22,240,159,199,49,157,75,220,223,223,74,221,9,150,126,120,159,229,140,217,186,161,249,38,106,112,87,163,194,26,93,209,73,144,72,51,84,237,216,138,77,250,63,103,135,112,117,27,134,148,139,39,209,208,136,44,174,45,143,143,168,215,180,191,216,130,222,226,60,220,199,97,120,4,243,17,156,161,173,129,101,190,81,174,84,54,215,8,147,162,238,72,170,58,80,158,26,158,8,208,248,31,4,10,189,18,211,235,35,116,56,77,139,218,194,46,15,157,82,215,141,229,6,7,13,29,172,170,114,119,30,239,39,255,213,95,170,59,90,112,73,58,53,86,9,252,165,78,181,31,189,171,160,121,66,34,43,121,121,67,243,230,47,162,7,193,221,16,210,90,234,13,222,188,254,13,42,33,88,193,149,224,86,214,97,113,172,225,158,175,205,46,2,12,105,202,166,124,125,207,96,205,121,23,137,40,2,149,104,80,67,172,148,135,22,19,87,114,245,83,40,0,34,103,111,186,61,44,217,247,186,240,142,70,44,15,237,43,142,60,242,43,195,46,170,47,72,93,8,219,196,131,128,2,32,68,103,247,216,205,81,6,110,138,207,181,106,53,50,102,206,240,250,109,5,2,16,159,72,186,106,97,138,49,205,170,97,249,71,211,212,240,251,170,10,4,54,207,92,232,137,192,233,121,106,54,109,180,65,173,36,180,5,185,141,174,143,87,228,57,216,14,58,248,154,37,45,241,157,76,195,54,214,220,63,231,182,15,129,38,66,23,34,112,68,245,22,220,177,205,170,212,222,149,162,28,110,32,84,153,68,20,198,198,56,131,15,51,184,129,81,113,103,97,24,47,246,224,164,216,187,7,243,43,188,36,157,131,179,99,171,98,90,112,163,36,123,224,188,204,69,97,233,111,3,91,93,117,203,230,93,26,231,207,68,253,220,109,171,12,182,51,108,105,157,133,230,140,13,12,239,29,208,75,101,105,152,219,34,243,48,185,26,112,234,74,237,122,215,60,104,201,72,187,171,95,53,216,227,52,140,141,135,172,217,213,140,7,252,215,242,59,14,167,4,139,227,49,68,84,157,79,204,135,212,35,102,38,221,55,91,123,145,26,26,150,56,197,58,90,24,143,32,138,85,204,67,119,207,218,104,20,23,203,73,131,227,78,83,228,123,238,59,102,139,250,163,148,13,77,104,229,137,44,7,224,177,17,139,180,202,147,60,46,63,109,16,33,113,106,67,83,209,250,173,158,57,155,36,4,72,72,215,122,150,112,56,148,48,121,23,54,160,209,231,36,195,76,159,218,202,98,113,93,22,38,47,186,172,61,164,27,111,18,116,2,87,61,162,224,111,7,135,180,114,110,76,231,106,235,22,186,161,76,77,99,63,9,37,58,14,193,49,147,211,99,75,214,33,26,1,225,237,221,137,120,215,93,213,198,242,134,137,24,174,208,4,210,211,122,132,166,147,56,155,75,162,254,220,202,64,165,134,244,226,55,123,44,88,40,204,40,73,136,146,30,86,177,230,124,149,160,134,214,134,91,124,180,251,141,13,136,216,191,6,30,28,163,132,34,68,214,88,210,4,187,78,98,72,109,136,69,198,124,69,30,121,194,174,209,222,236,167,50,8,57,155,37,110,82,81,155,164,63,68,70,91,31,193,72,239,21,36,16,92,89,112,243,15,75,149,179,207,237,170,247,90,29,95,10,186,235,120,158,166,248,30,138,183,9,201,32,150,8,86,45,161,211,117,227,192,246,213,203,80,253,252,115,167,30,213,61,76,94,112,64,247,169,102,82,180,110,23,150,113,159,165,194,150,86,68,135,179,99,90,158,186,109,92,88,208,117,135,243,30,125,187,232,110,86,6,136,154,112,127,140,129,72,35,12,41,70,68,44,9,90,85,133,252,93,206,160,85,175,53,25,139,207,125,59,129,109,153,87,42,175,170,41,221,106,56,101,144,221,234,153,48,149,201,104,144,57,22,232,84,91,62,14,103,240,212,252,191,15,32,57,219,247,171,6,133,98,203,147,177,13,115,67,172,149,28,254,95,36,232,205,205,14,251,107,54,115,149,237,5,131,14,19,210,122,198,26,108,87,160,11,33,155,188,32,147,133,42,166,233,139,21,82,205,68,146,75,255,226,111,24,25,111,254,230,113,220,76,227,213,18,128,206,109,16,39,42,128,187,81,97,48,84,221,8,90,40,122,240,70,232,157,41,140,114,12,103,239,3,136,22,214,166,232,43,116,102,62,130,191,40,14,109,161,155,168,217,43,143,18,32,42,33,194,107,93,239,224,16,140,28,132,109,112,214,111,165,43,247,199,229,5,207,195,63,224,20,80,26,178,87,40,134,167,211,252,67,252,192,137,44,118,122,34,231,127,118,62,137,120,88,11,144,109,66,40,227,101,37,143,158,118,216,226,62,224,61,178,144,12,14,188,158,163,106,141,187,33,231,198,17,130,90,111,216,65,225,179,150,39,223,19,225,54,76,175,102,213,182,87,169,37,131,155,52,157,158,209,24,158,207,102,141,91,44,37,254,34,94,229,52,5,194,53,236,231,149,247,231,197,61,150,78,78,226,202,49,171,209,79,234,198,95,139,94,54,94,180,13,122,243,46,184,112,179,63,95,208,120,214,30,220,118,4,77,72,218,44,247,178,23,38,114,255,248,112,98,15,238,176,117,196,254,196,46,176,121,241,202,21,14,18,181,71,6,152,239,50,139,138,122,116,93,117,87,207,5,111,165,195,184,163,222,209,6,118,62,223,204,243,237,190,126,215,118,133,143,231,179,75,150,27,220,194,246,99,76,244,34,85,62,116,59,103,2,146,66,255,123,5,245,92,89,253,217,254,87,24,67,230,104,35,197,183,32,232,251,55,102,227,130,50,242,111,83,114,63,36,34,46,235,203,20,0,186,127,0,155,93,75,96,145,77,105,111,34,232,140,99,228,51,251,44,116,214,230,113,179,99,34,209,14,35,250,128,252,203,38,51,125,208,53,79,70,115,135,125,44,135,140,217,60,20,128,54,84,222,236,3,217,148,19,176,15,224,142,94,202,70,5,79,249,224,219,11,47,88,92,132,175,123,182,232,203,232,205,194,112,97,63,62,50,5,190,143,133,6,203,80,80,168,62,229,202,132,106,153,28,207,195,131,114,199,234,199,196,35,56,131,97,246,219,160,110,21,10,38,18,207,93,110,133,100,51,96,233,196,231,232,161,172,81,156,78,161,100,102,156,23,136,132,223,193,100,234,163,231,111,227,168,153,223,33,104,196,173,237,147,96,61,63,214,112,13,182,158,25,242,251,169,55,2,47,128,225,40,196,201,161,32,139,157,119,210,56,232,254,216,110,96,252,173,104,47,76,76,2,125,2,127,62,153,94,248,148,30,8,205,213,81,140,44,116,87,93,197,5,78,248,231,44,161,23,134,161,56,27,13,160,182,14,135,231,79,105,225,221,189,160,244,138,113,187,82,93,72,27,141,69,147,177,66,127,67,102,162,132,252,225,25,254,88,209,190,196,248,102,82,48,175,180,153,19,15,85,63,21,202,204,75,57,138,23,20,89,31,110,205,1,80,161,27,103,23,126,108,227,126,122,164,127,197,73,139,42,117,36,242,207,120,222,147,3,200,72,139,224,7,232,190,254,87,223,146,98,70,154,137,216,64,7,229,52,155,238,126,232,148,40,96,183,51,54,84,12,248,33,133,184,202,243,168,177,31,138,7,195,94,57,33,87,41,235,174,164,64,74,165,146,53,191,136,191,55,173,68,20,86,213,59,177,1,240,83,71,41,226,164,242,185,181,126,245,126,93,133,216,109,202,240,234,193,183,75,215,136,109,195,166,189,49,96,185,243,77,81,78,228,205,192,145,140,135,175,148,12,4,160,176,68,126,249,197,24,0,237,19,155,7,239,219,112,239,44,234,55,47,190,70,253,211,97,235,122,74,18,177,203,230,106,199,38,164,35,89,181,141,62,232,100,232,255,197,50,216,204,184,202,66,5,209,72,68,119,7,109,241,146,124,201,215,20,32,117,133,132,25,9,10,171,68,123,58,90,242,153,68,67,147,150,83,229,78,124,66,116,2,140,215,63,31,172,80,172,12,8,149,100,161,112,129,84,98,163,24,156,16,13,179,94,0,240,127,2,115,221,152,138,47,117,252,116,195,72,22,176,191,106,194,14,124,204,169,201,139,179,189,40,101,17,34,94,190,104,31,16,161,193,234,142,7,3,171,211,238,53,16,33,126,130,55,214,245,74,195,116,138,239,75,195,128,66,218,43,160,122,143,88,101,100,235,229,170,86,148,235,45,181,168,123,55,203,232,205,76,127,230,73,23,166,118,255,170,59,52,138,149,91,60,225,214,188,121,159,207,117,110,212,32,236,248,98,22,71,148,44,59,74,116,238,242,186,193,133,174,202,227,183,174,8,69,217,166,234,90,203,167,10,35,141,201,251,108,20,140,37,72,127,29,229,17,129,186,251,215,24,217,144,63,221,229,33,200,74,18,72,88,60,236,229,69,8,53,140,132,223,32,117,60,148,219,246,146,198,67,113,87,161,71,19,105,162,107,202,66,182,66,153,211,100,33,93,222,251,131,154,247,221,172,7,64,162,39,66,152,67,144,64,182,193,168,181,133,3,45,210,176,168,32,250,111,92,3,26,245,141,109,36,196,242,118,156,12,130,213,151,8,120,207,130,165,202,110,179,121,229,248,71,242,133,222,223,213,203,108,157,27,223,147,100,109,133,52,245,16,114,230,45,64,231,67,8,249,181,61,230,125,88,206,89,130,147,140,63,24,38,174,105,164,160,12,163,215,183,92,148,88,215,225,14,28,76,181,204,136,210,37,113,156,238,177,18,126,42,20,103,105,76,222,112,130,219,50,138,21,0,254,169,139,236,142,219,173,55,253,58,143,135,55,178,217,207,33,24,125,136,234,95,75,190,80,11,175,249,23,201,166,7,113,229,111,208,208,35,6,33,74,137,182,82,87,28,148,16,116,224,22,9,216,213,223,210,100,225,205,160,17,170,149,99,69,182,166,122,48,202,240,180,149,48,143,247,207,155,236,30,177,151,222,72,245,98,111,64,164,34,110,241,154,166,117,132,14,116,116,210,168,248,86,11,10,126,124,158,185,191,69,49,40,150,238,105,1,200,17,83,191,159,252,55,199,69,242,81,36,93,17,86,98,73,154,21,135,33,216,90,61,216,51,238,55,8,29,113,96,92,30,232,183,22,83,225,28,117,112,148,248,102,155,27,89,128,30,133,128,73,178,86,100,172,9,113,152,230,116,248,103,32,90,166,173,17,98,58,167,242,100,215,234,47,226,203,63,39,39,55,129,145,171,83,15,122,81,152,204,197,79,154,161,13,226,57,23,55,85,249,11,197,18,248,117,42,155,149,119,170,38,64,25,207,241,141,238,181,75,144,53,96,13,133,253,114,119,103,139,148,151,221,239,30,40,48,144,247,34,200,149,195,142,180,173,96,48,158,248,107,171,89,130,14,141,48,182,201,232,198,51,157,222,165,232,161,179,51,105,205,110,4,54,223,191,121,216,176,218,185,74,220,7,111,249,137,252,152,119,200,200,95,156,232,3,139,24,27,110,28,146,65,241,141,83,136,139,120,215,91,171,98,11,173,105,175,59,245,226,21,250,172,135,126,101,58,232,172,11,244,183,142,93,171,14,64,239,239,221,246,12,100,65,96,143,152,192,217,74,147,21,95,197,252,222,101,31,179,151,175,25,197,226,1,168,71,197,10,190,100,22,250,45,81,164,204,54,132,167,68,69,137,243,23,51,253,215,229,229,171,198,151,2,34,205,86,43,16,176,17,82,125,244,44,180,161,124,91,182,151,20,46,169,141,234,93,248,244,219,248,66,99,76,84,232,154,205,157,65,227,252,248,39,176,145,132,15,251,210,155,111,126,157,19,17,225,67,60,98,220,35,48,97,156,117,183,44,80,227,127,130,39,28,5,170,97,99,249,178,91,1,147,179,9,171,123,11,66,88,91,207,43,141,52,19,55,252,121,115,196,131,135,44,48,159,164,250,247,221,16,86,111,2,157,251,111,81,165,245,235,18,35,91,15,183,65,191,140,227,94,164,67,80,199,11,193,67,198,110,200,101,6,158,225,135,11,233,93,47,95,179,37,190,127,113,168,100,229,43,183,230,33,152,66,136,219,27,216,3,230,239,121,170,38,149,118,237,212,116,105,250,211,164,103,159,43,160,161,100,122,207,194,224,133,62,84,116,189,170,254,216,168,250,90,26,79,89,116,130,10,66,29,62,44,68,54,67,127,45,74,76,6,85,97,131,143,79,97,248,225,31,79,61,212,157,253,234,227,239,92,131,50,242,5,172,190,224,246,225,187,104,90,239,14,10,5,230,125,31,3,129,208,217,221,166,224,24,99,124,164,161,189,170,64,68,26,36,4,13,66,84,232,56,188,93,36,28,135,66,28,151,6,220,59,204,101,84,158,6,139,69,211,226,177,236,21,143,227,146,21,181,35,55,111,130,63,140,55,197,134,247,229,103,12,174,200,57,179,119,70,229,75,187,245,36,169,207,8,116,57,247,147,13,45,137,68,150,6,167,53,129,236,156,165,135,12,107,145,237,66,161,97,203,12,224,18,82,107,195,117,145,160,205,117,127,37,125,26,71,60,187,83,252,71,228,45,249,206,60,26,189,140,143,9,252,172,246,106,37,114,25,83,4,14,240,107,205,125,236,115,132,126,192,112,138,211,166,206,253,132,1,84,97,66,154,154,167,167,126,246,224,186,164,88,130,157,166,207,181,16,227,146,136,193,51,236,161,12,109,189,154,25,13,215,200,11,76,117,174,191,193,101,129,193,157,241,69,122,54,242,241,117,242,247,137,86,68,138,116,98,88,23,103,245,159,162,127,229,226,174,166,119,103,199,180,168,133,170,171,215,98,83,225,160,124,213,155,8,79,220,185,47,164,252,189,191,134,90,61,157,25,6,44,140,15,226,19,17,11,123,231,208,19,60,240,163,122,54,227,176,173,235,116,61,155,40,179,110,74,97,185,73,99,14,173,120,148,20,124,110,66,127,90,134,241,2,83,101,187,208,99,140,182,240,196,104,204,51,156,21,86,68,138,125,159,239,186,239,65,67,229,186,69,224,44,196,161,214,249,118,96,212,69,31,77,215,192,242,154,191,71,20,15,18,235,24,253,240,212,36,157,152,17,73,11,132,248,83,151,118,64,72,189,99,73,175,226,222,171,178,110,9,6,157,195,223,124,162,79,91,117,155,111,186,96,0,10,91,242,178,87,236,40,57,122,249,170,189,147,219,18,212,231,246,27,13,151,103,209,89,61,73,161,236,6,110,159,106,240,48,28,240,46,249,9,146,175,180,45,69,193,184,191,249,88,87,173,84,83,9,149,77,58,93,129,229,205,214,134,36,118,203,51,44,70,81,117,201,134,29,32,97,119,178,145,2,184,170,210,123,153,175,76,73,172,108,15,188,195,172,62,61,119,232,96,29,205,83,134,40,208,77,214,243,62,159,238,72,179,155,20,166,77,203,133,87,67,226,33,104,81,126,210,55,123,239,170,94,133,185,248,157,203,127,218,5,118,1,10,72,213,56,23,230,52,128,71,130,111,246,134,242,138,227,119,116,141,171,144,60,34,136,27,168,198,14,84,3,68,15,68,16,51,30,144,60,156,119,249,77,228,134,0,115,216,163,184,147,128,119,200,145,9,6,104,100,32,54,106,189,209,179,126,146,73,125,254,141,198,143,4,192,58,124,37,96,161,61,229,53,201,222,31,113,50,214,135,180,98,216,69,93,116,162,47,144,179,73,53,137,144,230,220,103,105,241,187,32,104,239,187,156,126,128,220,10,233,18,149,160,227,19,249,206,245,253,163,110,2,191,130,185,206,208,204,25,165,73,176,218,74,97,38,179,160,253,205,163,255,150,46,246,27,157,83,0,233,238,9,11,112,164,59,121,69,74,70,233,38,226,5,208,64,231,28,156,66,166,76,148,48,64,1,56,200,16,163,80,37,132,128,157,207,20,253,31,189,174,197,174,219,40,104,171,0,176,77,166,180,127,16,196,147,105,154,110,63,35,14,51,46,161,205,84,191,89,117,111,185,80,163,236,178,148,72,235,154,133,62,86,179,45,4,2,66,47,183,191,133,201,86,12,146,11,23,208,112,222,59,240,132,173,30,154,43,5,209,137,232,10,125,188,150,36,80,10,151,169,28,147,73,175,34,122,159,196,80,135,201,70,11,137,225,108,199,196,234,251,169,172,115,1,88,12,123,197,253,143,43,115,168,122,105,57,18,25,207,226,82,211,52,175,174,59,62,48,137,145,19,48,14,236,247,18,149,100,53,80,161,85,246,40,129,196,31,45,219,29,10,87,123,73,124,62,54,44,33,206,244,174,167,38,151,243,43,17,117,149,28,31,164,14,98,30,189,200,204,58,73,105,99,89,155,147,7,75,36,18,224,81,156,81,27,71,167,118,4,119,165,35,12,133,202,99,184,132,153,188,123,113,182,27,158,140,154,59,202,121,200,69,215,25,230,149,56,4,226,6,41,251,214,76,58,232,31,91,56,208,85,174,193,59,142,214,153,30,179,206,212,92,188,200,243,118,56,184,225,61,119,16,181,2,32,56,31,157,69,51,122,105,92,88,49,107,229,115,215,0,226,98,188,129,75,19,2,115,225,194,164,208,173,117,247,126,225,94,104,228,13,149,43,81,232,37,123,64,176,244,43,221,213,195,83,203,7,116,85,11,152,176,251,39,215,76,130,156,109,94,96,196,59,64,49,17,224,220,233,151,94,184,58,79,83,19,74,242,188,59,23,224,145,133,9,50,179,76,37,7,124,12,205,204,50,49,64,233,108,43,254,184,176,7,177,59,70,84,228,122,13,126,223,179,99,60,81,181,20,51,109,96,221,19,95,52,161,125,80,1,121,219,136,132,70,141,58,209,114,212,45,126,125,100,77,30,150,196,117,7,12,230,216,105,17,23,78,205,147,4,237,128,189,192,163,255,243,209,32,140,198,117,156,78,99,13,53,31,1,15,171,178,210,130,144,88,100,131,209,188,179,238,39,158,132,84,31,4,16,237,128,88,113,151,238,54,32,133,13,191,108,42,217,19,134,5,3,194,124,215,135,123,118,115,46,116,174,15,252,71,122,202,158,146,129,205,100,159,232,251,99,210,249,145,211,73,173,41,87,91,102,120,185,5,221,132,78,48,135,153,1,192,103,200,179,195,135,216,15,126,60,200,210,109,158,165,141,128,89,112,26,245,165,164,254,245,14,226,34,199,227,196,56,247,107,81,43,196,67,82,120,80,162,101,72,161,56,34,91,211,189,130,148,195,134,152,69,193,253,104,39,154,203,53,216,152,145,106,128,181,99,136,123,201,161,162,207,65,138,65,131,173,149,168,11,160,235,168,164,93,206,45,128,63,89,206,129,233,186,13,142,115,21,178,186,116,117,36,113,220,141,83,214,55,117,245,215,29,123,33,136,154,225,37,87,84,216,193,90,48,72,25,56,186,33,210,221,220,75,89,2,245,111,6,110,117,49,72,62,89,254,32,132,43,164,116,92,127,162,214,167,251,52,148,67,70,220,121,212,204,74,250,234,222,229,131,107,123,205,164,181,79,20,18,163,156,47,19,126,15,26,50,21,42,46,109,168,131,138,239,234,5,94,102,19,59,136,206,75,152,42,172,183,226,22,178,120,4,101,20,188,223,216,86,234,119,173,38,150,119,164,220,103,137,215,252,174,253,32,185,254,72,195,192,63,214,144,204,225,90,70,39,145,125,30,26,131,176,123,133,7,136,29,206,23,231,152,249,196,3,56,182,14,48,223,84,140,120,109,99,217,211,158,42,100,97,158,178,237,4,119,115,207,63,201,237,203,255,45,65,234,26,108,218,196,110,97,10,23,186,92,103,112,134,137,44,210,24,50,41,168,152,121,235,150,28,177,66,73,19,242,59,118,82,185,226,208,128,218,99,178,208,86,65,239,77,157,156,145,212,119,141,32,227,82,37,99,209,169,154,233,159,79,36,165,43,214,216,37,220,211,227,175,232,227,75,91,107,94,183,207,12,87,111,184,96,161,82,122,156,99,119,58,93,159,169,61,229,44,229,255,245,180,204,21,16,180,234,245,252,49,207,207,31,157,53,76,248,31,169,177,216,101,40,182,163,15,54,42,3,85,62,3,5,211,66,138,74,44,128,236,200,78,242,187,75,91,155,239,227,186,130,8,122,37,217,16,231,255,201,212,51,139,160,206,116,221,213,233,31,111,111,56,145,243,95,243,150,55,158,150,84,54,167,209,195,132,141,141,221,179,111,104,11,198,191,216,113,156,17,135,158,49,8,91,83,185,138,175,248,26,245,111,73,67,211,155,30,33,224,30,201,155,92,195,19,202,241,48,242,177,180,98,126,229,49,25,134,199,57,82,218,54,57,185,224,244,180,245,18,140,187,238,117,155,25,93,73,107,99,112,15,79,25,224,198,195,38,238,70,111,31,215,0,225,55,51,229,159,127,182,50,107,56,128,225,206,252,109,136,222,54,22,50,98,68,97,113,57,214,2,197,72,157,140,215,211,201,93,62,62,153,116,40,166,252,220,155,162,82,58,204,38,221,14,246,93,234,248,51,114,125,156,242,132,186,19,6,234,137,101,144,45,49,59,85,109,180,93,24,7,227,41,49,40,236,177,170,107,196,229,205,161,245,115,228,200,242,208,240,183,75,176,38,112,147,63,187,192,190,204,122,88,22,8,109,252,35,164,206,201,211,57,55,233,63,170,50,51,19,12,117,3,228,224,66,70,232,49,217,76,247,252,58,245,222,94,107,80,13,162,139,198,253,6,39,161,220,97,127,85,139,10,180,99,169,155,34,174,234,21,173,227,206,152,0,72,123,203,230,78,127,229,90,112,143,50,41,249,226,114,3,215,30,93,106,238,87,194,220,201,86,111,245,166,246,215,132,52,84,118,232,41,195,141,86,104,100,86,22,58,64,193,91,55,212,160,189,13,133,166,52,60,75,253,176,150,221,59,237,241,27,196,132,0,219,129,38,249,94,126,172,214,47,191,26,101,212,121,204,132,108,32,58,194,2,148,66,182,67,187,21,185,157,18,71,86,90,95,248,119,28,198,31,171,193,85,7,202,215,61,235,194,205,82,70,56,54,57,0,74,86,33,169,102,242,235,87,164,100,145,195,67,18,6,230,45,169,156,155,47,24,215,95,126,74,171,51,239,97,230,11,162,50,39,205,56,209,57,62,44,21,220,101,61,255,189,195,232,255,103,139,186,123,7,125,165,192,179,219,8,134,164,234,219,187,113,211,244,232,164,49,171,199,34,219,172,76,227,196,166,228,85,78,83,90,194,220,242,244,173,60,64,128,152,188,59,155,82,218,128,93,66,233,4,90,77,112,29,225,54,29,100,239,216,124,11,184,159,54,13,143,33,151,8,19,20,94,147,107,126,29,255,119,179,108,26,203,173,135,15,254,160,61,233,5,226,117,63,179,76,247,17,40,165,235,9,106,108,247,137,191,250,141,254,149,64,186,223,206,251,171,151,62,222,7,72,222,92,163,235,70,153,33,104,94,223,99,39,160,50,208,53,124,83,212,73,129,244,110,254,58,57,236,178,181,247,19,250,198,76,214,125,184,156,78,121,24,37,7,199,247,87,234,37,46,77,150,199,69,132,98,126,185,7,180,8,87,121,157,186,11,1,218,50,217,122,171,171,239,245,127,84,148,218,247,32,177,122,147,185,238,118,79,103,253,159,233,235,110,225,40,89,169,50,160,206,177,246,214,47,36,119,20,216,139,96,21,159,213,150,2,236,170,42,114,49,196,30,238,21,201,137,173,144,35,177,198,14,209,251,165,96,153,145,17,134,77,162,119,171,76,130,248,205,98,210,113,162,13,142,65,131,61,9,126,156,142,233,210,229,138,92,221,138,216,34,184,242,54,174,166,238,62,32,97,53,197,204,165,25,176,149,247,188,221,228,140,209,63,160,122,235,154,196,47,159,161,93,201,91,106,156,120,139,115,246,190,251,124,71,246,132,26,148,170,67,79,212,72,33,249,3,155,53,32,111,128,125,93,235,93,52,241,186,92,16,126,186,204,126,220,54,234,44,65,44,5,2,112,103,72,206,214,170,164,207,163,236,66,34,233,122,181,166,178,106,50,60,102,163,99,87,133,163,171,250,64,45,138,25,8,219,2,101,193,228,107,28,104,67,234,140,69,136,237,233,227,60,37,130,151,254,25,183,216,250,174,93,75,156,6,187,98,151,79,94,169,55,52,3,177,218,52,213,247,153,19,26,228,94,206,72,215,17,107,83,184,174,136,140,216,138,85,183,195,217,174,241,104,80,43,171,15,165,207,34,134,123,190,167,102,176,197,239,253,198,234,252,31,169,206,180,203,92,122,9,10,43,81,217,51,81,73,201,85,212,3,244,42,25,152,95,33,194,184,231,114,44,112,37,85,77,131,133,82,189,62,20,83,1,243,100,177,136,57,135,18,66,224,20,20,222,155,177,201,194,107,24,78,242,193,186,162,216,232,188,67,17,6,224,209,150,235,26,202,50,105,108,155,156,57,190,140,196,45,174,23,199,120,188,26,250,155,156,174,50,15,209,198,56,210,4,227,130,166,83,18,174,246,176,171,142,21,10,251,36,212,56,219,173,185,133,19,197,9,11,137,38,38,222,65,231,252,139,207,178,118,216,72,194,46,234,171,56,44,159,66,89,75,126,212,22,16,7,21,120,147,84,91,165,97,124,168,159,243,193,170,148,244,140,197,183,189,118,120,190,219,157,10,24,229,21,145,190,110,119,93,15,252,166,20,107,105,136,183,123,99,235,36,130,160,188,21,253,236,237,159,150,10,182,238,195,126,94,44,37,109,231,171,107,207,135,124,67,191,34,8,127,250,65,60,53,159,200,158,56,89,70,77,105,44,190,227,223,127,160,55,130,185,165,4,51,52,165,233,121,51,206,168,40,119,106,19,2,60,11,191,154,119,185,153,5,70,135,137,88,254,147,175,197,225,69,93,85,76,99,240,241,98,251,109,137,162,220,42,134,151,39,75,16,151,209,38,93,215,250,213,44,233,165,247,131,113,187,28,204,210,60,112,119,231,66,29,214,219,142,251,114,128,142,51,19,203,39,49,173,192,177,191,37,225,248,179,170,56,75,112,112,232,30,2,121,72,204,13,72,164,30,131,87,244,208,152,232,111,242,136,188,162,132,152,183,65,7,81,160,186,83,88,208,153,121,254,164,43,94,66,42,223,63,132,222,156,225,58,40,110,181,124,129,192,52,173,146,242,223,186,14,246,140,142,135,130,99,187,9,76,16,77,3,98,130,58,246,62,248,109,71,181,152,44,237,240,61,186,140,10,40,176,209,81,108,102,45,131,214,248,126,253,166,76,134,37,64,200,185,250,248,31,164,185,21,211,91,25,36,40,178,22,220,51,157,48,173,187,158,17,79,50,209,72,216,69,31,173,102,45,7,172,56,26,182,102,251,12,135,107,187,230,6,92,130,214,113,6,228,207,216,150,126,50,56,86,233,118,74,156,228,70,109,122,149,140,196,107,6,18,88,226,109,130,232,180,121,253,89,219,184,173,155,140,184,162,204,129,196,80,184,219,57,171,212,194,167,99,89,229,39,33,142,138,7,53,233,243,78,199,166,190,193,247,42,31,71,203,228,189,75,9,163,180,38,83,112,41,80,247,132,219,33,11,82,142,193,30,77,180,14,49,11,69,162,72,10,202,195,49,176,125,180,13,68,119,129,220,25,9,128,179,162,110,81,27,188,234,247,217,207,202,112,215,57,154,109,232,199,93,248,104,168,54,147,90,220,164,118,152,23,67,68,57,208,70,129,23,81,82,227,157,15,155,205,230,218,90,14,45,7,197,211,143,106,85,204,57,167,100,254,118,207,133,56,138,183,225,148,48,5,232,134,16,239,129,34,159,106,151,136,242,191,158,210,57,208,242,226,228,108,154,151,62,75,147,112,52,45,233,42,240,38,57,108,125,166,18,113,221,113,32,133,235,142,193,122,242,253,153,162,166,143,224,175,234,12,202,17,163,207,26,175,5,221,43,254,84,14,118,255,44,98,130,206,141,60,164,71,234,225,68,92,105,27,203,69,201,218,50,119,253,207,156,28,137,108,92,88,80,60,225,95,75,13,12,225,214,207,11,180,55,161,222,244,147,195,78,149,57,240,44,199,234,78,35,110,17,225,217,214,26,181,40,125,9,60,6,235,213,201,163,194,253,31,61,65,146,42,98,85,229,24,98,214,72,108,137,179,171,0,99,106,213,95,170,184,180,79,183,120,143,93,84,135,185,147,243,157,203,250,64,26,246,46,144,202,97,106,200,193,247,243,62,71,221,220,80,65,171,139,124,122,146,44,106,170,98,42,120,104,20,70,48,173,245,213,141,53,142,243,82,56,215,190,79,135,3,199,173,172,33,244,135,74,41,18,175,183,0,254,103,137,119,189,53,44,239,205,110,9,20,130,146,164,139,169,14,135,174,188,50,64,153,58,233,69,25,130,92,54,58,98,14,65,197,218,194,142,98,146,65,176,74,27,75,139,245,188,97,228,67,14,190,66,66,246,140,190,68,249,185,163,174,226,55,225,162,78,44,220,197,61,185,102,253,243,1,42,119,161,49,36,146,136,48,173,131,106,98,32,212,100,73,193,216,208,52,42,140,78,213,172,177,235,79,166,165,209,127,96,84,84,14,189,34,53,71,198,173,90,160,159,0,29,203,156,194,148,114,249,107,39,106,110,125,159,86,182,182,15,177,115,56,8,121,131,247,255,8,135,59,191,190,81,167,224,27,5,210,124,39,108,176,126,124,16,16,203,246,99,190,119,66,208,207,151,93,222,19,216,118,211,167,130,28,123,96,31,117,249,242,108,39,47,238,194,195,115,189,18,155,153,215,85,155,3,9,186,234,169,59,255,6,171,131,11,77,117,182,22,88,93,29,59,80,59,240,157,13,68,70,31,216,93,14,112,229,230,185,33,152,132,129,165,199,155,155,99,118,136,144,149,54,45,225,1,113,154,252,198,198,46,208,47,54,120,73,165,175,53,189,128,182,236,10,191,82,70,53,162,176,246,208,253,88,52,189,242,132,129,25,127,21,86,148,84,63,130,109,51,60,151,7,175,237,10,238,63,76,142,179,209,214,236,67,168,161,246,149,130,171,68,230,248,89,248,25,52,236,32,228,129,3,170,184,169,130,115,21,109,27,107,143,186,98,127,10,124,100,173,244,51,190,5,81,101,226,198,200,104,12,134,85,155,148,17,78,154,21,135,48,118,208,159,47,102,242,44,4,205,191,181,207,224,183,216,52,149,53,163,95,149,239,224,108,14,97,194,9,181,181,103,46,38,51,25,87,143,24,114,223,170,138,255,226,159,75,83,254,114,115,169,212,44,1,34,8,76,167,40,153,34,65,193,175,237,243,218,152,13,207,72,113,122,5,97,120,6,9,90,102,40,36,82,46,6,58,158,183,134,73,51,134,211,208,237,190,48,107,111,227,39,81,136,128,15,50,187,115,1,101,248,136,158,108,89,51,248,39,77,236,149,97,251,179,196,3,202,184,17,55,155,46,31,34,118,93,6,241,149,60,82,121,96,210,180,207,148,227,192,161,95,245,222,119,220,134,58,1,50,199,192,251,151,222,227,139,209,209,28,85,72,53,33,250,185,206,90,92,209,55,87,32,63,28,110,135,200,116,168,23,81,175,177,120,26,232,130,133,245,13,47,228,103,117,35,225,242,176,30,82,176,217,85,23,215,190,76,212,46,126,209,110,248,155,52,241,193,216,119,85,53,124,117,105,151,42,140,135,219,75,195,240,216,228,118,5,137,63,73,59,145,114,94,222,231,162,214,24,96,107,19,91,238,230,215,239,207,183,184,253,122,115,227,25,85,140,121,107,36,114,94,12,76,214,67,47,139,110,9,134,80,241,135,237,20,228,117,55,146,30,156,246,252,95,4,207,177,73,117,187,167,68,125,43,57,97,232,159,6,144,113,80,244,244,230,47,233,211,123,200,129,192,189,108,13,236,34,92,151,234,168,175,16,35,215,56,240,166,27,226,23,96,55,237,100,192,35,161,36,135,124,193,170,77,122,107,121,90,151,237,58,66,199,28,132,205,254,162,42,91,176,68,227,41,34,138,237,149,2,145,169,227,87,213,26,137,237,139,243,216,19,172,228,107,73,82,246,189,63,226,220,31,51,127,37,214,14,254,135,88,19,173,245,24,113,96,171,52,93,193,12,123,74,119,164,45,45,67,244,169,26,112,125,50,154,75,60,113,107,202,237,223,19,151,178,52,183,196,121,42,105,1,251,121,248,127,212,170,89,40,153,41,168,83,53,79,98,70,192,51,204,47,96,116,233,123,247,203,132,98,160,199,203,124,182,140,52,32,47,100,5,179,169,114,107,244,221,66,83,216,210,159,206,33,63,167,18,176,228,137,187,104,166,166,218,210,182,248,140,60,76,77,15,58,154,32,246,245,143,129,232,88,41,239,54,15,160,65,161,15,227,2,84,30,226,44,78,214,38,100,86,2,179,120,137,250,133,116,254,62,138,223,117,98,29,232,242,135,219,194,107,210,2,27,146,93,159,37,29,40,63,63,46,217,63,108,58,219,233,111,159,228,80,65,12,41,96,7,152,15,243,123,125,41,72,237,246,239,231,215,157,19,230,77,95,164,215,214,142,140,225,71,97,231,152,162,124,27,33,188,166,151,243,240,190,40,163,95,145,83,42,171,197,105,76,127,116,52,219,254,239,245,70,251,198,110,90,41,152,115,98,188,111,60,63,132,199,85,169,104,47,15,5,229,123,212,191,128,12,170,125,241,141,148,252,55,72,180,13,103,9,159,192,8,193,188,93,60,67,86,70,252,129,255,8,244,128,180,37,152,30,17,7,18,177,20,4,183,210,136,195,138,61,158,154,128,172,123,127,28,123,38,43,34,129,93,251,70,59,156,15,22,141,132,162,59,95,156,131,201,171,252,180,56,142,206,93,176,18,173,91,236,130,146,20,159,36,95,190,219,24,250,236,189,93,23,237,159,35,151,248,11,99,210,104,57,164,29,80,63,218,241,215,50,71,85,173,139,66,47,215,136,33,91,184,115,7,56,166,164,191,168,118,115,91,118,39,102,21,240,15,62,148,181,182,234,27,251,146,55,75,87,40,1,43,16,155,235,155,154,63,1,10,158,223,183,213,10,241,52,13,142,142,65,183,246,173,206,69,253,241,93,84,253,241,239,80,238,45,63,112,149,13,221,77,189,228,12,138,150,129,88,164,168,193,14,1,146,38,235,79,143,139,38,71,236,212,207,98,185,44,60,160,59,172,241,30,98,216,156,56,9,165,225,38,42,56,221,125,241,195,230,42,53,190,246,92,170,26,238,250,50,83,11,6,153,110,83,97,208,112,189,143,33,155,147,68,21,196,200,221,5,26,67,161,58,168,103,247,123,77,59,246,51,141,158,103,209,91,123,47,197,2,186,39,82,201,39,57,121,164,199,198,189,206,69,50,224,71,249,193,189,132,46,89,239,63,80,239,76,246,208,201,224,171,23,4,80,90,116,68,13,39,3,214,208,141,253,80,52,46,42,176,230,45,244,208,217,221,221,107,83,254,209,233,80,14,130,174,165,61,145,136,39,191,182,29,113,199,254,6,153,76,207,152,76,173,119,97,30,236,39,147,252,107,187,17,28,109,92,155,145,101,11,71,52,87,105,205,113,225,183,232,175,172,239,87,36,167,50,29,214,70,245,115,39,155,225,75,130,7,196,20,211,25,120,230,119,30,16,176,37,100,197,98,166,44,253,231,57,100,250,202,112,252,184,149,229,32,65,130,86,118,93,171,209,132,46,168,150,59,69,159,133,192,132,33,176,158,74,12,235,227,114,232,248,251,86,93,13,235,51,110,208,254,134,134,229,232,131,79,92,40,17,66,38,113,22,186,126,40,60,73,240,248,178,29,105,228,237,139,80,102,160,16,75,8,187,175,200,156,92,8,62,140,25,49,76,220,81,152,139,198,87,168,68,133,149,125,126,31,53,88,90,28,195,231,6,30,120,243,167,205,9,171,70,219,212,97,99,224,22,94,84,54,202,31,133,54,41,209,69,141,134,4,7,214,94,126,136,172,12,255,6,185,185,28,56,73,232,159,130,202,83,194,220,34,178,173,0,220,176,177,102,255,158,24,206,242,66,174,76,89,227,186,98,166,185,1,145,28,107,104,154,1,0,47,140,36,179,155,134,26,219,222,189,150,66,143,82,221,178,231,169,179,134,109,216,187,197,198,60,131,129,82,91,33,83,16,239,142,125,57,50,181,252,122,98,215,85,187,226,37,78,0,66,255,197,83,216,19,152,94,220,244,126,217,29,231,121,95,16,200,191,74,137,55,117,92,113,187,107,153,116,144,41,77,50,188,27,69,123,85,17,125,254,30,141,81,71,207,126,183,13,6,89,0,112,126,186,145,187,136,229,194,97,239,9,19,152,101,29,135,13,119,124,127,121,67,179,152,111,79,140,191,32,6,132,14,53,7,170,109,22,145,221,54,199,211,163,205,100,45,169,192,93,48,131,207,116,220,145,179,154,40,153,32,84,178,195,173,62,250,100,20,254,184,160,241,94,86,245,218,71,192,228,179,153,105,42,171,107,32,26,14,224,62,235,74,35,51,240,75,130,31,18,252,162,10,152,121,142,195,83,92,107,223,115,82,76,164,186,226,248,224,11,186,146,74,201,83,26,223,29,189,139,219,123,11,189,252,222,216,8,5,114,72,37,4,166,164,93,245,19,244,155,24,214,40,232,34,56,245,100,211,241,185,224,135,167,179,20,192,211,9,236,191,155,243,108,201,80,163,118,251,156,42,18,64,127,178,176,55,65,176,148,81,39,11,109,45,117,133,54,208,233,145,119,121,128,86,116,235,156,211,66,132,126,209,161,52,230,173,5,166,4,49,27,174,193,170,188,109,42,32,109,232,36,96,41,3,168,63,60,109,16,139,6,221,139,180,34,193,49,166,80,90,223,251,73,225,208,131,233,163,173,13,145,28,139,84,45,96,202,109,150,49,3,136,135,184,57,83,224,205,133,107,134,83,118,40,251,36,127,180,139,197,196,136,55,44,93,253,142,57,43,145,215,74,0,146,64,58,240,51,83,156,161,16,68,135,216,35,62,221,99,171,59,194,4,113,143,108,170,56,220,233,17,180,97,213,253,203,31,19,199,251,109,128,128,58,189,119,120,177,134,43,247,250,44,148,211,233,167,43,164,7,235,153,235,89,69,196,249,83,24,157,169,205,204,53,161,16,108,180,255,151,3,227,148,83,100,9,45,19,184,137,190,73,36,168,178,33,94,9,136,93,183,237,202,73,54,234,233,191,217,153,77,66,222,108,126,224,138,181,175,23,90,238,173,27,109,75,225,106,47,0,196,77,54,97,232,208,123,149,65,125,99,2,26,161,207,48,132,204,244,207,21,236,189,174,117,103,113,150,245,132,56,90,250,210,187,193,97,5,80,95,29,90,19,190,242,65,115,79,89,56,6,0,236,22,209,250,168,16,51,122,32,87,127,55,117,94,139,16,86,145,23,27,143,108,208,230,55,158,75,59,154,158,102,77,246,82,130,147,237,64,73,114,120,250,179,114,234,37,62,229,86,243,164,23,237,220,176,236,41,239,240,88,140,196,159,92,25,18,23,216,103,140,244,168,87,137,125,44,48,21,218,31,224,240,123,226,38,108,179,125,117,150,104,130,192,67,95,97,253,41,65,211,68,40,77,38,8,89,157,242,27,49,107,31,227,63,175,221,241,59,186,177,50,134,164,114,222,174,138,130,165,7,166,115,2,185,151,105,217,123,169,231,211,208,217,212,243,214,35,84,241,139,137,163,55,242,90,214,53,224,252,182,208,91,227,82,136,136,80,109,233,222,211,141,28,36,222,7,5,165,227,138,30,211,14,133,91,250,244,195,169,252,207,193,142,205,200,10,45,188,145,155,101,42,217,52,192,98,120,245,215,226,234,225,250,102,147,31,83,63,64,91,42,138,26,34,44,90,215,191,90,67,55,84,242,237,161,107,197,192,179,251,88,120,156,4,166,112,180,24,121,48,181,77,225,9,4,159,88,172,170,104,178,84,37,182,91,77,5,0,62,243,164,22,42,251,56,29,100,106,60,123,12,112,13,183,93,1,10,2,122,26,126,48,166,25,77,36,119,121,255,83,44,170,89,77,233,236,153,68,47,87,87,14,54,137,67,77,105,27,195,118,183,114,147,55,84,79,42,221,83,173,80,154,229,212,131,213,93,24,1,234,19,162,67,160,243,162,104,187,250,66,81,139,86,247,66,229,226,169,40,13,218,100,170,18,211,108,126,7,207,132,180,50,31,248,7,57,208,85,76,18,191,238,78,105,94,45,222,156,149,105,55,16,94,152,170,233,124,114,83,142,36,90,214,243,85,98,39,10,24,190,217,160,235,46,195,53,232,196,139,94,76,172,18,200,152,37,107,178,53,97,156,45,0,37,90,191,75,51,212,115,177,34,208,151,132,56,62,110,250,160,163,62,138,243,119,102,157,109,37,204,164,31,200,204,11,178,252,139,224,47,232,201,226,22,7,215,41,207,174,242,101,230,46,78,40,159,134,182,50,167,158,32,71,242,76,53,66,210,251,180,155,240,78,79,113,13,208,218,208,152,238,52,150,111,147,252,103,174,210,233,139,191,146,230,98,203,118,78,87,116,203,144,222,62,8,37,185,167,42,188,189,218,138,11,186,12,143,140,159,122,131,211,144,150,238,168,13,156,238,161,84,201,42,90,251,212,177,212,68,185,201,213,4,0,19,158,196,35,214,40,241,73,96,87,1,31,131,240,45,50,231,238,61,241,58,136,159,60,216,162,195,234,239,106,135,11,154,65,100,66,176,163,253,46,195,72,231,49,41,161,210,106,83,84,211,56,22,250,18,132,160,118,137,42,8,204,67,143,24,137,72,223,107,151,48,123,12,234,8,202,81,10,17,136,104,100,104,131,100,109,66,170,71,54,68,9,111,72,186,99,78,143,140,48,203,143,15,68,189,229,30,234,72,233,104,103,73,46,78,248,197,167,61,193,135,255,171,37,221,120,252,175,173,224,174,152,38,70,114,42,105,165,197,180,255,175,174,181,131,216,245,201,187,70,23,34,110,224,6,27,8,70,58,206,201,204,216,213,95,93,115,210,196,230,184,86,167,195,182,142,92,72,247,42,45,217,86,7,127,16,35,178,68,113,175,15,14,253,93,137,155,36,43,67,162,60,188,253,252,179,139,222,111,165,173,77,213,99,227,176,244,136,209,187,18,154,4,222,105,112,255,64,143,175,93,223,158,214,221,30,1,194,93,82,27,133,111,23,8,82,22,217,210,146,250,90,139,160,11,159,47,4,125,220,47,74,16,53,13,227,109,172,63,242,108,149,148,245,65,230,12,121,210,73,11,119,158,185,15,236,39,6,128,59,160,223,172,241,107,36,43,169,183,81,184,105,144,217,219,108,237,37,103,197,210,252,131,10,76,240,188,147,101,58,53,79,199,58,222,112,129,62,184,75,23,245,39,26,216,162,71,217,130,33,191,237,0,142,145,202,147,74,137,204,151,26,198,182,19,43,126,86,52,225,205,152,9,165,254,76,184,167,249,113,68,5,92,22,226,222,208,54,58,6,118,6,147,92,72,168,124,255,19,68,103,244,194,236,77,174,5,64,91,219,61,174,29,10,136,5,51,169,17,51,221,207,236,11,232,231,67,123,143,69,11,88,247,243,198,196,206,78,122,164,250,60,121,67,8,117,249,189,158,43,61,89,49,95,173,199,0,151,46,15,177,249,88,115,11,163,130,30,161,60,208,238,166,137,65,56,241,50,35,21,21,251,127,135,123,124,173,119,204,236,246,136,57,202,188,109,2,91,248,250,28,170,125,118,44,65,245,206,237,85,199,151,208,1,140,129,158,245,228,127,224,71,161,174,1,196,244,101,82,171,39,223,126,92,152,118,67,249,7,75,166,227,56,132,15,86,51,243,226,97,138,91,13,165,219,2,247,185,236,121,85,190,70,53,78,155,136,12,27,43,212,71,39,240,81,91,177,143,20,116,58,61,247,60,220,2,177,122,118,82,179,167,138,54,228,161,157,229,0,27,122,194,48,160,229,215,66,128,59,109,135,240,190,26,87,59,208,60,176,89,3,117,241,204,31,86,163,82,203,239,52,10,224,78,77,221,130,55,83,120,101,157,151,37,208,92,172,215,137,191,33,71,35,234,213,78,162,196,205,217,207,251,43,38,19,153,29,101,251,54,74,174,189,65,155,68,149,147,203,230,190,25,126,78,16,125,23,204,54,167,129,228,78,117,106,109,202,38,121,102,123,29,202,166,203,130,105,246,71,182,2,1,207,57,150,198,130,201,152,125,224,18,220,209,36,126,166,211,194,195,157,221,16,157,50,17,98,27,224,174,233,72,227,184,130,133,150,221,103,198,105,119,76,31,240,55,255,68,180,70,155,172,140,235,179,160,194,2,130,2,15,84,221,191,103,244,216,235,38,233,186,26,149,186,154,228,119,161,16,65,100,190,64,93,89,134,39,56,121,229,203,28,163,42,106,247,248,124,83,36,221,95,111,202,220,184,181,94,178,174,246,102,1,179,80,220,241,66,96,90,5,185,27,254,91,181,66,239,118,0,202,59,147,203,28,111,173,138,73,169,255,63,211,220,165,161,43,125,18,99,44,78,188,94,31,140,149,118,141,153,101,195,150,87,76,220,9,100,57,147,201,202,236,45,201,222,202,186,94,131,82,125,160,223,26,110,184,204,198,246,6,30,218,184,157,13,32,4,173,43,47,126,8,103,217,232,177,213,219,62,134,189,0,36,88,81,141,212,194,1,186,28,94,234,136,140,34,200,10,113,94,71,177,219,81,166,25,146,53,53,72,62,40,180,90,117,70,43,194,128,21,219,142,100,247,61,126,231,68,183,129,13,67,175,35,47,89,141,127,84,85,230,253,75,146,175,13,248,250,41,252,36,143,56,102,221,59,94,80,237,99,236,245,40,135,162,183,173,72,2,227,248,103,89,255,30,58,236,237,101,76,100,211,77,61,14,50,58,103,76,125,206,54,51,211,157,225,183,155,237,255,14,105,183,155,65,117,72,61,83,64,85,217,58,44,47,14,89,68,222,16,79,229,14,78,37,236,12,185,132,224,232,67,104,67,104,190,113,57,93,70,25,116,120,77,196,192,66,225,115,217,183,54,216,68,166,55,232,196,213,73,26,135,86,138,227,7,53,242,170,12,49,129,123,64,220,166,115,174,173,99,149,75,44,149,141,153,135,164,233,44,253,7,213,179,211,244,172,18,106,8,240,57,201,218,17,32,66,218,8,24,4,106,142,53,115,153,40,6,38,192,21,107,127,21,229,158,47,98,222,32,102,182,123,163,120,211,158,215,248,195,219,168,26,108,169,96,6,147,91,34,216,191,74,136,165,187,67,73,64,41,100,154,33,1,243,173,160,167,101,158,88,106,194,49,122,56,55,129,238,205,184,103,171,203,71,230,121,148,171,22,152,202,26,251,157,167,157,36,234,174,66,251,154,4,77,138,21,239,162,140,6,91,54,247,173,77,47,101,156,76,231,49,187,107,79,212,191,178,192,92,190,2,10,57,222,0,23,127,61,78,31,212,131,156,207,251,169,188,114,196,119,229,107,200,72,246,241,250,123,104,61,34,71,200,225,191,112,157,90,248,105,104,208,0,209,120,226,10,14,171,241,210,139,124,214,213,192,24,124,91,148,187,88,227,220,8,28,48,208,212,33,139,15,185,29,61,154,132,2,113,23,5,236,53,208,175,8,130,60,154,7,45,96,115,138,116,199,221,3,172,74,162,110,8,90,52,69,4,164,64,171,169,138,221,113,160,165,74,21,81,1,188,203,45,217,255,74,208,251,145,34,170,164,245,148,213,16,81,100,10,123,92,106,3,90,97,103,78,176,130,197,230,97,175,70,14,7,113,87,142,168,129,230,243,97,144,206,151,75,246,89,63,93,112,94,80,119,199,60,101,35,211,78,113,33,152,108,247,116,235,177,13,141,8,84,75,210,48,53,219,139,208,217,67,128,135,115,92,0,231,231,132,24,168,11,57,143,180,140,66,125,114,75,10,57,239,78,130,130,152,32,11,60,166,52,165,28,64,162,253,200,40,14,182,11,174,70,180,210,151,38,17,206,79,62,18,129,62,214,77,169,39,58,92,40,243,94,40,153,93,255,230,200,253,240,193,191,221,130,128,232,12,111,215,82,161,77,179,116,159,198,67,202,31,182,175,51,71,145,186,154,76,211,193,73,0,9,59,246,157,246,33,89,64,63,119,213,42,49,148,184,155,116,122,170,2,235,202,49,110,135,29,51,119,164,245,82,164,144,39,175,41,206,116,41,86,37,104,56,107,115,187,35,164,199,179,176,103,30,255,26,252,159,211,106,97,113,4,219,76,3,255,47,223,230,109,33,84,107,109,53,247,250,126,114,70,72,86,180,125,7,9,199,5,213,5,57,120,123,10,185,203,0,69,226,168,130,78,144,10,164,225,237,162,89,236,72,105,105,80,163,113,125,134,200,141,46,31,36,225,77,153,33,192,205,160,142,158,234,110,69,223,34,244,44,47,216,2,207,254,225,125,217,43,129,28,159,246,20,224,76,117,80,138,70,210,51,145,188,250,70,76,218,124,64,132,45,128,139,132,95,121,59,69,194,183,37,230,74,116,15,41,84,251,237,36,152,152,60,44,219,86,251,250,161,42,251,65,52,89,124,6,109,238,235,225,30,158,218,219,144,27,108,8,96,180,35,52,160,93,17,254,80,247,45,96,166,224,240,163,99,37,236,179,11,38,219,44,111,197,144,119,203,196,8,212,148,229,196,41,89,153,66,111,225,212,162,141,217,254,171,227,12,193,242,241,19,97,96,69,74,169,11,214,180,242,64,115,19,87,157,97,45,167,127,181,162,64,100,231,216,188,120,16,3,161,72,58,228,141,188,118,5,224,158,16,131,226,112,15,22,111,147,10,21,166,99,109,9,241,51,236,61,138,90,57,1,52,44,14,254,163,165,133,181,40,224,48,198,197,126,125,106,63,242,200,170,154,31,129,236,223,47,125,122,90,220,125,207,125,92,255,168,70,199,71,143,225,32,148,89,52,85,75,36,102,66,114,81,4,198,6,17,81,130,91,228,146,49,71,94,141,155,15,208,5,169,8,151,209,124,32,145,43,230,19,156,1,186,246,117,180,179,6,206,101,203,6,240,25,121,176,87,229,136,219,223,40,169,175,16,1,176,150,248,103,53,108,31,198,89,87,79,159,62,30,112,182,209,123,240,159,215,216,113,176,32,207,202,133,248,251,234,163,111,181,151,10,15,88,148,170,62,50,97,86,77,251,114,75,194,61,17,8,50,11,219,55,54,191,7,2,243,213,15,64,53,185,190,229,228,229,111,154,254,95,225,132,31,171,58,213,80,144,217,34,86,243,15,34,128,14,95,98,28,85,169,26,30,6,81,36,183,146,99,84,17,248,39,151,60,240,97,240,48,39,95,61,206,9,102,254,221,163,52,178,110,209,13,31,91,83,175,165,90,212,181,114,35,40,141,97,196,34,35,55,199,243,112,197,189,142,51,84,240,224,142,202,140,97,47,28,233,116,135,37,115,83,15,18,176,23,83,37,181,219,82,84,159,130,199,142,84,42,8,237,233,52,99,117,189,14,142,42,160,1,111,189,144,232,49,4,228,99,33,82,151,22,202,246,31,57,191,121,236,61,92,76,114,100,207,248,132,171,145,212,73,118,140,131,233,250,37,151,201,159,156,226,86,87,94,24,116,252,105,87,236,175,123,78,193,135,1,93,182,105,247,13,25,88,152,39,82,81,102,196,41,245,1,102,8,198,155,196,255,198,219,55,28,92,92,137,201,117,15,178,159,48,201,97,17,84,25,166,243,205,220,147,223,116,239,255,173,150,46,140,100,44,224,60,1,70,43,249,142,75,145,96,197,199,44,103,178,136,125,17,105,252,162,126,108,72,27,113,103,192,252,235,123,35,98,85,132,163,77,142,96,52,82,135,144,15,219,51,202,103,154,55,206,190,141,195,23,197,245,130,167,115,21,43,40,233,189,61,80,47,226,163,234,53,176,65,14,46,229,0,138,26,199,237,155,50,12,152,157,227,160,185,217,232,123,64,152,152,100,184,155,196,247,63,24,23,130,227,20,156,6,254,86,118,91,64,115,225,12,130,71,28,205,43,160,211,69,138,208,161,192,198,129,195,73,252,228,234,68,193,50,24,162,44,99,20,63,196,39,52,178,86,51,125,201,38,145,83,165,2,187,205,61,170,144,96,93,146,7,88,63,193,20,100,223,160,130,200,94,137,60,172,225,143,245,251,214,218,198,136,248,73,165,10,222,107,233,121,45,111,235,146,63,242,142,129,88,19,2,159,174,227,25,208,251,107,137,68,192,146,166,137,143,214,79,232,242,159,60,185,133,42,191,161,79,55,236,138,235,76,36,190,73,173,253,47,135,168,215,204,53,245,87,119,253,56,253,252,224,101,202,86,24,237,30,203,194,216,146,223,147,212,105,89,171,7,171,135,25,73,153,253,106,80,163,235,214,122,121,64,250,100,91,236,245,28,0,226,209,199,91,105,193,229,236,145,1,138,97,230,125,208,113,104,137,108,185,115,156,106,103,240,212,155,149,174,147,23,194,130,244,46,50,53,88,80,191,35,88,18,12,93,49,237,236,99,198,213,162,104,179,163,89,141,54,164,117,193,80,69,121,3,130,52,240,15,21,189,212,250,239,173,190,138,169,78,251,201,20,47,101,174,61,5,177,225,33,159,181,52,134,29,52,40,53,192,75,128,239,205,98,170,95,25,57,184,223,39,174,117,23,197,200,117,108,35,113,201,127,123,208,65,210,39,14,111,208,239,131,129,144,60,89,179,106,212,231,179,72,141,64,87,83,81,171,97,149,128,33,182,215,119,133,208,145,192,85,126,62,52,34,157,71,67,11,94,159,42,30,177,57,243,192,181,240,151,112,79,22,215,49,90,133,58,47,4,231,114,49,159,156,122,125,243,192,56,174,89,8,119,185,22,4,218,155,24,74,28,153,225,204,157,97,101,35,79,139,203,161,177,226,153,222,225,12,236,52,180,50,208,50,164,175,232,141,83,33,6,32,13,244,233,111,107,238,136,45,245,171,132,125,50,170,191,240,219,228,78,149,87,39,213,38,71,179,137,163,31,226,111,168,234,142,38,135,104,51,56,232,69,147,140,167,148,161,66,36,221,58,44,45,238,39,206,93,77,32,35,70,239,158,180,202,40,179,173,255,11,22,157,182,109,54,130,107,231,184,247,75,16,159,127,44,204,155,198,6,142,25,237,199,45,167,225,148,5,89,36,0,60,155,197,164,97,76,225,88,173,182,19,142,155,53,200,68,18,77,38,39,97,164,80,88,26,190,142,54,139,152,248,164,226,45,113,196,32,59,192,176,201,176,0,28,218,140,184,255,163,243,25,110,126,178,105,73,251,232,153,18,87,162,171,5,254,3,167,134,92,112,158,181,248,185,61,23,80,204,43,14,140,133,249,253,84,246,151,27,162,3,0,103,7,227,151,204,186,7,64,161,112,39,49,81,96,249,9,241,191,9,200,130,70,238,242,97,109,219,4,114,90,178,130,94,184,252,44,244,126,196,128,114,51,76,44,224,104,112,94,242,64,180,139,90,173,234,189,93,32,185,116,94,229,230,15,114,200,39,25,104,51,13,76,14,69,186,244,115,246,125,125,126,200,80,182,245,84,197,77,53,252,132,95,206,12,88,217,43,180,117,189,23,239,134,15,94,49,195,123,108,132,139,219,242,0,103,254,27,116,42,214,11,136,147,19,159,155,88,108,80,31,6,176,209,140,109,124,35,138,46,0,144,81,147,111,252,216,124,196,39,248,187,132,203,95,76,213,148,223,164,216,32,35,40,39,255,119,208,144,152,219,178,222,253,102,136,155,25,215,250,28,54,126,34,195,173,72,64,184,136,14,66,242,184,115,21,204,86,42,208,43,179,23,230,114,248,20,105,231,205,69,71,215,35,19,247,44,89,210,146,183,131,182,131,30,192,213,15,228,114,102,197,223,167,121,244,49,159,147,207,182,233,213,105,154,83,44,93,151,216,102,220,43,33,149,121,171,26,33,57,170,189,22,92,224,11,164,238,153,116,67,220,171,146,126,84,165,212,121,205,143,226,206,252,109,121,8,117,75,19,37,209,133,86,52,27,33,202,159,25,133,232,35,148,13,192,25,19,18,224,44,66,80,104,98,38,176,162,21,229,194,148,95,163,163,77,75,174,252,146,14,166,81,218,212,219,26,159,244,41,113,204,243,243,191,150,220,238,214,2,220,153,60,91,95,191,100,176,136,97,130,150,67,61,180,11,37,55,175,52,221,158,252,234,29,216,9,11,229,242,10,52,1,223,181,40,142,189,192,134,86,212,94,168,247,79,181,217,141,78,248,5,77,143,1,175,188,32,167,79,115,47,161,49,115,165,118,214,212,220,184,140,103,142,12,99,192,89,194,7,33,2,204,201,102,144,231,164,74,94,123,170,116,210,171,212,220,235,188,30,172,160,157,64,14,193,156,71,140,120,193,178,247,162,197,125,119,12,165,213,23,158,222,2,107,88,39,40,54,108,37,61,101,186,10,68,3,254,48,32,174,12,229,201,68,194,99,50,246,209,208,228,81,243,253,209,184,136,199,101,194,98,189,225,121,2,62,253,77,212,248,36,118,158,96,241,17,30,66,72,1,35,80,35,130,50,195,185,243,109,1,226,175,33,150,130,182,112,123,48,188,116,102,113,142,126,245,9,69,154,13,19,149,202,82,62,244,147,165,1,201,14,157,119,193,82,192,181,7,91,183,158,146,195,207,14,2,159,60,167,38,27,12,126,9,160,163,198,64,241,234,107,53,221,0,181,13,208,241,62,170,1,89,129,110,36,27,249,39,193,195,185,56,31,218,119,197,125,228,120,217,113,34,130,9,219,53,138,51,33,14,138,46,241,73,83,81,83,225,8,119,128,130,202,114,210,250,244,174,150,191,143,10,129,66,11,209,105,89,191,77,73,63,2,163,239,61,161,189,89,88,135,160,232,40,91,82,34,24,81,4,234,108,231,197,126,75,150,22,185,213,22,211,209,148,187,74,52,115,114,164,58,17,19,204,121,166,123,249,207,49,231,207,77,143,84,130,19,29,180,118,38,179,77,49,173,63,32,219,117,87,173,11,171,145,252,114,76,219,17,38,52,176,32,223,50,5,205,116,247,191,169,149,196,51,154,88,141,103,4,144,139,193,186,12,183,253,81,224,145,179,101,54,23,182,188,82,14,157,39,99,150,244,132,197,234,4,148,1,120,152,46,197,40,165,15,79,163,66,119,202,82,119,218,155,83,227,1,159,64,181,84,60,247,34,223,41,141,87,143,129,215,135,120,224,224,181,204,56,143,11,162,132,75,3,165,228,240,136,5,80,178,179,138,147,247,113,105,181,175,215,81,192,212,27,188,222,204,227,233,194,31,129,51,153,108,29,220,17,76,104,210,224,198,82,162,131,160,108,193,226,88,156,164,230,103,47,242,54,105,250,36,211,163,15,112,36,39,63,126,152,31,69,168,0,113,166,6,170,92,198,4,236,38,174,11,9,18,114,212,27,219,133,81,144,139,131,14,92,70,50,222,163,218,200,223,54,221,217,58,146,142,255,238,159,99,187,76,28,62,177,180,5,136,248,3,157,46,19,37,240,89,116,132,229,121,67,156,167,28,196,188,199,141,39,104,99,116,245,81,209,16,107,182,105,132,202,16,87,251,191,205,11,131,233,24,207,206,114,175,31,202,183,127,227,125,238,151,227,10,243,100,113,101,92,206,53,38,14,235,235,21,135,65,120,98,145,201,118,1,220,14,255,232,160,211,52,52,40,103,226,47,255,116,73,32,98,198,100,185,106,255,173,134,246,29,213,247,8,124,80,237,54,25,117,121,177,205,157,149,176,167,157,134,101,102,194,133,195,54,14,247,117,104,203,65,60,223,113,160,157,112,109,64,103,2,242,160,102,29,63,36,176,145,87,209,46,220,252,250,50,36,41,233,11,180,230,9,254,16,136,127,206,121,106,171,188,196,86,200,116,96,188,15,12,183,133,231,247,26,246,56,142,254,222,218,208,116,48,232,73,165,46,187,130,122,45,31,104,223,169,32,181,25,50,237,6,15,92,37,3,23,180,6,109,59,194,36,3,244,76,157,162,34,14,113,49,206,89,38,15,149,142,207,166,217,92,107,25,63,37,7,22,119,209,65,132,202,166,52,45,197,245,111,42,22,98,38,123,21,150,216,132,9,147,165,237,206,211,25,103,176,82,122,115,5,44,45,132,183,199,71,27,120,12,56,106,201,222,236,156,196,96,125,248,14,108,26,53,111,55,101,75,31,104,5,27,174,163,66,207,94,101,153,246,156,22,2,78,77,68,125,118,61,116,207,104,18,50,188,139,175,112,221,222,43,57,78,56,147,247,54,201,25,189,155,162,196,191,224,249,99,192,34,183,75,116,190,146,142,217,5,205,114,60,211,251,210,11,86,47,113,38,170,96,136,231,187,102,212,205,254,232,192,173,171,201,189,88,189,28,89,52,187,28,230,136,127,43,72,35,85,149,63,53,102,21,7,56,3,235,155,96,44,138,104,245,47,89,111,227,248,141,61,11,170,42,236,37,105,255,204,138,226,208,72,56,182,120,161,252,187,254,34,24,201,99,35,103,89,51,101,60,54,33,92,69,171,75,87,13,217,197,20,63,51,15,96,140,138,243,221,74,245,45,249,162,221,66,196,117,164,193,224,220,245,232,40,155,205,166,109,135,120,164,248,18,148,74,47,73,84,99,28,216,139,202,224,247,201,157,57,234,128,217,239,155,231,91,10,51,201,58,216,235,249,142,9,31,222,180,7,65,89,2,136,86,190,152,248,193,70,127,220,41,105,123,254,199,234,135,254,91,238,136,28,90,189,130,161,130,65,110,229,5,92,147,239,47,165,200,189,78,1,82,156,60,186,149,64,230,221,7,116,43,32,78,133,115,52,243,8,205,50,105,245,191,243,180,194,229,104,144,24,24,21,0,55,210,130,127,163,235,86,163,19,77,172,130,210,79,124,177,174,135,254,116,123,45,172,146,236,3,223,241,22,100,246,11,158,98,80,72,49,138,104,154,226,33,126,4,38,30,155,152,146,160,39,215,83,17,4,245,171,148,74,187,136,139,197,111,64,193,231,246,99,125,202,192,249,188,19,61,161,17,16,184,203,123,10,140,124,152,81,186,161,250,12,56,2,166,183,90,201,15,96,118,134,77,185,91,97,78,1,171,132,99,101,212,130,92,1,117,66,217,15,233,34,117,34,36,84,143,99,30,81,54,180,238,241,115,87,110,42,32,126,105,181,112,85,77,15,77,122,115,171,197,225,124,97,187,183,193,113,225,115,17,81,39,30,189,38,97,254,153,175,238,189,37,19,253,204,55,58,247,152,130,95,194,83,133,143,81,32,212,215,35,238,104,219,135,14,141,230,71,155,165,1,246,94,232,218,177,110,171,72,232,27,145,245,12,248,36,153,131,120,46,155,132,33,205,204,48,66,191,91,204,39,253,75,63,179,48,155,62,9,208,103,154,24,164,182,174,200,29,202,120,233,116,195,137,24,17,128,168,188,101,220,7,52,147,51,159,214,128,211,68,10,220,214,251,49,54,23,33,158,112,218,154,161,84,68,30,182,183,161,161,173,78,16,153,82,220,185,169,224,162,46,120,108,175,121,17,226,76,204,31,135,47,113,25,58,58,211,151,186,101,59,162,129,225,71,203,117,137,120,215,160,183,7,24,20,179,134,95,6,49,180,170,45,190,242,35,174,206,221,152,119,24,48,90,229,196,30,47,208,226,223,214,137,178,218,243,160,42,129,87,9,163,21,220,58,158,248,249,112,50,42,145,29,129,157,227,147,87,222,248,58,90,191,11,252,221,18,107,236,57,234,129,110,179,106,82,254,132,178,64,135,248,165,162,52,248,251,185,110,234,101,111,254,35,147,76,60,18,180,190,39,253,210,162,128,6,94,251,67,213,184,208,99,175,32,127,205,175,136,18,133,221,154,160,227,191,121,205,134,208,246,135,238,191,117,80,223,178,116,48,92,217,124,59,156,164,12,79,181,160,169,129,43,180,224,184,45,239,67,134,24,112,122,184,67,137,92,92,158,224,86,16,230,29,21,28,174,180,73,181,193,218,253,192,12,66,74,1,47,59,145,228,27,231,3,209,76,105,214,121,209,121,199,217,183,98,86,117,60,44,105,92,102,79,64,68,182,65,88,18,70,206,243,251,209,129,221,55,79,40,221,24,239,248,42,92,64,183,129,149,156,78,5,194,191,88,228,82,121,34,203,150,171,13,110,13,191,215,21,209,69,143,76,111,223,38,109,151,185,16,88,118,187,235,199,177,62,76,112,198,142,253,69,17,35,38,18,30,81,52,207,211,153,157,84,6,85,63,199,151,4,24,158,212,139,178,31,47,10,229,136,250,201,117,81,71,192,135,226,58,98,164,132,251,79,235,87,176,24,109,215,163,144,234,49,24,227,198,25,36,43,76,100,251,237,51,33,146,31,207,152,54,11,201,14,194,93,102,92,151,32,189,77,87,228,156,174,184,97,30,43,223,250,50,200,247,216,69,57,218,207,130,105,203,94,194,27,112,93,131,226,110,132,220,98,220,205,141,12,229,71,148,78,36,157,84,231,183,213,50,254,242,103,58,152,67,251,229,130,92,122,189,82,116,186,88,6,183,179,44,144,56,121,229,80,119,41,217,46,187,76,116,207,230,253,150,220,40,52,252,117,76,210,1,250,234,165,108,92,8,124,217,107,51,129,63,0,169,151,96,220,222,37,69,195,143,178,39,149,232,44,31,236,224,172,75,115,49,182,148,63,11,201,126,7,123,136,98,117,73,67,199,70,187,63,56,109,173,105,45,24,30,34,143,100,13,10,42,67,186,175,232,234,202,3,214,180,123,17,73,152,13,148,201,96,102,26,219,76,161,255,110,21,7,137,116,138,30,102,15,82,101,175,61,114,76,218,94,225,150,41,192,239,53,32,131,169,56,140,10,92,172,39,125,104,198,233,23,225,22,16,45,198,169,118,183,44,171,255,68,3,166,25,98,91,210,236,166,99,2,2,227,100,28,70,197,247,202,157,169,70,6,48,135,234,177,69,52,59,39,44,96,224,189,165,211,104,79,55,122,139,114,81,95,112,114,174,23,132,68,204,18,235,81,125,239,100,138,194,29,191,177,199,179,185,32,110,160,55,192,56,195,188,222,251,193,162,69,215,0,221,157,132,95,163,74,95,217,79,175,25,200,21,187,105,210,205,136,249,68,124,43,120,100,83,37,212,150,141,220,99,57,227,132,193,242,123,139,236,196,24,219,49,156,149,109,168,104,57,132,143,39,123,80,178,44,255,76,122,241,70,199,84,196,37,254,147,167,119,24,136,12,201,102,235,99,123,124,146,252,33,48,152,98,158,127,24,237,135,123,75,64,255,226,245,32,8,94,84,92,70,128,137,92,190,206,41,247,13,212,252,23,48,140,65,62,244,168,82,244,70,111,45,118,143,82,141,197,80,38,196,158,58,25,41,89,70,4,10,107,216,148,236,98,7,215,119,239,75,157,202,95,87,103,75,176,241,113,189,177,157,167,223,191,211,165,8,173,243,167,100,177,72,197,148,230,79,111,54,113,227,250,254,214,189,102,172,119,182,30,120,171,218,164,144,163,128,248,227,7,205,167,114,80,196,166,38,73,77,10,197,54,166,131,24,226,111,53,54,235,156,240,145,19,105,123,46,252,188,5,237,233,72,172,92,58,61,137,204,215,203,26,105,2,145,98,100,223,80,2,24,111,17,21,47,17,211,148,113,102,24,190,149,49,174,61,229,200,16,218,23,41,217,32,18,242,163,215,29,17,113,71,68,11,25,86,61,149,130,74,75,182,101,84,9,122,94,199,96,80,39,213,187,35,255,209,242,35,73,199,213,224,51,73,253,233,211,117,241,7,169,94,195,42,136,41,147,25,34,20,97,204,92,76,2,246,105,200,1,238,52,131,156,54,236,211,245,137,96,233,213,243,130,84,1,123,157,48,22,128,79,145,32,151,174,69,213,215,150,242,217,132,39,83,0,130,252,110,105,108,193,114,112,42,97,113,56,95,118,133,37,221,255,60,215,74,185,52,16,200,62,36,196,78,10,172,63,175,202,37,16,72,14,217,160,165,146,74,22,130,135,80,131,178,15,223,144,180,221,97,159,15,38,200,211,236,248,146,52,45,252,14,212,236,27,50,89,95,6,139,139,197,28,122,148,178,54,177,248,237,234,76,33,79,44,5,77,248,153,108,26,196,98,16,38,54,6,198,13,136,50,104,28,199,5,93,127,218,32,178,44,104,202,74,128,109,214,85,138,101,251,142,110,177,104,74,194,147,228,144,75,43,90,22,241,162,19,65,54,188,73,170,20,110,45,184,213,170,165,16,145,176,132,71,244,254,194,95,93,81,157,18,13,199,242,164,142,151,249,254,151,241,247,28,121,238,90,123,130,156,222,227,112,44,9,60,54,12,158,128,234,112,166,43,88,156,115,59,206,130,41,34,17,152,79,97,235,138,117,24,255,37,146,202,112,32,0,190,2,144,163,93,249,154,67,76,21,66,184,19,126,151,54,166,12,209,20,130,102,124,119,134,47,81,149,226,164,253,45,230,236,47,19,94,4,226,138,63,34,34,200,213,6,171,74,68,133,220,97,125,7,214,211,204,86,174,205,21,117,129,33,95,234,132,45,111,143,9,7,25,154,6,233,110,184,126,122,144,16,163,151,139,0,210,49,20,28,181,181,84,9,120,101,94,251,189,187,247,147,51,218,53,42,150,193,57,103,208,222,74,168,249,164,116,149,138,205,207,213,92,176,188,157,201,129,189,45,89,62,106,162,153,152,73,70,234,11,92,7,37,248,192,14,9,4,59,173,157,19,169,217,127,25,90,65,150,178,216,150,143,150,224,136,43,16,212,33,152,254,217,204,31,78,151,12,207,139,158,11,171,138,168,255,113,210,25,19,18,29,105,52,249,149,229,35,220,229,97,152,72,44,79,162,80,154,95,48,211,145,191,183,99,45,121,30,23,186,252,156,139,57,196,23,128,93,46,122,173,222,172,26,25,184,251,140,115,164,101,72,85,45,153,79,135,101,122,198,37,219,30,174,184,247,147,23,145,166,130,89,183,58,196,198,118,77,251,211,208,15,7,190,62,21,192,200,62,254,76,125,240,234,146,128,172,244,237,20,222,65,110,63,237,7,206,102,69,255,129,121,34,182,32,170,143,224,186,108,234,33,220,24,59,89,134,245,21,210,154,164,250,56,113,74,80,105,2,72,131,120,245,237,27,187,222,88,37,39,17,214,49,62,252,239,59,172,146,252,94,101,187,135,155,134,31,184,213,8,80,76,242,110,78,55,210,180,235,177,110,245,116,186,30,50,7,229,188,47,186,219,244,199,139,233,110,162,162,178,86,160,38,243,59,16,216,164,72,70,134,133,53,43,20,20,116,136,85,131,118,236,192,170,110,196,239,52,37,157,73,128,27,206,235,247,223,118,130,47,253,193,187,137,143,253,15,32,157,138,47,102,242,184,139,78,28,19,226,145,17,114,245,14,75,232,112,64,87,198,119,192,42,125,106,134,164,82,174,140,88,202,38,14,40,212,67,78,161,22,162,184,136,249,132,9,253,75,85,166,81,130,119,147,86,75,16,34,74,104,115,175,233,202,66,214,46,203,19,138,133,34,251,51,87,195,85,30,169,163,132,245,157,89,113,95,200,43,166,9,132,153,24,75,92,36,64,19,133,157,114,202,19,41,190,233,126,169,234,97,75,220,158,161,214,251,5,115,131,72,148,179,13,84,193,81,10,16,204,137,95,251,6,49,241,217,91,137,29,163,134,15,46,250,227,183,11,151,88,209,189,155,221,15,118,235,86,96,196,252,212,255,166,222,26,242,101,42,159,99,183,78,56,130,104,176,142,127,111,89,93,154,131,234,195,61,231,162,209,91,189,47,97,107,124,61,129,244,246,17,210,153,82,121,130,52,115,229,172,194,145,99,217,29,221,48,60,195,202,27,240,97,181,109,170,154,211,43,10,89,15,217,80,1,75,204,91,170,216,102,137,86,250,204,142,106,145,27,81,181,4,249,7,20,211,197,31,88,28,223,78,44,165,71,116,222,146,207,39,62,52,223,243,189,42,249,154,231,136,36,214,111,132,113,154,7,28,206,246,100,169,209,21,67,219,250,189,163,204,83,140,89,47,55,59,220,138,34,167,133,171,42,238,119,167,125,255,141,202,66,162,32,174,68,248,139,51,111,90,159,177,149,164,126,32,14,113,130,100,11,150,165,211,13,37,236,40,248,109,42,212,250,116,159,141,104,157,58,105,184,209,186,189,183,154,85,195,129,194,64,168,57,34,58,237,238,0,109,232,161,5,19,41,96,137,168,135,13,229,235,71,34,63,30,247,244,21,225,62,130,163,149,118,24,38,190,68,57,107,85,15,162,216,188,172,10,135,215,108,44,199,183,27,125,159,146,68,45,43,138,75,196,68,179,132,122,0,167,179,35,169,84,148,111,169,235,74,38,27,237,10,99,125,146,20,243,242,116,176,63,187,211,167,248,144,149,122,152,99,5,37,106,56,29,12,137,145,55,226,43,38,238,60,55,4,229,99,233,125,118,223,9,58,50,100,32,129,154,37,151,192,127,11,45,73,113,197,39,41,201,232,253,231,43,151,77,153,97,248,97,55,206,146,113,77,56,20,147,177,205,43,105,118,222,41,111,222,224,160,14,58,159,93,16,171,39,30,150,188,62,10,234,131,64,63,2,93,255,254,191,191,60,130,95,203,118,247,58,189,97,127,120,35,212,78,125,172,87,100,195,68,119,236,171,181,76,234,236,108,160,153,52,10,104,103,59,7,237,240,91,97,10,52,0,108,179,251,80,25,13,0,93,122,65,136,3,120,61,35,171,198,121,234,140,54,230,79,62,160,151,2,204,218,151,189,213,149,13,122,236,4,14,249,21,163,178,120,180,90,112,187,196,15,150,97,94,62,69,195,181,181,130,89,154,122,15,87,209,222,218,11,15,231,99,203,163,148,54,120,213,88,241,189,29,39,156,236,223,228,18,0,116,106,146,4,249,131,99,96,132,130,101,136,245,27,5,77,233,41,241,46,97,0,124,240,85,249,211,107,158,5,165,4,13,85,106,231,60,121,61,164,236,222,111,252,251,87,0,155,254,244,54,106,157,169,220,225,76,140,101,1,244,58,246,77,59,119,97,215,191,13,156,26,50,53,149,233,145,93,210,105,146,192,193,91,144,111,26,24,43,17,177,113,57,152,135,252,114,218,4,92,135,1,13,102,165,84,72,134,62,219,135,234,179,212,54,4,249,125,188,81,170,13,134,177,213,121,223,11,42,52,219,200,38,51,152,97,133,177,54,8,99,13,246,27,13,175,106,177,92,128,241,215,76,109,202,244,209,236,41,167,222,198,229,0,148,181,13,39,220,91,125,38,248,158,157,183,75,144,202,100,236,142,102,16,48,247,254,115,37,37,79,154,174,35,215,148,29,212,118,69,7,86,146,183,83,224,96,162,134,134,166,130,106,254,106,200,247,98,65,118,32,63,224,18,74,121,235,15,13,182,249,65,27,250,138,84,117,192,226,206,86,150,129,227,18,25,78,68,190,46,169,123,35,110,84,199,86,180,44,88,11,84,60,1,194,151,125,93,89,56,19,111,25,21,34,187,206,156,250,142,46,16,49,153,202,82,137,131,26,48,66,168,187,101,42,103,186,116,8,13,241,242,180,2,123,194,153,25,149,122,182,244,100,233,86,104,142,54,69,25,59,19,73,180,97,235,180,25,13,80,60,138,43,187,31,52,113,86,164,196,246,246,196,72,154,25,87,200,235,8,138,25,174,37,246,177,102,41,129,64,254,126,183,250,115,253,127,58,13,210,74,210,89,109,183,132,134,184,42,226,112,97,12,153,246,240,38,201,117,24,169,100,63,202,5,209,13,250,25,158,248,220,58,226,233,86,210,166,57,40,237,66,189,104,80,107,134,193,126,76,23,183,40,123,64,226,52,16,73,199,27,28,134,121,206,192,18,208,50,47,117,242,150,127,139,28,156,124,30,177,114,130,68,20,198,241,239,205,116,40,47,12,171,243,71,135,244,91,114,198,83,193,67,156,72,69,30,93,21,48,85,215,12,170,235,243,223,106,93,110,170,188,47,124,75,99,252,249,83,136,176,124,143,220,55,234,197,20,85,90,151,44,144,252,184,106,45,91,205,200,56,231,108,122,251,171,234,151,157,218,98,148,140,240,244,34,184,71,111,242,182,236,12,236,52,176,179,245,101,167,185,107,22,178,196,188,83,56,104,177,87,158,87,133,183,118,63,127,71,113,211,230,65,213,207,3,208,2,129,188,70,238,145,66,123,179,187,70,17,39,49,8,157,220,98,63,180,51,124,114,187,140,74,190,53,244,10,61,184,194,136,141,233,109,15,84,21,222,178,170,51,222,252,81,75,99,250,184,101,108,214,20,136,157,166,127,69,86,111,197,123,48,122,48,16,63,160,219,192,5,144,6,17,232,183,207,141,140,145,127,9,161,201,44,170,206,35,202,54,242,83,180,158,93,75,192,229,180,14,125,74,208,41,125,137,242,110,75,241,83,143,224,248,175,222,93,7,103,133,77,248,30,134,47,95,193,60,35,217,23,196,249,143,47,185,15,214,0,88,52,106,176,19,174,4,76,105,237,147,250,58,156,109,60,106,21,91,110,161,105,150,17,143,180,158,168,158,205,192,12,111,92,98,125,202,68,149,167,163,25,55,199,23,51,24,246,250,72,88,117,11,173,79,184,246,248,75,31,149,180,92,164,142,17,220,183,106,20,123,103,68,88,95,57,218,152,130,25,60,63,40,177,148,49,129,121,121,39,221,28,171,33,91,139,209,55,81,207,28,83,116,139,54,24,244,124,51,37,53,163,124,142,99,89,28,98,206,177,142,174,104,51,56,181,3,35,61,241,225,26,188,112,177,43,58,95,140,113,114,113,219,234,248,22,133,217,203,218,47,202,54,88,87,53,244,237,0,253,85,74,102,168,137,133,199,2,177,228,19,86,241,19,139,35,187,201,237,108,141,95,14,244,143,9,42,74,169,49,56,12,143,231,162,69,209,73,249,206,187,227,25,48,201,204,215,154,178,160,68,102,168,195,10,6,214,30,9,156,214,194,9,188,112,163,36,220,19,206,66,29,86,65,184,99,126,4,52,196,148,45,118,155,161,245,98,145,206,8,205,18,141,2,95,209,133,48,134,34,96,133,64,231,156,242,173,249,239,92,201,195,222,60,94,255,79,4,125,151,246,68,31,61,116,106,114,17,98,186,103,16,59,94,90,168,79,7,181,49,67,107,70,138,34,244,119,116,1,165,143,129,24,28,239,144,151,181,27,197,37,45,166,208,81,218,186,250,132,112,123,238,170,238,187,218,221,162,14,11,139,110,88,83,218,164,2,150,184,208,127,182,93,70,105,44,115,90,92,130,159,226,250,248,218,164,245,191,4,232,32,108,152,10,246,217,41,7,107,233,125,179,42,17,233,114,222,171,254,35,126,217,88,192,207,63,72,45,94,159,110,215,63,109,88,95,121,100,88,226,5,155,81,61,137,75,173,201,150,202,169,171,23,233,74,142,104,14,141,114,240,166,83,224,160,66,116,32,242,25,198,133,0,87,79,156,18,53,126,171,217,13,137,125,38,8,192,41,120,249,240,132,177,193,216,173,240,217,47,98,226,181,207,133,87,156,240,175,110,92,151,198,217,78,18,124,58,183,246,227,172,175,150,178,65,3,253,43,180,203,194,75,39,86,33,167,233,127,96,233,20,41,185,44,182,120,2,208,1,179,149,229,79,127,129,136,94,96,98,162,224,195,17,80,89,102,218,176,68,123,209,234,130,64,141,158,131,124,188,211,82,69,135,75,174,15,204,195,230,43,213,161,250,59,179,116,156,14,191,5,198,186,146,3,186,69,74,16,12,183,163,180,69,20,34,203,196,171,11,4,75,75,158,140,252,48,54,6,32,86,99,187,73,252,194,6,164,113,192,196,34,32,25,152,121,251,76,8,108,253,58,64,147,34,177,25,144,61,157,160,110,208,127,56,75,38,78,82,68,93,19,230,101,107,24,73,218,184,133,108,253,154,192,65,140,215,134,191,87,144,114,137,179,103,251,60,243,79,201,247,218,176,14,5,223,48,46,37,131,214,102,133,92,196,17,214,159,40,211,26,79,106,2,219,4,63,243,232,195,8,20,111,66,15,238,232,4,149,103,146,18,198,235,150,97,192,65,158,83,100,6,200,192,246,229,220,206,128,211,105,197,182,107,124,58,149,165,183,247,140,148,47,27,56,19,29,223,200,242,17,186,180,186,140,115,25,142,105,204,223,124,14,18,31,86,59,125,6,2,30,80,144,50,8,220,169,101,96,255,18,47,135,5,227,21,91,76,251,132,164,110,9,55,67,242,83,26,121,212,76,179,53,216,221,27,136,220,249,160,230,1,174,94,215,91,161,170,20,38,216,227,90,160,219,192,37,88,33,169,68,225,167,59,118,172,192,181,44,85,69,52,84,116,30,53,27,114,178,91,71,85,195,228,248,244,94,4,235,169,151,229,20,201,144,133,63,74,32,145,129,100,87,213,228,29,47,50,137,30,234,36,75,8,182,127,128,174,80,64,252,185,21,28,115,46,14,5,84,164,59,42,127,28,153,182,230,229,54,71,184,69,61,94,172,134,158,174,199,254,153,185,211,132,123,110,32,76,218,50,17,93,99,98,152,62,44,161,249,148,137,211,174,38,138,222,44,7,22,146,16,127,121,105,252,135,182,2,74,91,38,197,63,88,133,93,208,56,245,176,209,233,198,170,157,227,216,125,69,194,14,237,150,170,112,242,177,167,229,221,113,252,15,19,90,98,73,19,0,242,148,204,17,85,204,64,140,120,41,210,0,141,153,10,255,83,156,47,201,178,253,75,147,223,155,81,243,170,137,152,191,101,112,34,171,184,214,236,116,78,117,218,55,2,178,183,169,37,203,6,76,148,176,142,220,172,64,23,243,192,94,230,106,130,34,233,254,226,237,115,28,65,221,107,136,199,219,18,106,101,208,14,28,208,244,31,89,246,21,238,27,117,194,147,171,52,134,228,222,180,95,155,192,190,250,74,18,28,150,23,188,229,205,161,192,31,237,146,220,112,40,221,205,189,178,188,34,85,35,155,53,13,119,110,218,55,23,134,250,89,36,177,217,190,61,134,33,69,187,59,249,93,213,81,122,247,250,194,134,118,40,246,140,107,46,120,78,106,202,216,243,129,10,122,7,65,17,244,200,243,196,190,135,205,161,146,224,92,227,30,17,187,75,125,106,36,175,14,248,222,187,128,133,105,186,81,116,59,192,114,139,167,2,254,112,150,36,159,206,144,159,84,237,90,221,216,126,177,201,225,59,121,145,206,41,229,74,1,190,91,123,39,136,64,245,66,145,65,209,55,227,167,125,84,166,66,11,246,46,189,158,123,8,32,3,231,88,99,190,47,246,212,190,248,222,12,91,39,197,187,253,212,232,212,114,118,87,90,191,234,226,28,64,240,54,34,7,155,127,21,4,172,234,171,9,255,87,85,230,22,27,69,242,180,77,56,250,185,143,61,251,175,78,78,143,180,100,162,236,70,157,149,108,101,97,98,196,175,144,119,177,190,112,128,186,41,112,248,153,77,179,57,139,182,217,133,114,41,212,4,136,228,67,2,23,91,62,249,242,188,110,14,140,255,138,114,124,121,243,97,19,221,35,46,199,99,13,55,233,149,19,111,199,231,244,235,130,53,233,62,133,106,53,137,29,249,126,137,233,23,253,26,160,59,17,138,234,93,51,210,80,145,46,2,85,242,223,235,82,27,251,44,220,40,34,190,252,14,255,144,121,47,103,141,147,164,196,143,165,49,151,108,248,251,125,127,45,135,84,19,200,156,116,114,34,228,78,73,187,77,2,80,230,195,43,30,195,53,225,7,73,34,18,19,51,20,169,15,70,250,171,183,221,154,24,147,227,129,243,204,189,240,197,85,206,172,65,144,180,58,231,161,186,179,227,185,35,36,247,201,52,63,118,64,50,141,34,62,211,44,162,136,68,109,186,244,138,214,173,236,172,250,40,230,1,145,71,166,44,73,134,204,197,14,32,137,118,159,198,22,143,157,165,32,191,160,128,144,13,35,150,215,76,100,231,3,29,83,196,27,139,146,26,50,46,105,19,22,211,195,152,237,4,51,249,36,171,55,150,187,66,242,54,137,114,164,38,66,3,149,119,133,109,65,11,138,245,127,186,26,40,129,17,177,17,229,43,147,139,95,131,101,142,185,65,125,181,117,22,231,221,4,182,95,159,17,252,199,149,64,142,132,33,29,203,35,62,194,144,55,89,123,197,236,198,214,152,158,237,155,153,54,137,227,156,70,11,247,213,120,79,120,4,32,173,203,8,55,192,54,216,135,138,198,55,224,198,231,125,145,35,215,253,46,160,74,58,164,126,67,211,39,126,28,0,6,231,201,70,131,31,45,45,130,81,192,1,88,250,186,23,239,127,10,248,52,152,169,105,2,156,189,199,140,137,67,5,202,145,75,90,5,30,250,137,210,145,56,82,183,196,198,4,62,214,198,237,203,146,232,250,13,89,181,250,123,252,99,22,66,232,197,14,110,136,192,190,86,157,93,132,205,89,210,16,161,119,86,56,146,92,103,72,198,46,47,243,96,200,168,220,172,49,13,137,239,172,200,150,39,10,63,7,112,231,42,17,54,180,14,109,237,0,55,117,180,93,45,183,187,95,164,211,24,47,192,64,135,180,230,103,27,240,215,49,157,37,70,132,187,192,188,21,0,17,22,242,145,38,222,176,83,158,41,132,243,11,172,20,42,220,252,213,28,227,108,251,196,122,102,64,231,168,63,242,235,5,73,4,95,110,108,204,222,204,152,177,204,25,78,60,83,63,38,253,62,169,51,139,131,226,218,246,237,163,78,226,102,119,144,191,201,243,50,64,83,29,213,40,254,54,216,58,172,85,228,87,84,14,10,231,107,205,90,6,223,222,243,209,4,11,195,135,184,44,10,77,176,211,209,236,83,112,139,94,102,77,247,246,195,106,140,78,169,199,215,177,188,83,162,217,77,212,149,51,81,149,62,101,0,46,7,253,5,20,138,67,105,157,159,27,75,98,132,222,18,120,52,51,13,253,148,13,169,11,41,167,200,66,159,30,142,221,59,124,199,181,230,38,149,130,13,42,1,231,235,93,124,244,56,119,51,236,151,146,169,155,244,168,204,222,57,28,67,243,123,14,19,57,184,0,171,99,25,209,191,189,177,28,98,152,92,172,112,246,10,177,145,89,95,228,87,49,22,30,240,169,58,247,98,120,151,235,252,212,89,189,240,5,165,135,36,0,92,160,4,251,31,34,116,63,75,227,102,5,84,157,157,187,173,34,80,166,105,157,168,41,162,194,13,71,34,65,243,45,188,200,55,120,250,188,179,40,196,248,26,180,102,47,67,106,219,155,175,133,117,226,95,74,200,124,203,124,103,135,253,254,248,30,45,165,155,86,67,20,31,108,135,51,13,136,113,163,51,237,207,41,169,5,249,101,66,171,41,158,115,106,31,195,178,84,19,176,27,117,9,56,124,206,179,108,42,175,78,141,95,86,242,176,51,69,224,138,80,47,151,97,174,2,197,90,181,69,172,165,8,51,135,232,34,122,93,202,244,236,216,25,205,153,149,210,192,52,202,237,27,209,104,5,201,137,106,97,69,169,120,159,53,193,184,123,181,81,205,87,242,239,155,23,96,233,1,109,202,79,232,227,55,141,238,237,236,27,176,231,82,97,137,104,129,231,146,30,50,77,105,231,200,160,249,111,111,112,188,34,188,45,160,14,26,235,252,230,54,174,86,141,190,20,227,234,113,80,153,138,160,252,137,252,32,141,37,28,52,173,51,194,54,81,169,44,155,251,213,232,60,75,116,56,110,50,184,1,138,78,133,19,110,96,10,23,218,68,145,102,73,169,201,112,186,85,81,228,34,24,64,244,37,132,114,108,236,56,219,96,91,37,184,224,10,220,223,228,235,175,126,147,166,161,37,91,61,136,239,191,203,237,78,119,15,18,186,205,187,179,61,117,71,59,3,143,54,128,72,73,123,101,169,154,39,188,79,130,151,28,131,97,21,236,121,186,244,199,238,122,123,39,157,165,131,229,31,245,239,196,100,168,249,0,213,186,74,227,64,243,215,78,134,226,160,55,90,94,234,198,171,149,115,143,201,221,87,141,41,7,146,101,248,211,229,85,191,31,111,248,204,80,165,240,110,10,254,72,124,122,151,199,224,221,20,57,159,205,138,161,108,6,15,215,246,100,141,80,32,57,46,119,80,80,243,176,210,210,242,217,171,169,247,86,232,164,228,168,238,56,185,130,250,55,190,182,171,200,70,39,171,51,145,212,178,162,202,224,4,173,48,90,77,39,204,12,188,70,240,45,46,250,202,78,225,92,133,6,50,69,5,22,173,27,73,53,221,74,133,168,25,83,196,186,148,100,228,190,210,82,142,163,159,17,12,135,112,50,43,206,204,210,7,196,33,140,253,166,67,203,153,28,243,179,98,232,191,2,10,77,254,7,120,73,118,123,68,92,40,122,158,171,57,152,153,247,64,226,99,188,233,79,181,164,126,245,8,194,213,197,79,112,108,95,22,190,33,94,92,249,160,196,246,241,203,49,24,252,175,164,117,68,129,18,58,187,184,193,146,173,173,90,11,39,82,89,243,2,59,198,69,53,225,76,152,100,183,183,150,95,195,52,155,182,255,23,61,84,145,37,185,160,41,61,159,17,15,124,146,153,75,118,142,162,195,152,163,172,184,160,109,76,162,81,31,166,36,145,153,97,162,183,248,229,141,227,176,150,44,15,112,41,94,138,64,94,164,140,6,10,111,65,159,92,136,214,112,62,230,93,220,240,142,159,72,255,3,16,140,35,26,125,136,180,237,66,50,227,197,48,244,243,233,122,173,15,121,15,214,231,145,85,101,174,196,198,98,142,28,74,38,67,215,7,26,73,254,212,212,125,239,153,85,138,19,76,105,233,227,188,25,108,187,141,41,182,241,151,14,228,96,128,52,203,101,113,130,152,115,28,167,116,141,38,230,22,188,177,35,2,100,152,57,138,193,228,93,217,96,126,26,236,18,38,150,15,235,69,194,98,182,35,136,185,219,81,103,239,84,154,222,84,102,230,17,42,13,121,47,68,99,117,248,155,163,170,246,11,154,187,104,66,82,135,108,134,118,205,20,146,132,36,87,78,168,95,121,12,143,151,185,75,18,64,247,178,233,213,30,25,228,146,57,21,135,37,101,170,141,87,176,16,23,235,17,47,62,70,94,40,204,130,122,40,231,178,240,141,198,94,74,171,152,52,50,248,52,169,173,79,102,56,25,138,26,175,171,190,44,31,209,36,242,30,147,243,98,176,56,17,20,74,12,58,236,113,17,37,6,148,148,29,100,22,44,76,107,235,193,97,24,195,232,196,97,200,57,5,110,52,146,101,189,54,2,112,211,154,102,195,2,4,218,13,137,24,82,115,165,130,58,178,101,36,62,154,159,124,32,225,2,225,202,245,228,192,216,79,74,84,217,164,88,144,165,175,205,207,54,211,170,87,88,74,237,133,231,14,129,29,24,165,151,140,91,176,86,155,201,120,68,106,28,174,26,9,73,56,136,29,219,105,35,184,163,9,224,223,147,175,17,175,58,186,199,165,209,68,161,208,153,71,34,148,19,117,69,144,122,114,74,237,128,2,44,56,209,153,39,89,109,207,238,107,9,51,24,127,187,154,76,119,116,214,239,215,55,75,63,85,52,52,59,81,15,4,149,205,106,67,5,63,250,219,184,143,135,14,136,22,221,195,130,105,105,6,210,64,192,150,194,215,14,121,213,4,172,96,242,220,110,115,152,18,135,136,33,73,146,64,157,126,45,159,85,53,14,97,236,113,105,185,164,43,249,92,255,70,20,117,44,251,74,148,214,2,251,56,108,220,230,17,58,244,219,42,75,135,65,33,159,37,105,249,4,133,55,97,58,254,186,208,139,178,104,58,218,218,16,187,2,206,226,40,227,120,79,37,157,141,39,133,50,84,249,25,69,170,207,15,149,123,4,2,72,209,247,154,46,127,151,192,173,130,58,62,78,246,63,99,148,246,216,120,62,233,3,61,37,212,158,89,192,164,247,100,205,37,175,99,73,158,231,0,172,225,100,122,84,94,206,252,232,240,152,91,129,213,135,90,114,29,83,155,133,3,166,103,86,238,36,150,21,40,184,253,237,218,2,72,181,107,81,193,241,175,137,111,87,103,108,174,108,227,230,23,209,38,176,121,33,254,246,191,51,27,241,19,144,85,247,161,186,96,26,204,3,249,206,148,24,192,6,202,164,73,15,161,60,156,46,197,77,3,200,104,222,113,246,17,37,209,26,138,77,145,26,207,93,18,106,188,40,208,133,230,42,5,230,237,187,246,110,59,54,0,208,170,248,78,199,139,150,216,66,167,128,58,139,99,185,98,228,124,97,11,82,101,108,59,30,90,217,236,253,63,133,185,21,242,48,46,98,51,218,22,245,140,166,183,41,161,143,121,32,2,55,47,36,58,209,143,219,61,46,204,7,139,9,20,39,224,238,99,161,240,104,120,2,133,154,157,206,65,244,30,195,239,28,92,143,41,7,51,84,212,78,48,91,156,22,155,114,82,163,25,175,115,242,112,199,130,142,65,148,22,58,226,131,96,82,211,169,38,137,99,184,220,200,154,136,146,73,21,197,102,102,216,198,127,179,38,178,215,137,225,11,161,159,18,128,210,101,106,7,173,153,3,255,142,31,128,28,127,179,38,180,58,39,79,187,36,128,195,116,152,212,235,99,102,94,59,63,125,2,93,224,37,187,173,1,32,163,109,87,96,172,120,213,23,73,180,81,215,25,79,226,165,0,29,247,142,43,192,50,20,119,113,104,19,41,151,179,164,178,184,6,132,49,104,134,163,59,113,118,16,1,100,232,216,252,19,192,163,103,116,109,136,199,246,102,42,172,137,220,148,91,83,43,80,94,176,97,130,51,247,202,218,32,105,134,132,235,183,84,222,153,202,249,87,253,42,160,148,19,109,97,109,206,194,58,221,189,124,111,192,217,50,122,145,64,194,51,46,108,26,250,167,52,250,156,52,129,32,127,48,198,108,3,33,76,28,235,208,79,203,12,107,59,158,82,250,71,58,18,122,91,24,112,65,174,94,191,110,77,23,188,52,213,51,45,10,219,94,158,135,251,138,91,54,162,165,212,109,170,149,27,28,144,218,243,238,139,244,166,55,207,107,73,219,46,240,173,34,84,90,126,175,10,87,11,74,47,100,204,178,212,243,204,25,148,224,139,153,87,199,55,252,44,251,59,31,109,95,155,140,21,201,157,100,56,67,175,186,225,195,172,196,74,26,129,184,49,220,187,220,1,248,224,175,124,74,52,235,242,237,140,67,45,200,70,140,165,169,49,228,170,69,57,185,153,41,214,158,172,16,204,177,55,102,35,235,118,251,164,139,91,239,226,100,183,137,61,172,18,132,203,83,67,170,28,126,243,57,9,139,78,203,43,97,248,43,198,234,141,232,78,69,115,120,108,10,192,188,186,96,216,36,102,36,87,161,15,53,182,105,189,200,69,199,122,216,248,96,17,123,209,213,235,194,121,223,97,192,197,2,6,167,40,247,3,68,169,177,48,19,63,129,197,53,138,184,255,41,103,207,194,54,121,83,12,141,1,150,79,127,121,209,77,123,118,183,108,213,64,10,236,105,31,192,201,7,173,33,94,229,75,251,185,26,138,10,45,184,169,150,65,248,41,198,96,226,199,63,165,75,170,219,137,89,214,237,28,122,211,122,19,255,17,95,194,34,77,33,19,24,230,73,64,77,71,169,215,126,64,100,60,97,145,103,177,48,83,79,100,129,112,152,211,20,33,73,73,243,169,92,89,129,168,198,194,156,59,119,210,134,27,157,131,150,68,77,1,58,50,219,253,248,42,219,121,156,199,40,89,28,84,103,198,49,19,53,230,74,90,233,243,35,227,29,36,120,64,138,8,94,241,7,39,169,86,18,219,153,65,87,91,244,117,148,60,205,20,9,236,241,103,28,69,143,245,32,132,45,194,140,211,111,39,41,53,213,92,226,222,11,221,204,246,140,14,247,107,5,202,151,35,255,176,255,77,32,153,119,32,36,105,151,52,222,181,77,240,102,58,203,50,149,151,76,166,219,71,137,166,120,74,47,210,152,185,42,72,213,77,80,140,48,151,107,99,51,192,187,105,90,249,174,200,139,231,81,53,132,203,38,145,247,54,64,83,253,105,111,93,30,180,187,76,170,154,137,156,100,198,244,84,236,153,186,10,36,102,164,80,61,38,225,229,106,145,85,226,98,183,190,220,5,1,182,50,168,73,106,25,95,189,2,22,187,27,131,55,56,216,5,175,251,177,213,172,232,128,224,253,184,203,187,110,108,8,98,211,94,227,3,224,11,76,92,4,94,119,68,174,197,181,160,216,76,163,211,185,97,167,252,29,217,28,39,5,194,75,204,42,148,110,14,80,11,130,142,70,252,248,254,21,190,204,38,212,194,212,105,55,50,184,50,153,26,152,12,68,184,24,207,180,164,23,121,51,67,135,243,163,92,223,72,10,95,60,251,148,108,109,188,216,114,189,201,208,206,23,94,156,84,1,223,111,226,114,113,33,92,183,98,60,112,218,152,122,241,150,178,66,233,223,211,235,137,45,73,37,200,101,103,14,194,186,2,109,115,114,30,247,147,78,31,174,139,4,60,3,55,184,199,245,143,44,195,23,14,212,70,77,223,57,155,189,181,227,140,200,222,106,186,231,113,128,243,218,19,217,207,69,147,146,207,35,134,154,80,7,214,26,10,209,27,152,122,78,168,143,171,210,182,106,249,185,47,8,226,223,202,171,200,84,83,195,215,194,198,179,37,140,12,27,9,30,155,185,220,42,243,47,226,112,24,204,236,220,204,229,65,86,1,174,201,188,16,82,128,177,93,29,193,224,102,71,73,126,136,123,57,62,41,245,122,215,210,135,5,130,26,252,53,174,218,26,179,54,182,227,106,128,182,67,12,179,46,51,43,34,31,232,27,193,117,114,152,187,47,240,248,58,129,18,56,21,97,35,223,83,19,68,227,240,27,100,88,77,105,151,16,121,45,87,124,124,8,236,140,91,65,130,170,33,16,226,22,19,35,99,135,187,70,39,116,11,103,136,151,205,101,32,20,5,252,82,75,254,190,196,176,129,55,76,34,213,144,102,62,172,139,34,15,84,226,68,228,96,91,221,185,57,179,25,76,107,148,147,131,214,126,46,20,121,127,197,27,177,202,33,172,162,77,137,24,43,113,19,87,158,48,25,107,73,25,119,145,176,148,194,126,39,185,232,31,181,150,30,207,241,111,187,200,153,3,248,54,55,146,188,87,173,213,134,17,118,44,53,88,243,250,103,8,173,231,74,199,162,79,231,140,44,133,1,0,192,78,107,130,97,82,93,193,178,246,105,180,203,59,113,16,190,93,68,131,122,107,41,51,165,59,111,242,104,221,245,46,206,80,210,68,152,77,161,109,3,236,55,227,165,92,236,234,21,22,8,156,19,239,214,142,206,115,109,240,115,129,71,42,232,136,239,50,152,171,156,189,77,13,212,189,18,83,214,220,177,66,11,166,37,164,163,198,26,137,70,172,95,108,66,112,217,249,149,46,139,105,60,32,91,110,250,241,199,242,243,192,41,51,128,63,17,96,221,105,194,153,176,106,251,26,35,214,215,63,137,229,170,33,85,69,32,10,47,113,193,180,131,206,219,176,127,79,219,120,118,155,109,49,206,231,219,79,104,197,240,184,10,73,156,91,76,29,131,114,123,167,189,84,63,141,29,227,226,207,115,87,38,155,127,181,7,243,137,79,177,0,148,237,157,144,223,49,122,47,82,192,171,54,131,168,135,52,102,67,157,53,198,131,67,147,203,251,54,5,156,59,113,95,207,223,162,245,194,108,163,152,55,101,160,221,212,17,154,145,145,174,28,125,158,106,81,151,52,223,167,21,238,152,255,220,102,75,19,167,65,69,225,225,232,229,110,118,56,245,182,252,31,165,192,105,76,2,253,119,230,231,203,76,32,72,74,57,47,99,127,235,134,211,227,66,138,198,82,137,189,150,47,91,166,52,206,130,232,238,27,115,153,182,207,8,173,139,17,46,240,62,24,37,202,91,201,222,42,68,29,84,135,250,71,9,21,142,16,50,165,224,189,109,232,75,98,221,84,66,89,197,199,41,83,215,34,170,61,96,192,62,17,4,21,121,59,99,208,122,133,95,172,189,107,106,121,37,51,9,178,124,173,165,220,191,72,24,80,139,45,242,188,105,49,165,177,104,232,236,209,20,46,163,157,232,244,97,245,237,228,200,190,88,205,72,193,19,119,26,83,46,207,87,233,131,103,24,105,145,40,134,215,81,152,144,149,18,183,140,117,46,77,5,220,59,227,142,201,56,73,216,45,27,148,3,82,211,225,122,32,73,226,69,174,7,124,5,218,86,172,146,99,55,215,60,29,26,193,46,187,72,162,93,122,211,30,187,169,249,251,118,235,198,118,163,95,166,216,103,198,21,90,71,57,162,237,202,21,28,34,251,201,172,210,149,89,103,149,21,205,183,241,196,150,12,236,148,143,187,121,242,178,149,169,216,50,177,121,130,164,116,176,136,78,8,9,159,232,165,36,133,118,244,10,107,107,52,243,80,48,212,233,225,40,42,54,195,220,234,94,78,251,216,255,158,91,112,32,174,254,100,151,133,120,243,147,144,105,230,179,24,63,213,252,218,32,141,64,149,100,43,88,169,172,72,163,132,115,157,214,80,147,234,31,215,115,254,101,193,176,50,185,43,104,222,198,218,188,54,151,16,193,23,246,183,157,48,147,24,239,186,63,25,10,174,6,17,38,128,76,32,255,128,2,203,174,104,235,56,118,220,30,80,62,1,154,90,72,225,204,49,160,92,217,30,213,232,88,187,4,154,87,207,99,6,5,101,205,90,62,128,187,53,138,122,120,182,154,21,88,214,169,34,230,136,219,210,248,140,119,153,69,119,35,228,239,36,32,217,4,115,242,190,19,76,149,202,236,121,219,26,35,25,30,220,185,48,120,164,146,19,123,157,136,21,240,239,236,149,52,247,129,220,186,150,234,131,54,82,136,217,179,184,72,43,181,14,143,86,210,133,132,234,191,77,206,146,35,17,116,130,57,130,89,20,38,191,8,103,79,92,52,124,140,118,57,196,65,118,183,80,148,158,247,201,217,251,204,122,68,76,84,66,23,238,89,9,137,231,8,45,157,34,0,154,41,52,6,94,169,149,39,212,75,112,59,251,79,117,209,15,197,21,207,66,167,176,247,132,46,56,213,188,227,4,154,14,133,20,51,152,97,66,146,160,244,33,36,230,189,4,42,95,116,66,117,240,192,3,119,50,143,141,111,118,254,60,120,114,81,160,218,35,0,97,35,89,34,128,110,37,106,211,150,250,161,183,80,110,15,49,74,106,41,76,165,127,164,5,147,214,8,136,61,101,178,253,245,254,248,171,154,72,153,2,97,186,31,61,102,127,40,204,93,140,197,145,11,46,7,41,137,230,0,23,150,18,80,187,121,134,78,24,188,47,254,7,229,186,114,170,38,25,184,145,179,220,8,7,188,101,78,105,89,4,250,114,100,180,122,240,39,73,247,71,25,2,109,7,171,215,60,96,240,250,9,212,84,235,249,207,163,208,48,241,116,166,229,101,169,62,14,254,16,112,27,211,142,44,238,216,0,97,2,218,65,50,175,64,32,48,237,152,78,222,55,243,19,173,161,146,140,23,35,63,234,209,203,46,192,29,44,115,94,50,231,161,108,61,253,220,209,137,15,105,46,226,239,30,190,77,239,108,112,121,78,74,4,24,172,120,83,164,2,124,66,234,253,250,183,239,19,220,7,43,73,100,14,221,231,171,165,35,101,191,200,128,49,139,79,8,97,245,9,154,228,110,218,60,28,39,248,197,18,171,143,93,238,26,234,23,44,71,95,209,71,253,101,94,162,179,247,79,167,18,110,209,181,118,98,157,133,64,106,67,195,134,59,238,108,46,162,102,226,103,194,169,120,107,18,235,63,161,181,254,102,36,45,145,1,117,101,112,92,141,236,21,8,236,243,24,101,191,241,248,216,160,78,131,154,246,56,37,118,182,158,158,200,70,109,223,194,48,49,143,11,203,151,188,0,254,24,99,251,123,251,196,207,146,111,173,123,225,223,122,105,172,35,209,235,109,174,221,230,20,255,16,120,151,19,19,94,44,7,190,199,132,227,183,5,59,158,224,72,16,95,173,177,232,44,122,175,145,228,142,4,155,30,100,165,177,88,189,39,109,123,118,161,89,87,64,253,53,106,12,86,193,118,64,68,17,198,14,48,101,149,136,225,135,195,38,27,230,255,205,155,44,187,46,151,12,234,172,118,210,164,47,214,160,58,177,244,236,46,148,252,101,105,94,81,0,74,118,241,147,40,112,241,171,249,246,218,177,83,207,115,184,66,56,12,214,120,53,27,22,163,203,253,153,127,236,95,109,104,66,65,241,233,250,52,30,48,110,198,117,73,56,71,32,69,109,187,142,168,43,102,239,18,209,232,110,252,82,57,30,131,49,197,255,231,253,116,8,100,85,172,235,226,89,238,188,161,196,77,109,196,75,120,218,197,249,163,79,124,68,76,189,68,20,51,34,151,232,63,101,204,1,20,23,169,169,40,206,46,32,129,145,103,96,207,53,89,190,114,153,123,81,111,77,112,181,78,84,111,29,94,218,189,183,87,51,207,174,119,158,121,248,76,54,19,80,40,205,190,195,220,51,3,11,159,23,71,246,178,127,67,185,122,201,215,8,176,75,142,11,74,7,198,254,246,104,47,241,134,190,5,43,132,3,181,142,252,177,83,238,57,56,65,16,46,90,239,160,6,100,177,59,134,65,29,22,47,148,87,158,182,30,220,229,234,210,57,221,121,22,224,249,64,30,80,154,89,251,68,58,206,128,248,101,130,155,174,221,210,122,72,72,68,117,120,123,135,234,83,106,79,1,170,53,45,123,146,39,47,4,215,134,140,255,225,208,180,175,49,13,189,146,249,72,77,208,143,108,120,119,134,64,42,142,20,227,244,165,175,204,191,200,56,12,4,176,6,4,152,60,187,176,159,6,56,148,27,175,102,60,155,93,98,176,64,159,227,189,133,98,220,178,106,217,55,117,87,99,148,38,243,143,202,35,149,232,120,95,194,250,120,26,186,41,67,150,99,44,100,227,195,117,93,249,164,94,67,57,137,203,245,14,234,63,69,171,229,185,21,134,207,29,74,245,7,9,98,64,160,169,90,208,36,39,74,200,168,196,110,243,213,27,40,93,211,114,64,224,111,254,105,226,61,198,23,226,237,36,238,190,110,255,134,21,50,174,125,187,232,96,71,208,152,207,229,71,230,28,239,197,29,146,171,43,129,121,97,181,98,59,24,89,156,130,28,74,232,192,72,213,174,120,240,184,228,25,85,220,22,57,84,24,226,205,214,102,44,247,153,151,153,211,26,205,154,144,69,175,235,11,217,177,6,106,117,82,235,43,50,175,117,58,123,4,229,40,112,217,124,55,154,152,228,156,155,219,122,93,102,204,5,0,111,224,39,52,167,83,107,29,159,249,216,18,88,111,15,13,131,177,51,13,181,109,139,237,18,252,252,18,20,16,241,138,7,210,193,121,208,147,237,205,240,33,50,27,170,88,231,253,204,90,66,202,171,206,225,153,227,71,48,243,18,234,114,120,201,16,232,144,79,74,199,20,52,105,157,6,115,95,121,109,11,96,116,108,75,252,243,117,81,15,47,58,227,226,108,171,243,45,74,218,88,104,75,132,104,168,242,174,242,217,150,184,184,152,47,245,56,254,9,232,1,24,68,219,249,165,238,29,186,48,51,167,211,20,232,173,153,245,77,61,75,14,90,107,70,24,69,0,116,250,221,226,21,41,242,27,163,188,242,253,72,231,27,137,145,57,151,237,15,182,188,26,112,170,13,221,92,9,142,79,139,179,137,132,72,103,227,172,124,127,188,98,201,123,201,82,209,60,105,104,225,199,88,110,208,223,79,77,225,152,117,57,223,164,112,116,136,83,82,157,217,77,171,123,92,20,0,113,179,184,121,78,215,204,168,24,86,217,60,183,203,206,202,188,28,129,159,119,70,125,182,22,234,126,96,22,27,208,45,162,191,84,2,3,5,28,60,92,35,115,189,121,11,147,58,195,30,153,225,109,64,141,96,183,33,250,123,126,71,157,218,92,152,151,147,216,17,11,226,17,163,190,13,164,131,190,188,155,64,244,179,30,54,77,201,155,53,31,39,217,222,130,214,199,97,216,125,35,12,16,245,180,33,232,15,52,145,80,222,102,9,86,200,246,141,58,134,22,53,29,119,125,48,118,70,228,105,206,137,252,239,173,61,198,176,225,117,134,6,49,91,20,28,4,102,164,168,26,222,228,13,62,235,218,50,124,155,230,227,248,204,82,127,151,56,88,169,181,77,95,60,52,76,248,239,195,175,2,91,6,143,80,242,37,154,153,194,255,182,238,116,72,33,0,251,68,14,193,80,161,52,117,77,233,33,35,150,249,159,85,165,95,234,159,207,67,216,229,167,21,121,228,63,160,15,245,198,140,130,83,102,62,194,237,168,103,191,178,13,152,135,52,249,177,180,100,208,128,154,206,245,176,186,13,235,15,134,73,160,189,190,130,235,230,2,213,83,140,237,89,179,181,213,162,19,12,72,193,53,94,77,133,49,61,55,102,151,53,234,89,32,45,135,183,39,7,104,128,41,136,13,225,113,141,171,243,199,235,111,239,152,98,70,150,28,186,100,38,141,167,41,61,148,248,220,88,231,158,65,45,25,90,72,176,69,97,113,8,136,199,58,86,8,201,201,156,219,118,24,143,203,91,189,116,30,49,35,242,59,219,250,31,206,254,241,154,124,94,220,167,99,13,27,229,137,31,235,92,65,140,142,250,36,139,163,90,182,168,138,129,144,96,154,32,198,93,194,227,174,71,131,31,40,162,234,210,142,234,14,47,243,212,220,59,69,53,31,101,7,242,109,99,241,57,208,114,202,234,187,245,171,205,111,97,234,210,149,0,83,81,175,55,120,49,112,229,131,24,242,124,247,8,188,171,82,187,56,250,247,174,76,185,190,149,177,56,74,32,250,229,72,141,163,242,20,192,217,239,11,61,33,17,223,249,87,177,200,55,39,228,88,26,200,62,43,39,146,163,64,68,219,78,113,10,111,78,108,5,14,217,220,15,93,57,146,55,131,61,18,73,14,166,128,114,65,53,95,112,151,71,234,67,92,150,152,237,238,17,58,169,17,133,86,138,250,173,66,58,177,145,246,160,185,250,66,241,112,230,172,250,33,98,6,56,244,148,168,150,92,39,58,193,166,168,23,94,1,204,189,36,82,165,96,162,52,175,235,8,55,35,142,108,25,192,68,166,183,254,100,4,239,56,66,173,176,162,160,78,29,207,219,178,29,78,200,240,102,165,173,63,242,79,217,77,176,140,48,213,244,156,138,169,195,100,19,97,100,62,174,148,0,66,149,76,53,72,226,101,203,131,167,188,94,229,242,58,140,240,64,231,126,232,14,181,42,162,48,67,25,246,160,53,17,189,178,124,23,193,194,171,25,24,254,164,88,185,190,194,158,4,165,68,80,167,102,178,64,188,200,102,86,210,73,5,28,14,202,216,12,243,79,174,37,238,86,51,57,105,84,199,10,212,23,185,120,128,71,111,42,2,39,4,108,180,137,182,21,101,251,173,172,13,33,240,155,180,60,145,12,32,112,124,154,171,203,186,220,142,165,227,118,172,38,211,78,134,114,219,93,199,237,134,110,113,213,67,74,74,53,217,119,98,118,211,93,231,246,34,133,242,155,60,17,66,170,184,236,98,17,69,154,45,131,127,161,198,190,240,170,51,161,126,44,115,138,37,178,92,76,100,147,187,111,226,176,115,19,42,189,252,24,103,243,223,124,134,21,242,168,148,39,148,89,214,254,107,196,72,220,148,255,182,242,133,45,115,111,205,146,45,17,205,134,107,76,240,38,27,181,208,227,206,35,212,83,187,22,77,149,205,207,184,42,169,149,243,22,168,128,148,197,39,104,26,136,239,160,239,228,171,237,10,170,194,128,174,79,137,104,179,35,98,41,70,226,77,158,160,199,146,186,138,25,69,168,101,167,147,220,209,56,43,195,33,26,137,107,226,254,44,98,186,173,193,25,65,147,27,52,162,1,178,26,99,33,167,210,180,32,24,249,212,79,94,253,163,131,100,8,198,182,87,251,176,52,64,10,58,45,59,215,163,40,66,121,62,23,52,110,197,250,254,70,91,239,4,182,216,125,232,1,62,140,164,6,188,129,121,226,72,183,123,99,139,99,19,75,213,248,145,191,211,14,44,183,177,18,66,207,172,136,132,110,186,119,206,118,236,31,51,61,26,243,54,52,170,42,199,247,135,45,108,207,49,68,139,112,111,8,230,207,103,100,220,50,220,78,22,174,135,196,130,185,89,146,227,146,84,184,9,235,121,121,48,83,103,235,158,244,235,38,46,20,247,50,11,118,205,174,220,91,18,21,154,80,234,164,233,3,67,184,89,161,11,254,179,60,32,236,8,155,36,219,229,130,113,103,58,113,133,138,85,164,157,245,77,212,61,231,131,178,49,142,214,39,18,240,38,247,236,107,72,136,159,226,141,237,229,206,35,189,166,6,221,13,179,217,229,20,148,0,161,216,20,227,229,118,240,225,35,204,122,207,219,27,26,80,108,245,213,216,34,130,43,1,172,31,134,153,147,20,141,6,202,126,235,222,220,11,219,173,98,184,167,147,69,51,193,147,157,59,204,95,230,189,45,254,119,213,195,119,163,75,78,133,231,76,124,111,240,220,109,197,40,233,133,27,251,47,156,61,92,202,98,80,28,236,12,84,110,85,250,233,107,127,228,19,105,109,75,154,245,176,194,239,58,24,246,155,79,180,193,196,42,48,88,44,241,27,115,191,30,3,185,78,220,96,158,80,111,180,205,85,120,189,2,81,86,109,207,234,97,3,215,144,56,245,50,115,215,72,28,75,117,130,97,0,132,37,160,177,13,89,29,54,147,160,134,17,74,122,157,143,49,53,71,221,165,105,193,150,182,115,14,111,194,85,249,218,4,90,223,161,76,32,13,72,129,253,153,15,162,59,231,137,62,65,36,148,245,43,215,59,188,19,208,118,97,130,12,132,194,54,120,49,244,182,190,60,166,240,40,14,153,19,105,140,122,157,213,150,205,56,42,233,70,181,241,122,185,9,83,51,231,162,141,222,226,171,153,51,243,30,157,196,251,132,203,187,249,118,52,148,234,165,74,15,233,121,209,228,192,169,188,10,245,217,11,209,102,61,109,75,47,242,134,39,20,79,151,112,212,169,163,53,39,77,206,6,70,192,131,179,134,199,253,142,111,59,225,10,233,36,31,164,54,77,243,94,210,220,95,14,196,120,169,167,219,93,49,254,186,99,187,74,124,133,199,248,221,57,180,81,230,191,136,52,183,70,223,221,11,57,216,74,218,252,176,3,239,128,221,215,39,255,69,3,98,137,10,184,147,181,202,187,206,101,111,108,51,170,125,230,107,201,215,152,214,6,181,200,46,20,221,111,149,186,244,46,86,106,133,26,160,225,199,209,18,33,218,114,117,168,216,244,200,6,121,236,222,18,43,212,48,104,100,23,149,141,61,50,189,129,51,8,253,57,250,83,125,75,23,155,35,87,110,201,109,188,90,179,205,204,70,89,171,15,209,247,2,63,135,161,152,39,58,165,81,140,14,194,237,129,58,197,216,114,139,199,150,18,69,155,2,201,80,228,136,204,102,238,241,138,81,171,19,140,101,24,199,27,21,88,219,103,179,195,134,233,21,181,102,176,69,206,77,153,57,84,157,188,119,186,219,135,237,195,134,220,96,181,21,93,196,179,5,20,193,20,19,251,238,240,57,141,161,40,188,182,98,138,30,90,153,10,111,77,132,215,28,16,61,152,248,202,22,58,228,223,211,74,218,245,168,129,87,102,3,124,82,216,199,73,234,55,64,38,120,128,78,133,40,179,147,43,124,66,12,3,36,159,103,238,139,1,176,100,43,18,150,37,141,10,123,246,83,194,55,159,18,228,242,122,35,130,159,36,79,48,250,204,10,27,218,194,61,100,249,178,24,163,255,125,12,241,25,217,214,234,93,174,118,8,73,140,5,219,90,136,244,95,178,32,210,242,234,63,180,66,237,195,165,77,231,171,70,121,148,199,227,56,56,78,130,219,32,91,189,54,64,71,119,61,163,176,220,74,64,250,234,211,141,176,190,228,166,92,176,80,222,197,64,143,49,226,189,30,104,15,213,211,181,13,202,70,39,132,202,110,117,91,121,37,236,251,42,109,51,202,137,69,48,167,218,125,25,112,2,161,64,89,107,92,107,144,62,198,66,43,132,146,70,218,242,94,142,53,120,132,55,53,177,221,147,99,159,53,32,115,186,70,114,223,188,88,223,72,115,192,35,86,57,10,227,129,204,164,57,126,116,66,239,154,44,173,117,238,52,24,19,58,34,87,96,193,235,122,122,211,209,192,57,203,183,106,171,170,195,107,179,211,39,76,239,102,103,114,190,8,123,189,221,201,169,133,208,190,17,147,232,43,110,215,179,114,78,234,16,83,157,254,148,196,28,55,223,171,169,153,177,173,40,162,30,224,7,152,57,43,118,222,150,219,224,173,30,12,99,22,122,169,125,234,29,122,195,172,72,113,232,28,155,206,48,253,12,13,82,5,111,83,69,7,34,79,230,161,31,247,171,236,226,227,53,94,78,139,6,130,65,181,168,90,173,243,67,117,254,145,244,195,44,15,166,92,2,74,19,99,28,148,189,174,49,165,6,138,90,31,168,80,83,177,20,96,115,26,81,186,219,236,197,113,34,66,193,8,71,172,175,185,53,209,65,208,219,35,119,66,184,104,121,21,211,199,236,122,116,46,27,210,83,110,44,16,180,16,109,185,118,21,144,38,255,203,29,88,31,138,77,112,81,15,156,73,68,102,48,86,76,167,167,87,146,104,211,7,175,42,108,247,209,76,110,102,235,190,152,73,171,253,120,206,136,67,185,3,166,200,4,148,228,189,170,73,122,246,196,245,116,147,148,139,149,215,129,176,237,247,183,43,78,65,255,247,196,43,134,104,245,148,6,114,242,8,224,161,18,158,83,112,35,69,2,132,115,216,159,119,14,20,127,209,255,140,3,13,49,103,65,8,119,124,121,214,82,124,37,36,91,30,80,205,222,134,200,210,26,15,83,142,68,85,213,12,138,210,83,95,250,23,238,221,240,82,90,119,115,74,17,87,177,171,157,58,69,148,100,5,195,84,244,80,159,253,131,149,39,138,6,211,8,76,213,70,123,4,92,48,181,231,36,209,78,172,123,160,180,159,224,213,201,188,54,147,228,94,56,252,211,223,144,227,156,97,218,187,224,89,96,147,86,71,181,190,81,135,84,206,34,57,148,238,217,175,107,136,145,167,150,132,193,161,219,109,188,106,246,168,67,124,6,141,62,113,21,35,80,40,235,13,192,7,39,254,36,9,246,56,151,7,175,120,196,143,212,61,236,115,171,171,183,112,109,204,114,118,26,5,86,23,104,156,117,250,225,213,197,225,118,145,145,35,77,136,236,47,104,89,135,34,43,25,26,251,119,85,31,15,49,181,114,242,203,134,141,247,66,180,57,203,4,244,245,219,56,90,57,82,254,219,106,231,43,36,93,135,141,36,245,73,22,22,87,157,26,133,190,27,175,72,29,170,155,98,198,45,63,223,94,24,51,36,194,186,108,18,243,108,243,242,223,191,174,122,212,6,103,239,33,244,12,216,21,65,153,27,225,191,224,15,244,67,234,176,246,149,24,168,112,5,250,122,185,40,237,210,77,28,212,172,192,105,20,78,57,87,201,222,48,67,109,192,9,9,83,57,138,27,238,148,103,127,100,244,216,242,247,114,250,125,207,172,116,9,9,4,63,30,147,197,120,219,191,156,115,142,160,27,17,51,6,165,26,76,87,143,139,140,147,243,242,96,247,12,65,38,59,117,139,246,26,145,203,207,187,110,108,238,48,14,215,177,59,57,227,79,23,233,146,35,220,134,78,23,114,61,189,183,188,252,151,136,49,29,78,156,181,71,140,11,214,99,94,6,221,194,170,233,36,151,196,191,60,92,183,234,134,207,159,233,32,93,99,165,198,238,214,228,71,220,131,114,43,46,184,114,12,3,211,140,223,238,6,15,133,126,113,98,29,61,47,17,8,146,121,253,185,51,249,58,26,138,27,111,176,3,194,172,29,201,119,123,75,82,41,39,50,214,226,207,153,16,166,44,47,35,71,214,232,241,110,127,175,170,68,222,179,138,66,228,88,61,12,22,166,84,99,98,159,51,58,80,150,43,17,95,102,140,23,184,248,236,182,103,211,114,95,198,100,46,164,100,216,189,200,139,56,238,245,98,139,60,105,53,26,252,85,29,200,108,97,236,251,180,136,105,24,6,136,185,197,38,99,5,130,47,131,138,136,177,8,25,70,160,116,227,89,10,223,24,228,52,146,87,9,57,13,79,129,161,7,204,49,11,46,144,81,40,231,30,69,100,9,120,70,202,65,220,12,208,161,138,79,229,69,242,76,134,15,226,81,91,230,123,154,107,108,132,238,126,41,39,244,215,140,75,45,228,161,163,217,250,106,124,205,110,89,20,66,198,81,112,36,224,42,147,235,170,94,14,220,154,103,153,112,180,219,74,44,102,212,195,159,168,176,236,64,61,162,173,73,80,46,183,146,150,4,191,60,25,149,139,169,211,62,204,140,198,225,182,188,238,247,167,239,99,83,240,13,89,170,203,94,196,195,220,93,103,251,127,65,169,122,164,65,95,111,235,40,121,183,254,138,238,63,97,239,134,79,247,57,237,118,156,0,27,127,8,185,40,24,108,42,121,170,162,102,71,219,191,32,17,40,176,33,60,170,48,69,217,95,219,124,250,178,74,178,50,39,254,112,109,241,183,208,199,207,93,110,133,100,51,96,233,196,231,232,161,172,81,156,78,161,100,102,156,23,136,132,223,193,100,234,163,231,111,227,168,14,176,28,200,41,13,122,21,59,63,201,50,37,92,216,18,186,112,229,122,152,147,207,14,192,124,15,44,23,205,137,117,57,51,199,28,184,67,63,210,4,239,197,169,122,50,151,34,109,18,130,183,229,56,126,71,41,63,60,149,7,37,67,15,95,41,186,84,160,34,4,20,252,96,36,127,183,122,216,68,32,56,247,193,160,211,243,105,99,107,67,56,32,171,116,217,8,59,174,213,230,49,43,25,246,180,100,82,55,102,249,152,182,25,45,234,194,138,16,117,143,204,220,244,69,153,108,60,221,187,97,224,235,180,181,239,177,132,37,176,223,152,86,144,73,222,219,138,140,252,66,156,156,69,32,167,80,232,85,170,66,208,198,182,75,195,222,32,60,54,54,167,18,63,21,116,37,119,218,253,215,27,170,100,108,118,139,34,25,125,156,51,136,242,63,117,230,87,50,232,138,36,90,248,109,16,95,250,153,174,19,205,69,170,228,160,142,151,252,37,22,81,209,45,40,225,254,85,134,40,96,38,62,196,181,89,68,145,14,91,99,64,52,15,148,219,185,253,114,7,181,39,8,70,220,166,104,223,13,106,121,129,176,251,28,189,6,143,27,14,232,254,21,111,69,32,139,5,135,86,250,73,90,151,176,121,52,122,207,175,111,231,230,208,87,237,105,47,147,54,239,248,172,194,242,129,136,102,254,139,18,229,177,47,251,105,28,40,12,220,84,48,10,85,91,12,217,117,155,95,41,239,90,98,170,130,140,130,56,202,148,42,27,116,207,60,3,4,216,116,4,168,199,207,112,86,89,208,134,147,55,79,101,217,155,87,151,228,188,237,208,255,138,132,119,195,76,155,224,232,254,190,204,59,182,209,121,57,253,56,208,163,111,189,90,120,97,74,14,219,35,18,55,240,125,243,132,163,239,162,114,164,27,41,55,168,99,151,60,136,135,79,105,125,243,49,65,184,28,62,178,76,22,79,150,34,176,250,69,12,162,251,207,238,126,169,44,138,53,67,116,236,4,38,115,158,210,110,158,169,205,2,0,28,118,23,15,140,185,88,155,243,24,90,157,187,53,2,172,174,160,178,14,66,240,156,148,140,222,217,16,62,244,204,46,169,41,13,157,250,87,187,160,210,236,128,59,236,234,110,115,57,142,144,250,0,116,224,145,185,155,139,215,185,183,163,222,48,247,240,53,20,11,148,167,33,241,63,210,96,229,51,94,123,108,5,129,123,100,121,40,197,149,38,111,237,119,174,196,229,203,243,234,54,32,196,119,155,119,171,132,55,124,212,153,217,39,6,115,69,228,71,199,173,127,227,126,162,71,21,112,155,17,68,200,176,207,51,24,88,155,42,94,10,68,151,171,50,99,62,233,27,7,221,154,22,20,244,29,117,48,116,191,10,108,214,32,177,35,207,76,133,175,55,179,218,146,29,237,141,241,244,165,4,57,197,105,236,209,30,214,44,221,113,89,49,8,50,246,215,2,116,26,221,125,25,61,212,118,142,217,157,14,35,28,111,80,217,168,77,129,246,226,186,11,206,185,60,245,55,65,248,201,226,15,124,53,210,203,43,232,97,15,53,155,128,96,67,33,94,233,243,50,57,49,235,48,62,233,235,140,51,187,10,22,158,128,196,153,53,47,118,132,157,117,194,126,69,30,93,170,58,231,6,10,52,240,16,147,222,26,238,6,203,173,194,179,20,231,25,146,174,194,79,180,45,101,18,189,98,103,215,192,221,136,81,244,203,21,216,82,74,9,3,125,100,210,3,211,62,79,247,10,202,191,5,42,42,59,74,109,4,11,240,23,97,86,123,203,150,41,140,122,201,75,72,40,112,45,206,195,173,190,82,40,77,239,72,22,212,10,97,103,41,72,173,34,137,49,192,23,188,27,222,131,100,24,76,144,226,66,114,113,56,14,226,225,151,136,111,101,63,237,136,214,153,2,173,171,229,201,187,227,216,227,207,101,30,113,14,32,172,27,44,9,58,235,145,120,236,54,157,111,199,148,48,167,156,106,103,140,14,36,163,30,114,231,51,122,196,71,0,68,200,141,2,169,150,117,84,26,150,63,216,201,52,129,237,154,31,147,102,185,5,78,204,236,123,137,18,121,107,158,117,47,239,233,192,112,69,155,2,196,16,68,237,161,130,139,231,133,210,77,194,136,204,177,252,65,108,148,250,116,250,162,179,209,198,137,140,187,176,14,133,77,202,113,45,23,35,78,180,222,153,244,4,140,177,158,0,110,164,7,205,190,102,11,15,246,28,240,44,71,252,36,232,234,112,128,106,35,88,21,132,9,249,3,211,240,11,223,134,121,172,216,63,187,116,26,222,177,137,248,255,82,38,94,115,249,224,215,150,134,119,51,90,92,183,5,209,233,174,69,125,199,237,174,151,240,25,8,164,215,232,35,218,43,222,75,238,14,126,52,16,123,44,71,84,29,49,16,148,88,93,204,181,137,45,106,247,105,181,76,51,116,113,122,176,105,212,245,187,96,199,194,177,16,31,66,43,69,128,92,183,74,96,111,94,152,162,217,134,87,112,185,41,151,2,111,4,85,145,44,239,4,88,13,75,210,111,220,222,204,232,13,102,175,183,86,191,56,6,90,38,107,45,230,64,172,100,83,82,232,119,99,219,48,3,225,27,72,20,99,123,40,57,110,28,214,138,73,126,200,219,119,113,255,137,195,71,212,126,33,233,88,181,152,242,246,253,128,223,100,89,16,51,108,148,252,21,80,166,120,89,205,70,153,26,87,6,212,58,109,9,128,30,107,144,23,127,249,132,196,176,254,163,187,16,156,55,48,51,221,225,212,187,124,15,95,90,25,195,79,240,85,233,215,196,210,117,37,253,156,65,132,168,35,47,102,165,174,217,198,69,26,24,79,227,154,144,174,21,205,253,62,182,39,83,251,162,236,163,17,44,124,91,146,16,245,192,167,35,215,121,28,19,56,180,4,177,4,215,124,199,20,123,199,207,200,96,202,66,238,96,3,143,22,29,20,237,124,150,71,16,178,50,63,86,92,73,34,188,87,157,14,198,115,184,2,173,39,173,105,185,66,48,54,222,67,44,11,158,102,187,200,139,37,141,242,182,205,228,201,63,251,1,1,157,200,69,78,151,128,223,95,44,231,252,107,42,17,193,49,16,208,146,96,164,121,59,49,97,29,223,64,67,117,138,214,54,114,59,28,118,218,125,146,41,124,163,6,250,200,248,38,107,7,204,243,132,25,120,213,240,71,42,201,98,205,198,67,20,220,238,16,247,71,247,22,217,243,181,210,129,232,94,113,161,237,205,95,182,106,218,170,199,137,34,10,206,165,63,158,104,157,65,247,240,241,132,118,67,132,214,254,89,173,97,203,12,224,18,82,107,195,117,145,160,205,117,127,37,125,26,71,60,187,83,252,71,228,45,249,206,60,26,189,140,143,47,160,218,179,59,202,13,97,222,91,86,23,100,179,96,243,62,141,0,231,173,212,78,118,125,229,101,211,98,237,205,232,38,225,197,197,166,133,117,103,17,16,19,42,106,226,78,174,48,33,104,223,57,234,217,144,206,108,180,166,8,179,84,108,212,135,146,218,65,35,195,142,137,42,77,87,46,171,144,251,186,167,180,72,226,95,204,131,121,72,207,120,51,3,191,235,171,55,95,189,251,137,104,15,222,74,85,114,82,137,92,149,102,57,108,128,244,184,4,69,197,43,137,89,27,47,160,69,144,76,78,6,134,55,232,55,195,181,175,7,213,235,98,190,148,27,37,34,98,171,240,125,136,97,143,28,83,160,87,207,14,210,78,14,60,75,179,234,9,192,178,143,222,55,61,68,3,19,35,224,110,237,2,236,151,209,35,66,70,212,100,218,1,206,211,213,96,247,254,89,164,6,233,80,54,93,106,16,126,239,94,110,22,240,224,187,8,190,179,249,195,72,160,229,166,175,60,190,30,27,20,193,29,234,169,220,21,171,101,133,220,172,134,106,147,220,33,48,250,207,243,195,137,112,92,203,26,232,230,100,71,8,156,226,52,199,132,252,105,111,125,62,22,169,34,182,229,77,93,87,62,66,179,194,180,82,6,198,227,111,103,231,69,64,237,206,165,158,60,242,222,159,109,218,21,61,81,195,13,125,200,219,198,93,165,139,25,236,164,195,14,165,21,204,132,117,119,146,61,184,184,224,190,119,238,209,195,12,135,147,220,62,62,185,43,69,48,204,100,43,244,226,191,116,212,158,165,148,122,3,88,114,242,9,0,180,241,64,244,211,154,208,234,52,95,45,204,240,255,151,161,76,167,233,182,4,47,11,138,170,198,85,105,246,90,36,230,159,239,146,207,196,22,174,175,142,130,240,95,111,207,36,141,40,148,213,192,129,94,69,115,235,169,2,154,203,16,143,16,196,140,159,208,168,170,180,124,69,49,45,63,118,219,105,10,209,245,17,70,243,253,81,159,39,160,175,146,239,159,19,50,89,75,108,219,167,89,47,3,85,42,53,155,243,154,253,39,18,197,56,88,112,227,17,150,195,149,134,143,131,42,237,33,248,99,229,177,222,80,220,177,133,200,187,247,182,240,253,238,102,137,147,92,100,225,163,25,127,243,124,114,125,8,254,79,206,132,220,209,254,201,109,204,218,45,96,34,89,126,5,166,232,209,100,179,177,42,37,209,87,1,187,224,25,230,111,88,7,70,31,119,200,37,105,120,124,223,130,17,218,24,80,253,255,111,24,243,5,208,64,231,28,156,66,166,76,148,48,64,1,56,200,16,163,80,37,132,128,157,207,20,253,31,189,174,197,174,219,40,35,255,17,153,213,248,122,89,35,160,214,172,11,72,31,99,72,109,187,146,212,147,211,222,194,184,19,163,96,220,24,74,49,106,32,174,138,238,68,153,183,118,18,44,3,107,236,62,100,208,25,213,209,68,18,58,154,30,118,55,218,16,31,57,41,203,76,252,212,239,133,71,102,41,185,156,156,45,8,160,8,30,72,45,106,194,72,99,229,174,84,191,5,39,85,81,63,36,250,221,102,204,26,169,14,166,199,12,231,57,213,240,61,231,188,161,197,35,75,205,60,207,228,175,200,203,242,246,14,208,160,241,13,187,85,98,156,19,22,176,223,38,127,124,10,49,130,97,122,130,196,83,126,167,192,214,148,56,98,221,155,235,105,3,32,29,46,241,213,254,32,237,195,40,246,219,10,41,177,142,114,126,9,74,91,7,90,20,221,227,174,226,74,67,25,141,211,255,16,252,173,164,40,213,118,76,183,4,98,232,232,138,39,93,152,12,124,133,148,192,48,158,17,170,136,109,217,201,74,227,156,212,0,127,187,96,123,120,30,31,237,252,241,168,85,255,72,241,180,208,218,151,56,24,208,38,75,209,181,23,27,170,221,107,159,118,88,72,255,243,69,89,195,85,187,53,126,131,4,90,2,164,111,229,114,139,107,230,140,213,107,24,247,197,48,83,140,107,189,74,151,156,52,115,141,217,179,59,34,246,86,240,201,213,76,107,152,214,180,59,39,226,221,159,187,214,87,177,255,183,204,92,2,143,121,10,118,130,37,161,243,248,144,150,182,43,26,247,218,229,253,161,130,103,191,18,30,140,175,244,145,14,7,55,195,55,26,6,144,188,184,145,7,96,213,130,215,83,165,30,60,200,225,140,176,126,197,9,149,199,157,197,42,153,200,124,45,8,115,53,19,13,125,141,83,119,84,59,98,188,149,225,205,193,160,106,148,139,215,252,40,54,133,54,185,244,150,55,92,236,135,227,178,88,8,232,186,158,225,142,180,59,129,24,226,59,164,126,99,146,141,53,250,137,1,0,70,83,81,252,244,113,231,83,115,145,115,10,212,66,7,194,4,45,130,188,72,3,139,88,218,213,64,76,247,207,177,87,124,198,17,0,174,44,90,216,36,153,83,27,8,246,176,99,248,211,211,87,70,25,57,129,100,10,187,238,70,15,13,69,44,150,36,124,99,191,34,78,5,148,95,74,163,221,255,134,9,147,165,72,65,245,186,77,90,112,26,245,165,164,254,245,14,226,34,199,227,196,56,247,107,81,43,196,67,82,120,80,162,101,72,161,56,34,91,211,189,166,221,250,1,185,175,128,86,26,139,230,121,98,96,86,123,11,133,96,100,47,134,61,206,138,42,223,239,150,103,207,211,118,51,146,51,19,91,216,156,3,76,232,88,221,172,68,182,143,243,154,39,255,66,26,185,97,228,36,15,72,226,245,121,36,77,79,40,63,47,241,120,155,51,40,25,120,135,99,239,33,48,30,176,161,163,189,134,212,129,84,229,200,236,96,190,134,53,19,122,0,139,202,124,44,132,230,102,39,211,26,125,108,166,139,155,213,126,90,153,200,207,96,161,240,243,140,121,185,232,132,51,191,108,20,104,205,42,114,60,80,124,218,19,195,136,172,41,76,65,177,194,18,122,39,19,143,151,70,170,39,186,174,222,221,165,156,225,2,168,116,226,252,34,170,52,148,228,164,129,194,19,171,80,239,192,142,79,58,142,148,156,6,56,36,171,232,103,38,130,54,164,16,89,116,169,133,111,129,185,168,0,213,116,230,118,130,252,164,78,203,186,21,18,88,90,187,32,124,245,237,1,178,193,5,231,215,244,137,211,115,231,220,25,125,137,1,221,56,140,116,57,32,109,101,72,10,162,150,54,215,191,144,114,206,135,168,33,250,89,169,85,122,255,53,195,195,25,237,109,201,213,156,113,2,151,47,3,222,211,236,180,90,74,32,215,143,141,179,116,122,209,59,231,87,38,107,30,107,228,18,124,251,126,93,12,253,162,185,253,238,162,235,120,107,245,158,174,131,252,67,43,204,243,30,170,250,213,80,98,60,85,144,134,210,252,37,120,5,89,44,142,27,208,195,218,82,154,199,45,65,64,110,99,96,151,56,113,203,99,11,52,31,78,85,220,239,162,65,57,89,0,183,129,52,214,245,20,71,77,9,118,131,255,235,116,200,7,173,199,226,109,245,159,202,201,102,250,62,128,48,93,65,217,49,204,69,70,116,69,102,109,97,99,102,248,86,66,225,149,200,14,252,187,190,187,108,236,67,217,172,156,172,15,157,52,5,3,248,59,66,95,90,205,142,156,241,80,1,167,136,221,153,32,89,90,175,17,47,131,223,119,176,9,94,213,127,117,159,243,101,177,224,28,131,159,92,70,3,191,85,89,204,221,236,133,185,234,201,184,230,156,148,73,48,58,45,198,172,201,19,22,141,230,102,250,40,87,83,83,219,170,121,136,92,242,143,181,16,21,236,194,178,6,76,238,101,79,90,46,105,76,76,111,95,97,113,57,214,2,197,72,157,140,215,211,201,93,62,62,153,116,40,166,252,220,155,162,82,58,204,38,221,14,246,93,234,64,149,169,137,23,12,59,134,159,108,10,196,40,96,29,87,123,154,186,172,231,255,149,84,156,5,51,219,114,213,220,246,156,123,101,218,87,130,176,193,110,42,174,191,1,147,116,60,249,229,2,69,27,243,221,200,34,65,230,61,201,248,146,31,255,166,72,153,122,225,24,32,224,215,83,76,218,166,29,239,108,62,230,144,213,136,181,178,158,76,96,118,95,35,29,141,59,248,132,139,153,69,219,89,139,72,95,186,11,31,137,123,102,102,41,65,214,108,156,30,164,98,177,48,208,132,204,7,187,111,112,12,3,56,196,77,234,101,85,243,201,25,117,200,95,74,190,87,148,34,31,108,203,63,219,196,16,135,84,105,171,47,148,206,21,21,160,175,6,80,170,10,122,106,234,109,243,55,45,132,223,52,181,11,171,212,98,244,143,205,172,252,137,36,160,48,135,115,101,208,176,143,219,228,243,100,129,158,7,152,157,70,60,226,115,81,84,63,88,25,94,183,143,46,254,37,37,84,126,232,37,158,120,5,28,255,149,3,24,186,47,148,13,140,109,221,169,89,189,231,187,204,211,126,201,229,6,205,26,136,207,6,158,229,2,206,3,30,115,198,162,89,162,73,190,73,163,246,156,174,158,83,107,146,247,77,177,116,168,49,243,146,177,128,190,43,31,25,128,143,7,230,168,36,133,104,57,211,193,182,32,201,178,200,234,59,41,158,62,100,199,124,171,212,167,176,230,180,42,119,98,232,117,12,44,178,5,25,67,204,7,163,165,66,227,184,243,246,11,195,90,9,169,106,22,107,6,45,31,20,111,93,19,144,157,24,202,205,208,31,58,251,35,82,92,170,135,105,117,133,216,148,165,31,147,152,206,217,153,30,148,23,32,14,171,161,71,48,181,146,211,68,136,156,241,242,92,141,174,54,1,240,193,159,183,29,111,7,72,222,92,163,235,70,153,33,104,94,223,99,39,160,50,208,53,124,83,212,73,129,244,110,254,58,57,236,178,181,247,240,146,132,25,72,247,40,79,46,175,75,215,5,16,139,245,39,3,245,77,240,148,29,229,120,229,4,47,32,200,193,156,235,156,57,236,121,231,97,3,3,169,79,153,97,59,118,58,8,240,42,162,164,29,131,32,41,11,233,26,182,74,117,108,92,53,224,101,229,64,99,214,237,139,16,100,38,137,110,22,154,235,91,15,78,66,234,7,49,47,2,226,81,224,238,218,43,4,40,48,197,136,96,223,176,162,146,250,78,198,6,43,137,35,187,23,202,64,238,67,242,206,15,78,7,150,165,91,151,92,78,21,121,90,142,122,161,178,152,165,221,2,0,46,190,100,182,35,229,141,199,229,40,151,122,96,3,179,173,153,130,232,156,228,112,198,138,41,58,52,25,211,88,66,93,63,180,64,90,218,25,220,23,240,219,153,85,252,83,33,135,83,186,160,63,14,164,131,15,48,48,55,201,231,220,50,199,145,172,134,85,150,81,251,237,165,126,80,30,196,117,217,22,253,198,179,95,209,49,23,41,181,124,162,54,160,195,127,229,132,155,176,32,80,131,99,30,50,46,104,206,0,227,104,116,192,2,196,248,166,73,158,255,248,109,244,209,60,140,13,59,65,167,10,222,47,17,27,167,235,120,56,108,78,38,44,129,94,29,94,169,55,52,3,177,218,52,213,247,153,19,26,228,94,206,72,215,17,107,83,184,174,136,140,216,138,85,183,195,217,174,103,111,207,7,137,173,152,48,88,112,63,19,93,9,26,91,41,39,201,165,22,141,2,215,17,18,174,137,193,136,242,215,145,52,162,80,213,116,233,202,32,24,133,217,148,58,181,132,211,157,25,39,79,79,27,214,209,154,241,208,69,21,160,24,54,10,90,175,240,193,126,160,196,236,183,35,86,195,235,230,7,5,21,213,128,242,154,185,157,151,19,27,16,199,53,108,223,235,185,61,11,100,64,165,66,3,109,218,252,237,62,169,219,10,184,206,226,83,243,2,227,91,247,78,109,13,75,94,3,13,196,85,53,136,236,237,225,220,128,255,229,195,185,189,44,123,192,171,130,242,215,21,84,26,3,47,142,222,163,13,67,119,8,186,4,197,6,93,176,248,160,105,217,166,87,131,24,15,11,248,50,164,86,72,142,171,144,51,216,119,130,207,121,225,254,78,81,43,23,93,35,60,76,36,247,221,125,45,215,26,193,155,75,27,124,39,246,112,128,222,73,216,93,107,85,232,132,52,229,35,113,43,154,229,82,50,166,73,95,197,211,15,154,66,89,247,193,61,46,15,140,77,24,195,37,171,241,250,90,245,146,91,206,254,152,107,158,244,82,54,121,58,84,225,198,196,141,254,236,233,85,136,11,202,85,29,114,29,206,89,214,30,134,176,77,61,65,163,36,56,137,201,242,113,144,199,22,123,15,180,85,145,79,186,202,78,77,119,132,81,55,136,219,210,163,155,212,152,123,231,84,152,183,182,124,118,57,184,86,219,30,215,162,157,51,129,84,255,55,43,81,233,171,72,110,244,88,117,146,223,11,19,135,70,43,243,159,23,37,177,125,182,32,141,109,48,142,13,28,116,209,175,206,173,147,187,157,30,104,138,218,95,3,95,170,252,255,234,118,227,238,154,80,175,204,124,229,106,54,109,213,123,79,247,216,79,167,241,90,0,176,53,185,105,250,47,140,214,160,223,255,86,186,177,5,214,51,3,202,25,3,186,94,252,42,107,142,227,74,34,181,39,243,39,212,237,111,29,32,13,199,66,242,43,33,131,223,46,225,250,182,121,221,107,255,13,95,26,3,82,224,243,224,106,85,102,142,132,164,197,164,156,220,122,232,55,152,245,207,144,95,155,63,231,147,30,199,42,96,75,125,166,246,87,3,18,199,121,34,221,102,25,140,219,104,199,32,218,253,98,165,254,88,189,124,107,174,148,76,168,173,26,2,46,230,195,101,69,16,217,193,236,212,110,102,249,80,87,187,216,143,233,200,4,98,102,157,156,66,180,140,254,209,26,255,203,173,78,211,21,140,248,145,24,102,251,170,64,57,180,130,28,228,21,49,143,177,0,10,133,251,199,229,207,102,41,255,206,107,200,173,13,155,27,66,221,4,106,62,104,244,165,111,130,55,184,19,90,31,158,252,58,20,173,89,192,110,134,97,239,75,222,194,255,48,232,209,40,222,176,47,245,21,196,34,217,85,223,122,186,72,107,64,11,175,157,230,172,47,65,131,184,71,182,30,184,143,218,46,55,192,17,8,175,92,113,160,45,14,245,177,15,134,43,125,24,202,20,22,172,107,165,151,108,225,0,191,155,23,130,10,178,52,181,74,227,150,55,198,137,0,53,20,246,87,85,218,35,70,227,173,56,50,194,202,190,92,208,50,50,47,246,253,1,228,166,6,75,173,84,135,68,187,151,118,165,48,46,101,241,213,162,64,58,26,45,47,18,217,142,76,33,68,211,131,239,43,65,218,75,229,65,11,78,27,18,25,22,92,198,199,215,166,110,253,201,165,234,143,110,28,125,119,127,42,39,158,94,220,240,53,49,237,110,95,152,37,175,161,3,64,5,54,104,89,240,105,135,18,77,19,31,166,180,114,87,129,93,156,44,202,126,216,203,185,204,154,148,60,123,173,90,232,32,15,177,128,39,178,233,247,108,66,66,210,162,185,235,157,221,234,40,174,75,139,62,30,130,150,6,73,31,72,179,45,218,101,113,186,246,164,167,169,218,157,120,213,235,218,190,233,97,19,239,229,227,19,66,212,65,221,140,178,12,170,94,242,156,8,250,39,222,188,45,47,75,207,228,198,81,117,232,78,118,38,38,251,170,187,204,186,3,173,50,57,63,114,173,223,115,58,181,175,1,86,215,50,51,202,85,98,198,195,8,53,232,108,171,113,10,102,59,68,239,201,208,89,73,221,141,81,165,66,181,172,17,7,57,3,102,78,97,153,122,2,74,74,121,229,95,12,242,56,35,5,159,125,72,6,24,44,96,16,16,204,45,25,116,55,7,242,245,4,162,154,73,200,0,81,229,253,96,197,195,205,29,121,243,19,70,27,192,16,179,132,61,187,142,233,3,47,80,12,126,139,68,172,178,24,230,63,50,169,48,195,165,114,230,99,11,120,152,212,70,8,252,122,97,159,121,245,204,18,13,125,120,245,6,222,53,72,1,206,193,50,146,67,223,113,124,101,21,254,158,50,68,65,12,179,40,238,20,232,135,247,15,87,134,143,250,229,27,19,128,173,59,121,115,194,48,29,237,234,225,156,125,243,148,233,62,27,147,124,52,55,159,113,46,54,84,66,109,199,213,75,5,104,72,253,239,245,127,162,134,126,152,80,45,92,6,186,90,118,27,102,106,47,240,72,127,114,2,88,157,44,82,192,92,167,26,60,59,116,16,10,181,209,178,215,64,39,142,120,108,105,179,243,106,95,158,83,193,60,183,73,100,98,4,133,182,94,47,90,62,9,95,103,7,63,238,127,36,139,35,22,172,45,57,247,3,190,81,130,185,208,55,78,143,24,8,9,209,57,87,203,24,141,117,94,94,177,92,180,113,152,77,31,25,242,121,86,19,190,142,166,182,128,128,242,233,40,129,187,52,107,67,42,1,240,220,150,173,198,203,123,27,50,17,237,88,248,199,135,178,110,122,200,43,118,176,113,241,107,156,17,65,196,59,105,140,65,221,6,113,103,201,192,244,97,128,105,21,13,190,70,149,43,168,15,243,207,17,170,41,213,255,223,98,198,4,177,59,226,1,230,114,143,210,149,181,104,100,106,231,169,135,130,100,64,47,35,19,210,183,105,110,76,79,166,9,49,46,85,143,222,97,250,26,1,155,195,74,35,238,54,171,194,66,37,168,138,244,63,132,144,136,14,131,12,125,252,138,58,74,71,123,203,26,191,54,202,173,140,214,134,29,89,201,132,17,154,74,119,60,38,160,61,247,237,33,136,14,7,131,152,123,146,74,208,189,161,98,52,45,125,130,102,4,139,172,168,45,65,211,87,191,177,114,176,69,29,14,73,35,126,220,33,214,194,32,30,240,228,88,222,83,103,40,212,138,42,50,148,106,51,154,6,212,87,102,192,234,112,57,172,47,124,219,194,8,168,181,135,160,125,130,4,178,50,153,40,17,171,181,163,33,80,214,151,19,164,87,52,138,15,179,94,26,31,176,129,8,46,126,167,193,69,91,243,130,100,18,206,226,91,196,71,255,63,158,122,94,161,168,77,192,16,76,238,103,189,53,92,179,199,125,89,221,125,231,159,178,181,35,115,77,246,67,64,210,255,177,182,139,111,101,30,183,255,47,133,188,95,72,42,175,158,249,209,248,238,40,48,155,233,150,154,29,221,91,180,197,247,167,51,29,64,159,37,233,162,184,201,145,220,73,125,132,244,187,75,47,63,151,132,89,64,209,93,87,34,192,96,232,9,17,160,185,231,170,56,16,70,221,157,210,199,119,7,212,55,38,158,94,25,164,228,67,253,178,121,243,184,221,9,75,168,243,236,50,223,88,129,10,249,222,72,116,191,79,45,133,186,227,117,7,188,150,99,176,63,198,230,193,21,193,185,193,139,255,176,27,124,122,24,193,40,130,220,251,15,55,4,0,134,252,154,14,224,27,165,168,199,139,57,227,197,113,41,119,101,54,91,195,53,234,109,102,70,127,188,20,5,145,29,195,125,97,37,211,216,129,77,91,106,119,160,218,72,137,164,214,65,230,91,198,174,63,22,122,255,52,64,205,155,168,110,213,179,254,184,91,62,10,58,66,121,156,186,215,230,14,67,25,61,88,78,11,141,245,92,23,133,97,82,75,221,68,132,219,25,216,124,144,13,60,170,234,216,20,89,212,243,95,254,169,185,247,55,32,205,176,251,146,80,115,92,225,133,117,93,133,52,1,135,70,152,223,67,142,214,219,25,50,49,49,129,23,231,36,143,209,150,113,79,110,5,179,28,145,164,82,202,152,244,209,160,225,145,185,227,194,185,164,236,15,35,231,74,117,186,120,55,190,31,20,3,135,119,12,188,232,103,29,135,114,193,189,216,99,175,139,141,228,183,136,110,81,78,102,118,191,153,114,209,32,133,20,42,234,220,228,11,15,218,203,142,64,130,155,215,247,236,50,235,106,54,102,138,167,2,47,76,79,44,41,16,164,109,174,227,104,101,22,9,140,185,157,15,147,194,9,178,175,225,225,50,44,21,220,51,238,194,214,66,214,108,134,26,134,123,134,119,1,154,87,37,232,46,212,79,82,5,52,177,227,192,247,245,35,56,81,52,223,50,136,68,65,74,192,239,200,123,142,101,11,248,82,70,255,202,214,103,157,71,172,241,20,144,90,136,234,121,161,239,3,250,142,163,30,1,212,158,13,128,199,82,241,156,104,22,67,71,187,241,7,229,194,217,65,212,2,148,116,29,77,6,71,200,253,139,214,251,80,177,156,172,220,22,177,186,38,146,218,197,148,88,95,153,243,22,163,34,80,161,209,52,221,82,220,94,35,150,27,220,242,182,67,98,192,154,113,22,179,103,222,122,236,249,239,201,30,220,11,24,170,185,181,194,236,68,193,177,84,220,203,228,170,239,149,118,207,217,134,206,62,115,156,0,92,91,94,70,122,48,215,183,117,225,0,102,174,241,53,216,90,69,47,208,80,41,15,96,117,38,8,159,248,16,6,11,181,105,209,227,252,144,14,211,130,24,171,81,124,230,63,59,229,13,253,213,150,181,27,96,234,88,17,167,45,205,79,70,191,251,76,7,122,14,84,157,187,114,56,178,0,84,204,24,231,81,152,204,16,26,73,208,116,73,139,179,195,40,225,9,230,54,219,172,166,49,47,29,17,86,113,191,245,142,22,161,109,131,211,78,44,72,131,139,63,50,237,183,76,91,91,152,74,185,43,217,231,125,99,234,193,144,169,85,123,57,11,191,62,115,225,190,51,252,165,160,101,180,88,165,133,179,251,219,137,228,139,239,163,253,19,154,22,251,41,5,14,115,143,54,160,64,117,197,110,12,127,17,128,37,213,58,5,18,7,124,62,214,143,31,96,138,28,76,3,14,139,36,229,218,77,46,250,205,36,133,103,102,227,222,52,104,68,136,141,192,91,92,34,190,197,185,47,45,56,92,52,116,213,204,177,250,244,223,158,236,17,170,33,183,221,38,253,187,153,4,235,50,52,220,193,48,245,27,18,82,31,149,132,29,95,70,51,153,253,100,4,125,75,2,40,21,50,141,28,241,227,198,183,30,131,85,48,188,176,248,45,132,175,100,180,183,172,76,56,174,68,192,197,189,176,79,234,145,32,53,76,14,82,165,227,45,226,109,39,125,50,42,255,186,48,222,187,131,152,49,245,33,130,244,80,40,32,235,158,248,19,97,245,177,133,177,2,207,250,10,217,15,242,40,28,79,182,45,17,105,89,199,235,67,240,47,49,166,157,25,44,180,196,75,83,149,207,234,209,241,90,37,4,190,148,104,207,51,229,198,221,230,36,194,182,221,54,154,3,138,110,21,218,153,202,7,150,231,45,201,132,143,116,68,241,42,224,96,199,77,63,220,84,28,126,139,181,39,137,57,156,241,96,75,23,40,154,145,140,75,81,11,24,169,212,228,194,120,198,199,8,91,47,201,38,227,175,191,0,242,193,208,198,156,133,26,210,126,133,41,150,1,158,141,38,97,214,216,131,133,234,205,46,75,146,67,103,103,77,175,54,29,75,43,199,84,90,190,244,42,57,210,235,200,226,173,30,2,58,63,127,218,66,54,242,206,82,213,166,158,149,195,46,98,199,239,72,54,178,64,17,165,142,117,176,52,193,87,157,64,14,3,0,53,58,88,242,192,87,163,161,28,15,85,50,138,107,74,214,4,89,129,29,197,86,151,3,73,5,158,240,223,195,78,98,89,27,93,229,26,156,152,130,190,58,79,72,214,250,69,226,212,14,130,191,109,209,137,175,85,191,74,228,250,70,118,252,210,154,40,20,102,236,21,66,51,216,234,162,86,227,47,135,102,232,84,111,127,150,128,193,223,63,55,141,83,147,93,150,11,119,242,69,185,170,14,179,58,217,234,152,170,140,72,253,30,117,26,189,166,13,41,60,238,155,44,66,54,165,128,2,112,136,75,81,43,215,67,164,143,156,19,232,85,134,239,230,66,186,212,209,172,123,232,191,41,69,40,48,83,87,208,234,100,122,194,179,2,26,60,197,141,41,155,200,105,96,226,133,122,94,213,20,130,147,210,133,17,133,1,202,49,245,113,213,164,171,226,137,129,174,154,208,179,160,127,136,115,237,60,19,87,25,196,182,106,83,26,55,94,50,40,117,50,29,121,83,7,135,176,28,50,75,25,139,150,175,60,120,49,108,175,236,81,8,31,92,1,18,235,97,82,21,242,14,213,88,236,55,74,79,229,73,5,156,166,171,117,63,86,42,0,42,97,7,170,169,117,205,0,88,229,50,214,0,195,106,244,86,38,80,119,56,65,6,180,255,93,133,170,252,159,114,18,121,163,89,80,77,66,69,155,135,156,197,174,231,34,118,216,240,196,250,175,122,50,91,96,151,125,34,203,101,175,230,129,151,87,176,93,163,115,68,151,154,121,247,33,214,75,77,59,246,4,28,140,139,117,54,154,175,53,82,59,13,33,57,91,31,59,96,109,13,244,11,43,205,18,98,12,130,41,7,203,40,59,148,151,50,83,241,41,171,56,130,27,162,173,82,44,44,154,157,27,60,196,169,122,213,60,148,88,189,44,70,181,58,172,184,230,51,181,107,124,176,74,71,1,232,192,48,92,35,170,240,77,190,11,63,5,35,167,49,81,32,163,21,48,173,44,168,120,141,107,10,169,67,194,77,186,161,111,205,97,198,28,175,58,45,13,115,64,48,126,150,196,31,30,64,253,173,126,44,132,116,30,30,186,202,209,75,231,219,26,194,152,75,228,233,183,130,11,182,79,74,148,27,147,53,73,206,39,201,17,172,59,158,255,168,247,231,130,179,95,106,94,71,133,99,37,62,230,220,108,10,207,152,15,241,61,168,119,74,129,192,88,144,235,99,197,93,227,221,42,177,178,211,141,146,110,102,61,61,132,124,203,74,23,154,51,24,47,123,7,104,222,211,240,123,106,48,163,39,71,255,58,192,87,151,32,19,159,116,223,249,0,123,189,63,219,129,222,145,3,122,121,243,98,23,132,175,44,121,3,94,118,67,102,249,138,105,197,196,116,29,224,3,41,211,90,16,90,65,216,252,147,159,78,28,193,128,48,79,139,30,22,114,20,44,215,209,150,113,149,231,6,34,141,106,204,3,246,28,116,84,153,73,168,95,170,155,205,20,96,189,189,23,45,160,65,224,34,14,119,201,179,165,106,14,229,92,120,72,99,237,241,245,185,121,253,96,119,57,166,27,30,164,167,193,164,63,20,87,218,101,244,53,81,248,75,234,252,68,62,200,96,188,25,1,9,136,15,225,242,203,136,151,122,106,100,37,33,168,62,90,48,157,237,108,232,175,205,167,5,2,179,195,152,170,70,18,127,114,219,50,244,201,219,165,186,195,103,68,65,180,146,158,33,201,218,151,179,40,69,52,167,26,53,206,64,34,27,32,168,189,133,47,16,162,125,163,102,37,22,118,74,240,20,105,112,146,138,32,136,144,233,245,203,14,29,37,34,145,233,194,197,91,211,49,163,225,54,189,21,132,173,8,146,249,187,159,244,213,115,162,60,58,57,222,141,42,16,247,176,83,245,185,158,164,102,199,231,22,142,65,223,147,207,179,82,184,186,1,146,11,98,133,8,63,119,130,63,106,180,25,126,54,73,215,98,72,89,47,173,2,178,43,237,33,137,239,73,214,46,232,39,205,245,24,250,74,11,102,30,250,78,79,209,64,152,89,182,214,199,13,123,220,166,46,245,156,44,167,42,103,178,31,72,163,200,75,68,8,216,155,159,249,118,203,27,208,162,112,77,207,72,197,190,208,74,250,101,161,186,19,164,13,227,116,45,247,227,228,88,132,197,197,57,189,99,26,108,42,88,118,49,97,234,145,7,159,129,53,72,6,53,254,0,215,101,83,19,8,80,52,45,65,4,115,157,109,197,89,38,232,175,160,169,203,194,122,108,8,22,33,16,48,47,195,50,210,135,166,123,137,66,19,66,246,74,143,64,127,195,85,95,12,136,66,190,27,8,71,197,27,174,24,42,217,112,203,3,232,25,110,205,241,100,211,1,151,80,121,199,198,211,118,220,118,0,83,138,12,60,128,181,93,220,255,145,43,94,244,103,164,231,222,101,180,59,163,227,136,179,234,200,147,117,247,224,19,40,178,240,84,229,236,114,123,120,92,212,231,108,255,150,235,99,26,99,53,229,144,99,62,190,25,18,16,79,188,196,135,137,125,93,228,34,121,181,96,227,250,214,244,177,13,29,143,8,102,36,148,234,245,91,127,39,93,23,225,23,113,181,76,42,138,4,147,178,209,167,199,227,80,5,65,254,216,251,228,128,107,131,10,91,234,158,116,80,77,206,198,123,254,190,115,28,73,11,96,16,183,255,91,38,137,212,219,190,72,117,192,190,38,75,61,4,74,123,29,87,40,197,119,41,177,97,153,128,135,68,211,177,194,233,212,61,11,162,181,28,174,74,37,202,223,189,143,142,74,61,51,125,101,192,192,58,159,174,173,30,226,149,21,196,98,78,34,154,40,111,164,108,214,176,98,11,38,159,189,113,168,160,96,117,166,19,185,247,215,57,121,230,81,115,116,12,168,53,129,75,125,209,156,126,139,134,10,165,245,237,225,72,210,119,18,130,199,59,141,170,212,207,146,74,151,176,114,90,147,157,138,204,29,108,180,33,156,61,226,93,49,118,249,58,166,135,71,130,198,161,70,124,106,242,207,175,10,48,159,65,241,121,201,159,167,128,77,208,83,71,102,42,142,191,110,10,100,99,162,14,234,220,251,144,147,18,7,211,6,70,63,108,253,162,198,20,252,124,53,214,107,32,31,65,64,178,105,56,73,23,30,65,229,161,201,79,151,77,19,25,29,53,224,33,72,212,175,35,234,199,179,115,133,158,224,154,181,17,122,236,88,70,49,110,224,77,210,100,123,102,45,8,145,33,22,103,160,44,34,243,138,143,178,75,56,147,166,195,237,138,171,166,25,231,134,34,194,43,46,210,72,4,140,83,20,237,200,150,181,49,139,194,65,57,124,116,255,161,247,149,192,62,127,183,78,239,45,208,188,199,175,186,86,189,88,76,0,190,174,35,24,25,240,100,72,146,14,196,82,8,82,189,70,161,225,126,81,157,25,57,6,209,21,125,129,121,171,230,28,175,173,221,57,142,65,180,162,134,164,27,245,65,174,12,80,35,246,109,175,46,113,122,245,243,59,38,24,171,195,135,217,38,121,227,105,206,7,189,1,26,57,238,158,230,173,225,36,254,139,33,89,174,59,166,42,85,249,149,70,73,45,183,58,53,0,147,171,45,110,13,157,183,123,248,101,209,176,76,100,153,83,25,56,48,135,52,179,47,220,109,94,167,221,244,210,169,11,161,243,2,127,158,183,26,205,129,202,126,231,154,105,28,223,69,64,173,246,174,146,93,60,11,14,9,44,119,113,35,222,226,146,229,138,206,140,202,242,214,183,50,120,109,17,194,71,1,72,105,11,239,11,65,118,66,49,231,64,227,244,150,117,216,3,46,149,126,240,78,235,218,208,149,171,207,119,16,117,104,255,136,195,173,249,205,147,146,69,83,233,168,131,86,253,26,125,89,129,74,75,219,0,13,153,143,234,124,219,12,236,246,209,142,55,141,215,235,231,6,153,132,213,233,237,63,68,97,141,173,30,14,5,151,133,227,169,40,69,247,50,17,243,176,192,26,92,244,110,225,45,239,244,187,114,193,166,115,142,100,35,109,92,116,69,220,163,160,68,210,76,252,219,96,140,18,20,249,160,129,118,150,211,174,148,213,164,51,16,182,202,73,158,77,40,241,65,42,174,201,205,85,147,107,210,195,96,146,233,13,199,225,121,222,44,99,154,17,184,188,123,103,49,146,3,55,208,44,222,196,174,76,176,26,253,181,225,69,11,191,26,172,55,243,147,222,204,46,126,179,249,88,25,224,238,135,200,234,91,181,42,205,128,81,91,188,228,24,42,236,133,148,87,218,164,63,162,62,166,217,30,130,159,161,227,68,110,170,104,194,48,89,116,43,118,143,6,214,180,229,4,215,233,138,6,60,8,115,43,218,254,111,139,103,168,17,175,159,96,117,167,152,133,150,157,20,172,133,136,130,87,238,61,143,246,113,133,7,91,80,146,227,198,179,92,6,247,149,135,232,241,48,66,222,153,199,225,39,100,54,62,243,2,84,127,8,245,152,117,162,150,190,191,251,74,87,133,174,141,161,152,86,211,171,44,136,100,128,94,222,19,176,204,138,223,2,100,200,2,75,239,101,5,231,207,174,67,244,88,124,85,104,30,32,72,45,155,42,22,3,9,15,151,221,216,100,197,118,97,136,113,211,246,252,199,120,109,186,71,91,124,200,27,99,146,16,20,152,40,94,58,85,183,143,226,220,57,136,115,162,81,182,119,223,33,100,103,238,28,120,219,79,99,233,51,111,29,55,160,216,25,211,223,228,102,61,52,64,170,223,128,236,13,91,206,177,229,220,39,43,84,236,179,158,81,75,79,228,208,104,130,237,186,164,228,137,90,38,137,63,216,119,77,27,75,43,97,250,226,170,206,16,165,138,207,166,25,189,176,222,63,34,119,146,48,107,214,219,55,139,170,137,116,3,191,79,183,221,161,140,230,82,186,45,121,172,18,129,73,161,156,205,64,89,206,223,211,144,206,116,93,73,121,210,178,234,153,243,100,106,28,67,30,170,185,241,154,192,52,72,222,131,165,249,175,220,204,84,66,6,233,121,154,172,179,2,87,174,135,207,139,224,122,101,72,106,249,9,234,243,162,151,178,214,167,22,224,110,9,226,96,52,98,35,88,201,222,48,128,178,210,21,56,22,231,13,6,14,28,246,36,110,208,84,244,158,255,172,75,100,1,175,212,179,162,152,182,58,177,202,224,130,46,102,192,197,253,170,252,163,120,68,65,220,34,154,105,73,246,45,122,242,48,86,57,199,251,44,178,173,250,246,112,214,110,160,44,126,210,120,8,71,99,215,17,20,224,19,151,225,101,49,65,95,53,249,46,180,88,108,162,230,189,96,0,168,159,176,40,173,230,247,163,2,212,120,167,199,129,207,180,163,65,167,48,84,160,183,174,122,243,204,33,224,136,80,9,8,59,45,101,33,32,32,38,168,121,82,71,178,236,53,192,227,124,17,30,212,219,17,226,28,110,112,57,185,210,224,84,15,85,165,240,112,205,160,228,237,36,175,217,166,180,74,92,20,186,48,160,110,117,54,143,181,94,136,48,180,143,141,89,194,137,214,56,185,97,112,151,76,250,221,101,231,109,23,252,60,218,202,34,83,138,240,0,137,141,161,127,98,60,18,91,20,90,171,118,38,109,127,148,111,153,74,121,194,12,20,153,116,69,224,165,129,52,116,82,186,249,250,30,101,178,57,156,248,252,115,180,238,243,50,128,73,155,14,200,47,191,137,220,242,77,32,72,234,103,88,55,208,146,101,27,188,61,65,52,229,77,181,117,13,232,86,165,201,196,231,75,139,32,219,168,40,244,199,0,33,40,221,41,63,47,210,151,124,153,117,89,243,1,221,200,164,79,239,25,128,42,248,104,37,14,33,178,44,163,169,83,33,216,109,187,243,40,117,229,233,239,100,67,163,159,61,41,152,130,212,121,35,29,201,7,209,160,40,136,158,146,39,34,93,54,6,176,174,160,169,159,89,50,101,10,108,209,47,120,217,104,0,49,184,203,64,102,66,54,31,130,59,137,71,97,74,156,101,60,173,60,34,6,216,107,221,239,153,193,210,182,255,7,20,67,51,46,220,176,118,36,176,181,73,76,204,186,41,139,217,185,226,10,27,82,183,156,51,219,117,147,28,58,82,82,242,25,203,171,46,2,5,198,204,129,69,134,89,108,145,54,1,224,70,6,104,220,39,196,50,232,183,101,93,241,152,179,21,74,118,218,192,220,7,8,170,129,144,100,223,142,128,159,1,131,250,88,94,80,207,114,83,191,139,108,203,209,73,142,96,222,16,66,129,255,247,32,227,237,34,164,237,179,109,58,167,205,17,213,101,32,127,222,216,168,46,188,183,24,72,44,224,39,71,54,46,59,11,115,29,3,7,130,12,152,113,122,93,93,158,174,142,132,244,169,30,211,81,69,59,224,93,253,213,4,250,56,211,104,66,1,122,212,25,147,209,20,199,247,234,99,154,117,249,116,230,124,182,247,135,159,69,13,244,156,162,210,161,102,122,43,205,241,138,30,4,128,255,39,29,229,111,240,181,126,110,153,14,188,85,185,239,164,213,99,1,25,251,165,178,205,176,54,200,51,30,243,69,76,103,10,128,62,68,223,251,1,150,123,127,208,192,199,131,7,77,144,80,245,101,241,76,248,76,197,254,255,59,153,144,79,44,54,19,107,35,130,183,47,30,75,95,141,28,99,27,245,111,235,121,56,198,57,58,147,146,120,17,236,155,143,159,237,104,125,35,94,133,57,115,109,169,62,243,230,160,229,124,82,209,55,138,231,233,255,119,167,171,68,127,87,155,228,137,79,154,202,210,31,147,127,188,171,107,118,177,0,228,203,186,231,0,94,1,160,18,62,58,145,251,204,70,7,77,183,204,207,155,8,78,250,210,79,134,95,214,161,228,63,23,39,203,124,172,216,17,89,152,11,44,90,161,174,132,25,173,251,233,195,246,157,114,184,37,19,68,250,66,214,128,22,32,38,226,31,162,33,66,110,140,218,35,41,137,146,153,52,158,88,177,81,119,153,151,134,94,89,170,14,188,173,194,139,79,19,25,235,238,55,103,94,3,55,228,242,164,170,7,26,19,149,250,243,85,39,46,37,206,62,232,228,105,74,58,254,16,42,211,146,115,72,155,155,135,42,205,25,4,173,113,117,243,116,70,28,93,140,167,152,195,27,228,190,93,60,112,130,131,248,178,85,104,218,206,211,86,9,196,215,240,16,215,4,97,35,80,18,189,109,190,4,74,203,22,2,2,16,12,91,238,200,49,136,145,249,31,239,30,161,153,113,27,62,8,62,49,138,127,163,49,214,131,149,149,248,223,74,236,203,231,106,223,206,83,51,58,46,45,95,217,252,100,170,79,245,189,209,182,237,255,103,162,201,114,151,171,18,115,41,207,114,108,140,160,186,114,185,236,160,51,78,30,148,109,138,216,187,203,15,230,1,43,75,253,239,70,81,241,202,149,4,151,58,116,243,54,26,180,72,120,191,153,91,151,186,152,137,231,129,94,129,178,237,86,229,122,83,67,170,186,39,122,95,74,190,241,61,147,244,139,163,54,32,12,2,120,181,17,251,224,198,161,99,102,50,28,42,221,193,218,96,140,94,111,27,205,56,248,178,30,53,129,217,41,228,118,24,13,9,34,247,121,116,152,67,114,105,188,34,127,232,246,239,248,241,213,24,91,161,247,230,238,25,70,117,86,107,69,56,253,52,15,228,121,190,154,233,146,162,186,212,103,34,239,125,107,208,43,41,73,132,129,21,206,133,234,23,122,24,206,30,232,135,7,4,27,22,222,229,73,198,201,94,34,179,244,240,145,143,46,52,203,45,108,160,252,123,101,6,114,52,36,32,131,240,135,108,19,89,131,254,234,251,130,109,217,191,109,29,106,123,27,103,9,66,117,104,105,127,134,170,255,65,56,193,123,4,152,65,236,157,11,196,19,127,178,160,249,59,155,231,92,9,121,165,168,153,114,247,96,155,202,39,124,32,47,18,214,128,21,74,246,100,159,110,252,243,131,48,247,239,188,29,196,162,36,198,19,40,160,253,114,119,152,233,16,208,30,140,194,180,232,100,4,124,193,106,86,143,225,16,23,53,215,29,18,199,2,235,70,200,15,211,185,29,92,131,163,10,169,132,68,24,22,93,238,201,132,202,244,233,224,197,87,24,64,198,22,56,176,117,94,33,138,166,212,109,133,221,239,33,203,250,12,56,202,76,190,40,138,211,72,40,6,244,122,188,206,118,102,243,232,20,207,170,40,93,196,223,99,163,32,17,149,71,26,26,132,252,193,77,111,225,255,88,86,16,0,40,77,234,228,185,91,50,176,190,136,182,24,143,33,30,233,237,3,185,172,135,218,1,182,234,97,71,229,30,176,98,151,164,179,123,52,43,136,0,75,87,228,42,220,248,206,247,175,236,54,34,131,31,78,193,169,161,243,236,150,189,92,118,187,199,68,238,203,130,165,21,202,6,166,70,67,133,230,37,186,180,23,53,42,31,157,100,4,59,82,111,189,243,70,96,183,59,127,73,114,235,236,30,148,114,94,19,123,176,247,211,181,146,166,231,49,9,243,168,220,0,83,218,110,198,69,147,113,103,255,255,243,214,136,19,182,115,132,197,14,100,250,214,40,108,41,205,160,33,87,157,166,152,183,100,112,205,171,34,219,252,113,52,207,61,35,103,191,234,202,205,156,49,37,225,77,250,121,48,79,179,209,120,227,209,134,36,94,218,43,217,63,160,215,129,35,14,126,141,16,73,16,163,244,140,172,137,239,244,13,130,94,118,109,75,125,157,225,77,168,87,185,201,6,167,56,212,79,12,63,122,173,206,205,84,248,113,97,178,115,110,159,74,194,248,136,2,126,170,69,122,39,144,135,107,71,217,202,113,164,112,127,240,17,79,139,69,234,72,38,237,199,140,91,182,132,242,147,65,135,64,238,132,122,104,219,194,231,170,94,72,69,136,127,71,145,47,24,203,100,245,213,46,118,84,180,242,58,86,244,85,182,146,4,70,28,127,80,51,238,100,62,141,144,114,86,172,209,13,208,165,186,4,77,207,152,112,31,101,167,40,128,223,56,149,115,6,103,249,211,159,176,203,223,251,181,57,34,170,187,220,196,241,0,188,71,156,113,92,95,24,216,125,32,130,253,192,145,15,223,32,210,121,18,238,61,177,79,188,172,122,182,172,125,250,41,96,128,221,31,191,159,90,138,46,242,40,118,97,143,147,206,133,161,98,51,135,88,57,222,211,39,78,218,47,140,220,5,12,198,91,25,191,75,103,5,246,67,101,174,196,227,22,75,5,172,159,164,59,40,57,121,170,179,30,7,80,248,25,44,135,175,28,157,212,145,29,220,159,186,34,73,216,199,118,59,175,144,109,219,64,43,223,187,153,228,189,150,26,116,205,123,184,37,89,181,149,171,37,128,137,9,160,24,245,25,61,227,168,158,31,243,242,249,150,158,212,52,190,2,89,146,212,172,147,63,115,80,88,198,120,84,58,119,64,99,34,6,117,63,254,156,189,229,176,1,238,81,248,135,161,208,75,81,162,27,77,61,58,42,161,210,248,137,185,131,135,135,212,70,244,50,144,64,250,102,94,159,8,18,198,92,212,109,95,157,190,5,114,170,124,33,251,76,113,50,6,220,219,207,197,117,227,3,131,188,37,127,187,110,65,111,0,107,40,131,56,135,66,66,154,123,77,9,232,157,173,103,203,186,50,194,90,34,174,103,57,155,28,35,118,231,130,227,113,164,97,49,229,166,237,222,123,231,135,164,132,218,160,3,81,150,228,72,194,160,18,246,135,228,107,56,32,124,112,107,9,80,6,181,193,158,108,32,46,238,148,197,105,131,90,234,64,153,169,201,106,206,209,104,194,28,204,86,81,125,185,213,88,21,185,153,106,81,26,119,105,23,250,254,251,23,42,129,64,228,2,19,160,84,66,102,111,44,42,133,219,6,12,71,182,241,199,92,216,86,19,20,62,95,84,195,74,35,146,87,37,100,162,84,85,95,8,9,205,13,60,85,17,104,6,109,26,98,30,124,131,188,184,141,141,131,57,174,212,15,52,216,113,81,90,171,151,55,195,0,176,95,13,226,254,155,254,183,157,239,115,170,224,112,205,60,35,168,140,200,68,73,119,170,34,78,199,135,239,7,86,243,143,86,239,150,204,124,112,96,101,23,123,215,247,98,102,166,247,145,241,122,252,89,148,70,109,143,26,33,217,192,13,32,208,96,190,181,180,160,251,93,245,170,81,185,254,161,114,133,215,130,216,255,85,181,243,126,5,67,12,71,120,74,238,229,236,141,216,195,156,120,202,215,213,2,18,99,101,25,144,223,83,4,254,64,14,127,144,109,158,90,204,62,30,195,57,115,217,137,78,251,143,39,79,60,124,104,51,239,44,249,64,74,59,77,217,32,133,91,245,157,8,177,244,228,241,53,148,230,190,1,165,14,68,129,162,157,54,149,59,238,230,117,67,136,11,216,129,95,74,11,244,67,126,40,241,72,124,237,120,22,156,190,70,34,70,94,78,94,38,54,39,221,101,27,122,177,43,115,237,16,199,152,11,135,177,80,165,179,147,113,200,55,189,51,89,66,150,152,190,62,5,222,12,134,197,120,47,58,213,93,1,69,79,138,177,190,42,134,98,85,130,208,75,48,84,231,67,205,229,121,63,85,219,174,14,161,118,6,243,0,95,61,7,166,70,17,74,227,14,132,171,227,199,94,85,112,252,3,132,149,12,139,49,178,133,63,178,13,68,76,161,205,186,80,106,250,117,148,140,126,7,120,216,16,104,163,12,191,82,102,159,169,184,240,15,17,7,54,143,3,16,163,50,31,203,217,137,164,233,3,101,179,50,65,230,248,208,67,150,131,221,58,253,22,26,50,192,134,170,186,9,47,90,249,184,176,96,181,60,125,20,167,82,123,88,50,90,176,47,141,137,82,2,35,126,45,1,123,162,35,182,175,237,220,205,46,193,117,110,138,200,91,175,41,46,191,178,19,74,115,121,198,253,249,126,234,144,252,136,211,32,221,202,183,136,120,115,228,66,7,32,195,222,131,217,87,64,213,185,145,229,30,220,145,23,145,59,94,72,86,61,125,7,174,72,138,217,12,180,57,239,22,247,73,86,223,119,212,240,33,70,229,181,11,140,100,100,109,235,20,133,24,164,143,59,117,121,89,118,37,49,217,246,75,198,150,0,71,125,244,108,65,53,189,138,56,101,41,119,152,170,170,213,185,191,124,241,143,58,83,159,251,57,198,236,146,65,136,199,140,97,121,28,102,8,30,223,177,222,62,20,79,118,77,143,165,176,94,41,28,29,221,196,147,121,93,65,186,129,106,254,146,113,108,102,157,152,155,150,88,208,236,160,1,3,2,14,61,164,244,111,82,148,83,241,136,90,220,31,239,240,24,51,156,148,92,144,56,238,164,103,22,61,57,185,3,229,212,141,169,254,229,212,251,157,153,201,88,156,7,237,109,36,144,32,160,254,235,80,80,162,194,11,40,247,244,208,134,224,85,118,185,197,164,236,78,250,217,189,211,117,182,177,207,192,156,111,21,28,255,68,190,251,40,59,147,24,192,247,54,42,36,165,31,134,10,89,75,165,76,35,236,113,36,192,203,62,108,87,224,132,197,240,4,27,164,24,55,243,247,193,137,189,143,112,225,227,244,222,198,60,91,149,121,242,78,30,184,135,145,25,175,63,146,214,67,151,112,49,227,107,131,163,82,218,185,40,120,80,32,180,115,208,160,187,242,215,139,121,227,107,67,129,105,119,120,31,187,144,138,154,188,233,240,152,71,28,19,20,122,14,1,166,74,41,149,198,173,60,67,199,75,119,131,128,239,238,173,174,191,93,15,63,251,77,245,72,188,37,13,52,17,199,28,57,248,91,207,117,198,112,118,110,199,134,107,225,147,127,134,137,28,128,100,102,109,100,103,248,183,138,209,148,49,48,210,82,29,202,18,76,9,100,6,121,67,104,227,158,27,165,53,16,220,3,152,5,2,121,202,232,78,187,114,41,65,200,216,13,44,241,51,19,169,141,221,34,57,164,211,159,133,82,232,177,23,157,247,81,243,167,166,204,86,192,209,229,203,27,231,221,8,246,180,6,90,143,241,242,44,149,64,239,221,37,148,21,254,177,163,64,181,213,255,71,108,238,204,19,136,98,244,56,198,96,216,241,150,237,187,70,147,254,29,171,8,48,7,25,165,141,161,14,122,33,195,33,71,67,222,63,194,165,105,53,11,102,21,25,178,132,138,15,161,206,143,147,191,122,83,19,103,32,115,155,31,151,179,7,170,84,219,116,187,165,230,98,67,158,86,130,96,120,188,136,235,75,157,80,160,118,250,155,127,139,116,253,140,90,168,84,245,229,156,194,218,140,206,227,107,248,214,58,126,19,76,8,28,247,43,136,127,205,162,31,49,90,228,122,96,150,43,226,1,214,0,159,166,94,138,213,194,12,132,173,3,119,72,71,150,84,142,5,255,184,169,167,43,136,109,65,240,32,217,235,85,209,48,25,200,138,92,180,52,210,193,98,30,125,199,150,172,26,90,172,102,182,136,38,203,217,92,103,175,232,131,238,156,61,89,209,126,60,142,20,190,192,72,232,216,105,151,81,14,62,131,169,37,46,240,73,134,51,184,8,68,198,44,71,85,195,61,225,166,160,165,212,193,130,100,125,99,85,140,253,160,93,29,45,190,169,192,231,14,67,18,197,102,204,8,178,216,146,246,221,35,177,251,31,215,241,233,206,116,215,153,83,212,105,189,196,7,232,203,72,164,168,9,95,92,164,71,249,239,152,33,97,167,214,60,105,35,5,86,251,145,187,39,3,61,237,228,207,27,233,215,175,201,42,180,66,249,206,63,116,163,200,171,206,135,17,196,154,147,188,200,87,145,247,165,191,231,3,198,90,179,158,202,45,52,1,232,124,50,204,156,169,147,0,133,68,114,89,43,89,31,87,53,108,200,224,28,59,237,173,45,189,13,249,40,200,127,186,15,239,39,199,133,176,43,220,249,82,65,118,98,46,176,172,142,101,125,52,48,44,14,139,217,254,205,110,177,210,154,140,254,76,3,107,255,195,9,16,199,15,17,109,14,207,223,36,0,155,149,18,169,92,119,250,122,198,109,157,154,234,161,43,114,201,214,144,149,248,99,239,61,132,138,218,150,112,13,250,216,88,48,11,199,83,199,240,197,74,47,10,95,119,199,130,189,79,65,244,9,108,19,26,52,176,91,100,63,242,114,249,146,9,38,177,130,97,194,22,215,226,196,212,229,62,224,45,248,205,140,158,18,56,68,15,217,0,36,52,119,203,134,179,59,95,226,49,87,238,186,157,204,158,151,152,168,145,40,211,7,245,239,75,158,41,181,29,97,42,192,22,64,108,114,58,233,58,90,228,15,194,103,42,3,188,191,87,248,96,96,8,204,216,22,138,221,204,10,94,113,154,159,22,226,17,157,190,3,190,53,113,250,243,220,174,215,73,52,111,67,106,29,121,173,157,167,198,72,44,21,186,179,168,196,75,41,52,174,217,130,180,246,42,46,39,17,111,61,149,176,52,46,71,23,60,107,98,172,85,58,178,2,241,118,36,204,220,93,113,155,41,150,2,201,244,119,146,248,253,48,175,76,85,135,246,227,62,234,156,46,250,168,223,233,250,40,198,26,149,114,157,239,218,44,246,86,34,121,13,201,155,137,151,82,154,49,133,147,31,234,190,77,24,82,145,188,168,73,100,145,142,77,166,189,15,7,153,185,42,173,36,203,45,196,56,11,25,156,195,100,96,252,156,55,159,170,209,141,250,7,61,221,50,9,117,15,36,121,130,107,21,215,112,195,82,83,249,173,241,163,164,97,147,147,173,138,119,193,55,111,200,116,58,28,192,187,22,149,241,208,57,32,86,197,7,154,31,216,96,6,143,245,130,61,0,46,248,88,245,112,84,176,99,174,91,25,87,158,246,129,152,145,146,220,246,94,169,195,51,19,148,104,127,228,190,72,126,224,158,152,146,249,166,221,89,252,127,239,172,25,67,115,55,219,183,121,111,101,140,240,13,217,107,225,209,62,156,13,146,26,143,250,237,70,204,132,52,91,6,100,11,26,97,105,67,154,104,81,181,199,61,100,252,32,53,101,63,151,129,44,94,137,104,20,38,98,155,93,149,36,120,183,26,140,100,115,53,71,246,58,198,8,241,35,229,251,10,225,125,180,125,46,94,57,132,57,102,212,60,136,11,228,162,240,160,13,18,60,61,71,45,45,243,61,120,102,161,230,149,133,154,182,178,204,172,29,32,197,252,179,201,9,224,142,1,192,244,214,247,138,232,140,227,86,22,239,24,243,200,150,12,194,233,35,222,54,61,112,72,182,21,117,239,46,176,86,195,196,112,235,38,66,177,213,236,51,68,118,200,222,63,245,209,17,175,100,63,49,193,245,243,146,60,148,229,98,173,31,31,143,95,208,188,12,82,100,255,62,248,217,191,150,73,95,173,72,151,203,136,48,165,154,93,51,46,124,249,227,131,36,240,238,130,77,175,82,48,175,30,77,147,26,219,213,186,230,193,235,108,213,108,212,49,56,242,3,231,152,145,218,84,115,93,226,205,214,116,7,242,55,219,33,128,64,104,251,202,180,208,17,73,150,188,178,174,240,180,77,250,142,162,229,68,215,50,137,81,163,10,232,6,106,240,124,173,180,2,154,41,67,96,189,231,230,15,140,4,102,6,90,71,199,212,208,51,76,163,107,44,88,228,155,43,225,254,75,81,156,94,86,29,145,114,112,35,168,248,149,167,224,123,32,231,194,125,170,213,33,94,1,137,85,11,202,234,141,76,20,151,78,193,135,33,205,122,23,111,240,248,173,56,65,151,250,241,39,85,163,149,35,195,0,101,106,30,69,12,213,75,58,211,112,134,153,98,64,236,18,196,222,85,73,52,48,106,71,56,47,129,249,50,39,13,174,130,146,178,254,137,255,24,179,46,230,131,27,136,46,132,181,225,50,172,153,113,117,128,199,92,71,46,243,211,160,123,45,105,69,213,233,17,9,236,204,166,163,109,119,5,141,145,132,225,30,65,98,19,104,109,138,128,120,89,81,31,109,247,223,106,240,81,179,64,165,237,45,188,98,225,102,207,90,232,55,230,39,98,251,212,158,123,245,199,238,207,203,226,110,138,20,243,139,120,206,131,150,189,129,181,214,160,216,111,88,134,194,92,196,122,200,117,251,151,210,131,104,15,37,87,87,133,215,231,70,137,134,61,100,196,27,247,189,122,99,43,150,180,232,172,43,146,35,98,91,44,37,104,104,160,173,120,61,197,0,34,63,255,222,97,63,244,180,60,188,158,242,120,236,82,76,116,87,172,216,151,159,176,192,202,95,121,31,6,99,219,37,184,105,84,53,206,181,174,158,189,55,115,152,212,48,2,235,157,241,126,72,71,64,65,52,187,19,146,123,154,102,150,82,50,21,20,163,139,255,157,23,242,89,53,156,123,6,32,130,226,100,84,163,104,7,98,197,14,71,96,2,169,114,252,236,130,50,144,212,137,116,157,172,16,114,0,5,47,153,149,75,253,224,137,138,24,156,213,118,226,91,86,32,40,16,107,172,61,25,244,174,207,88,86,196,171,243,62,54,179,9,63,10,163,41,244,73,87,131,238,125,22,30,5,112,243,137,65,169,202,2,161,27,244,36,34,227,55,210,214,84,181,85,6,187,149,231,201,246,121,157,22,73,38,55,180,36,157,90,242,84,169,91,95,12,146,108,211,34,243,241,195,127,243,127,220,34,251,44,118,213,13,46,142,108,237,247,44,51,132,167,167,247,147,131,229,206,202,168,191,22,166,154,218,141,106,159,10,40,182,231,189,170,229,29,248,243,85,108,197,140,234,136,166,147,245,190,182,245,130,0,214,204,86,123,121,71,253,101,21,251,147,104,224,187,147,118,240,193,200,99,92,155,75,214,224,181,148,50,71,6,137,133,189,41,220,175,29,157,32,45,151,190,67,116,130,9,79,237,68,121,152,193,73,109,225,68,95,159,237,113,70,213,224,38,110,149,230,196,147,201,11,124,22,113,64,107,1,156,56,202,235,170,73,227,165,46,60,15,60,170,113,60,246,170,129,241,197,246,131,223,203,155,16,175,170,106,63,17,136,56,38,219,116,202,91,192,233,16,131,67,51,63,24,50,116,60,82,1,71,54,237,254,198,66,215,159,22,176,54,132,45,36,96,66,30,86,37,22,48,27,68,199,23,53,170,13,187,249,167,195,223,191,117,96,198,87,45,69,165,148,223,45,112,97,11,120,74,37,10,119,112,146,217,18,105,246,55,223,109,255,28,173,241,234,175,50,50,223,110,3,242,74,74,35,4,108,22,49,92,65,167,80,232,140,251,76,204,114,77,131,199,230,11,41,150,136,64,80,109,152,225,47,32,149,131,130,224,90,102,100,239,179,156,131,185,204,171,224,140,55,116,240,103,154,66,84,175,238,133,126,251,83,162,237,142,87,62,207,147,219,90,161,134,94,76,116,222,143,173,198,130,36,66,160,113,108,234,220,63,126,61,224,208,107,63,73,28,54,89,200,58,213,14,197,183,177,228,206,184,18,121,3,99,210,161,234,219,95,190,195,254,27,200,138,14,177,139,184,75,127,28,192,212,124,203,125,94,53,175,231,138,171,88,81,82,33,90,145,80,123,83,63,147,80,115,3,5,236,144,101,246,42,124,40,106,157,19,101,42,102,124,246,188,230,35,31,179,17,208,174,154,190,16,219,161,67,184,36,83,36,50,151,236,70,57,88,221,31,16,180,26,31,43,200,220,142,96,207,247,55,159,188,136,147,185,65,158,168,98,119,17,176,56,171,12,153,38,35,190,173,117,47,141,18,36,100,218,88,49,212,244,120,183,15,104,90,119,143,14,180,107,233,115,228,86,117,69,237,121,13,98,199,3,235,107,91,40,90,53,80,42,200,194,139,27,181,141,188,2,93,235,20,192,184,231,114,249,53,55,26,146,63,133,193,7,195,73,135,131,91,8,199,48,134,226,141,253,236,101,239,110,156,208,132,43,32,211,38,47,196,50,49,174,153,61,78,32,80,250,0,124,12,46,22,182,60,100,20,1,103,14,210,150,106,58,94,144,106,74,154,127,135,249,128,243,207,135,249,58,55,61,213,92,29,62,130,14,233,80,125,103,9,9,249,25,9,24,143,110,83,128,123,224,43,97,64,241,106,203,238,112,58,239,42,11,115,147,48,102,36,159,171,183,243,182,29,162,219,178,89,208,243,82,12,186,148,39,115,164,227,188,99,119,156,211,95,12,188,127,175,213,30,121,99,206,141,210,155,117,140,30,253,57,120,4,14,232,106,146,84,88,110,131,195,207,142,41,148,117,156,170,30,164,241,38,108,114,6,127,21,116,150,75,174,203,242,55,101,64,161,158,245,77,163,172,15,148,57,45,73,134,59,184,85,103,94,91,210,196,48,143,217,224,187,72,239,9,162,135,209,25,201,227,167,203,130,31,163,69,255,179,101,235,181,159,163,87,61,108,45,240,227,128,17,55,65,63,211,185,135,91,93,137,128,42,236,254,154,16,195,166,252,77,13,184,232,79,252,35,202,236,195,224,56,114,173,112,67,142,130,21,235,28,109,197,118,213,69,104,34,242,218,77,209,26,44,100,37,138,226,7,87,232,69,206,103,147,30,160,47,175,154,251,205,18,238,54,39,209,224,220,216,235,254,74,202,246,60,197,235,244,111,40,73,243,35,28,215,172,73,58,19,216,19,89,136,253,121,162,249,162,0,109,158,123,232,243,70,233,154,24,140,254,149,132,222,61,67,208,87,205,38,116,185,26,34,2,144,210,143,117,133,251,42,28,59,164,112,147,67,96,64,200,208,12,157,46,75,118,32,185,251,54,210,68,77,91,105,171,161,91,106,125,59,7,219,109,210,212,57,18,207,252,97,73,210,163,146,190,114,222,157,88,229,112,87,237,196,104,251,61,164,229,166,230,187,36,194,7,162,96,96,80,178,27,236,199,15,243,251,6,99,166,156,198,11,84,233,199,85,169,231,188,220,8,143,88,194,193,177,145,88,241,221,147,146,25,134,219,163,182,28,253,40,12,159,130,106,130,214,38,99,208,239,144,116,1,6,216,3,253,189,68,187,111,60,80,133,149,161,23,217,74,221,255,165,249,30,208,187,82,153,84,230,199,4,196,215,21,141,93,77,36,141,44,103,28,103,182,170,171,128,128,217,191,239,182,229,116,162,46,97,135,245,247,81,142,150,92,110,191,237,249,223,175,210,17,229,115,95,52,75,84,199,218,73,255,13,126,173,84,222,149,24,179,11,24,47,27,44,110,166,4,227,174,0,54,165,4,90,170,50,113,80,248,240,64,209,185,50,159,57,108,2,89,61,239,213,161,171,138,182,248,180,29,100,248,128,72,126,51,176,15,1,171,120,136,200,230,170,168,205,130,56,18,167,126,244,92,252,129,177,12,139,101,3,29,133,176,204,81,221,139,162,28,161,253,200,6,79,133,3,15,184,54,48,186,207,242,139,150,27,234,67,158,76,52,51,138,183,15,216,15,150,231,141,5,101,219,244,148,201,143,174,42,63,238,91,98,243,0,29,202,235,119,230,251,70,171,35,39,78,171,64,253,113,151,174,154,71,14,14,243,181,213,105,174,118,51,104,108,234,242,111,144,11,128,205,224,100,195,242,235,68,202,7,182,199,220,76,182,216,17,46,75,61,53,113,30,36,146,215,88,182,248,90,29,104,142,22,215,85,231,148,114,180,55,143,128,2,115,201,84,189,203,148,172,66,248,180,8,201,60,52,15,10,159,62,129,103,32,239,92,255,187,131,210,105,158,241,50,141,174,243,157,50,153,207,149,196,83,89,65,102,241,219,33,213,213,23,117,105,212,63,178,66,243,168,163,185,171,24,113,57,202,172,127,48,250,121,185,115,157,93,35,178,33,185,98,75,250,220,243,70,3,194,44,140,166,220,190,18,176,47,255,135,112,141,232,193,37,49,198,35,154,58,205,28,42,131,254,3,231,134,242,12,227,31,58,110,34,48,186,11,68,217,44,60,217,30,47,230,230,6,220,56,249,116,216,129,20,6,68,187,216,153,89,73,224,136,136,72,35,203,59,225,61,29,83,112,22,223,114,228,76,80,8,119,83,2,107,148,0,46,186,110,19,223,237,223,26,154,159,191,111,248,209,219,11,187,18,244,0,185,29,213,128,127,170,8,203,254,7,204,152,140,150,44,114,93,82,134,171,64,106,48,67,130,144,119,131,92,184,126,141,139,148,180,179,29,153,61,63,251,254,251,42,195,35,79,240,234,203,54,237,41,220,158,86,222,193,237,56,21,159,174,155,211,35,192,156,99,240,245,105,6,90,43,117,195,187,165,31,29,246,102,250,100,209,72,79,227,69,48,27,19,249,48,99,155,247,59,29,36,224,142,94,202,70,5,79,249,224,219,11,47,88,92,132,175,123,182,232,203,232,205,194,112,97,63,62,50,5,190,143,133,6,203,80,80,168,62,229,202,132,106,153,28,207,195,131,114,199,234,199,196,35,56,131,97,246,219,160,110,21,10,38,18,207,93,110,133,100,51,96,233,196,231,232,161,172,81,156,78,161,100,102,156,23,136,132,223,193,100,234,163,231,111,227,168,124,11,211,117,111,69,118,219,109,64,81,231,120,230,71,153,106,18,183,213,174,185,11,81,20,52,176,238,89,157,117,22,84,161,10,122,134,104,180,9,229,212,183,133,247,81,204,122,222,250,117,24,88,210,216,68,61,249,30,227,104,87,61,253,196,161,108,180,137,198,119,133,149,38,21,78,138,53,0,166,240,243,50,125,143,38,196,128,141,131,120,245,17,83,40,167,29,87,180,65,36,61,112,91,173,19,199,31,48,191,183,230,186,10,158,10,83,103,246,106,62,94,129,41,9,31,113,28,86,136,124,142,24,201,76,240,88,180,34,103,164,84,2,214,109,192,79,186,184,116,226,243,73,11,109,94,74,253,218,177,75,161,151,27,115,29,103,210,75,193,187,123,179,29,138,224,69,27,66,14,168,73,117,234,178,81,71,124,60,235,209,26,71,26,133,215,220,10,18,146,90,155,6,37,74,205,116,197,26,204,206,145,30,93,183,229,181,99,247,114,42,162,65,143,7,191,121,141,132,94,141,65,57,220,173,145,217,225,237,224,26,86,211,153,89,37,146,105,109,246,29,153,47,51,207,23,32,203,136,2,82,130,164,184,75,38,185,45,16,39,88,158,220,101,188,94,120,222,84,227,95,207,254,29,87,75,142,6,134,83,241,180,109,16,254,198,252,124,222,110,27,90,58,10,213,42,110,66,110,19,222,16,244,156,233,42,46,153,140,207,70,140,127,197,56,51,193,79,116,12,35,159,67,192,48,252,70,62,100,97,255,143,95,157,84,159,246,181,1,49,35,241,38,64,148,219,65,86,67,0,85,126,106,224,4,49,94,91,98,228,18,12,28,125,64,76,162,63,227,194,241,156,90,203,159,215,11,45,202,59,244,87,138,238,18,43,213,66,182,121,101,109,251,219,95,222,72,216,26,19,188,119,106,202,109,125,90,148,161,20,131,147,234,93,81,216,12,114,49,10,121,18,225,29,250,3,139,34,228,153,25,134,254,111,223,148,154,248,101,15,188,149,140,138,192,75,57,173,68,177,194,24,150,97,71,98,130,195,42,2,253,173,167,227,73,230,180,4,78,165,89,75,168,172,184,204,35,84,140,214,7,138,3,207,113,205,19,118,33,149,156,59,83,161,151,199,126,177,235,136,210,158,84,170,36,187,126,201,87,1,188,142,100,94,244,0,59,138,20,47,169,27,237,162,37,129,243,86,147,192,134,186,136,125,134,164,0,154,151,228,148,127,251,97,10,53,82,63,30,180,34,4,111,137,117,110,213,5,155,132,38,126,105,98,10,45,87,167,166,199,209,130,172,242,85,198,121,108,15,65,188,90,192,202,167,45,31,104,1,216,252,130,65,209,218,200,51,127,43,57,73,249,216,24,27,52,52,127,159,67,34,168,177,130,230,62,44,146,176,129,250,90,53,142,50,109,78,190,68,67,194,119,5,111,38,153,249,213,88,140,203,236,23,7,185,220,133,143,227,75,104,232,207,195,246,25,165,40,150,115,110,188,180,204,157,87,173,180,78,118,59,44,218,150,142,44,46,177,120,207,44,108,221,66,205,198,130,179,73,108,43,40,73,15,181,187,99,85,176,47,211,230,35,20,206,30,112,139,117,219,199,246,41,108,132,106,255,87,105,119,9,242,81,224,114,36,243,44,174,35,225,148,132,64,21,127,76,235,42,120,204,23,242,41,5,83,199,159,108,79,215,197,177,139,13,192,94,139,185,193,80,204,105,128,118,223,134,90,75,182,9,249,211,16,166,0,197,205,170,126,58,134,66,22,140,91,219,16,246,168,208,236,63,244,138,155,66,96,143,131,1,47,87,207,14,225,30,160,231,136,130,3,248,100,86,193,36,113,136,167,36,176,132,99,109,205,53,6,246,128,159,8,229,54,72,81,235,202,198,28,68,213,156,64,135,251,4,93,188,45,151,136,166,153,158,25,239,175,12,101,228,233,71,11,51,151,213,100,185,130,60,127,65,246,122,121,135,19,22,84,221,185,58,58,195,138,163,190,191,88,171,182,105,199,36,99,140,241,238,218,14,32,237,83,213,42,127,46,112,243,145,137,184,197,233,223,103,178,245,243,208,146,32,194,166,224,141,222,201,180,60,47,179,109,194,195,122,132,169,141,208,120,225,179,101,130,156,58,74,108,32,231,36,155,45,121,254,14,67,94,70,12,87,97,59,131,212,2,11,78,223,82,84,116,27,97,67,117,160,80,230,33,4,121,236,248,149,102,210,108,43,111,102,210,217,61,231,239,167,127,170,199,126,49,159,29,185,30,98,239,7,144,180,12,117,30,155,165,236,88,252,250,247,113,175,83,102,35,251,109,223,165,122,157,234,202,35,206,28,9,102,169,37,250,194,132,142,20,43,231,26,60,6,196,214,20,63,62,50,74,16,189,71,174,44,231,145,108,178,59,14,227,170,122,217,246,74,171,122,199,215,246,65,13,236,234,150,117,101,252,115,219,220,150,175,31,63,135,220,77,45,191,76,19,230,153,55,122,71,13,233,241,179,103,69,12,213,90,27,224,130,83,156,141,2,222,58,131,94,236,92,122,71,183,109,168,169,106,95,72,128,151,57,128,27,52,6,21,96,95,19,100,220,233,233,142,29,246,175,183,188,32,175,175,28,75,128,216,153,124,86,7,26,95,64,101,107,242,140,48,98,2,64,108,162,224,205,39,131,189,91,199,79,172,46,49,185,139,221,203,82,223,141,252,100,103,51,224,70,77,57,238,251,81,231,228,77,115,85,176,38,93,144,32,111,156,51,216,189,89,96,48,190,88,251,97,156,128,159,7,160,42,80,57,38,110,27,50,20,85,246,164,230,227,213,149,44,65,163,251,150,43,218,191,101,62,153,125,131,27,203,12,48,51,114,122,221,122,193,12,190,26,93,0,61,115,170,175,57,220,109,45,87,92,167,249,168,243,4,235,77,69,165,130,202,111,73,122,97,254,170,108,67,139,251,203,226,71,171,5,224,212,104,218,204,53,165,240,83,240,131,55,42,166,25,247,211,49,213,114,221,175,181,10,82,197,248,166,209,128,223,148,92,207,208,69,17,255,12,137,66,182,75,176,44,21,43,180,56,171,11,234,48,12,117,95,63,150,47,167,195,97,237,32,250,185,252,219,185,166,24,222,124,69,138,156,19,181,169,127,114,161,26,250,123,148,3,66,95,66,73,232,119,236,148,142,49,55,248,40,143,134,240,158,6,139,69,211,226,177,236,21,143,227,146,21,181,35,55,111,130,63,140,55,197,134,247,229,103,12,174,200,57,179,119,70,229,75,187,245,36,169,207,8,116,57,247,147,13,45,137,68,150,6,167,53,129,236,156,165,135,12,107,145,237,66,161,97,203,12,224,18,82,107,195,117,145,160,205,117,127,37,125,26,71,60,187,83,252,71,228,45,249,206,60,26,189,140,143,246,75,182,165,14,93,61,157,244,246,242,187,157,26,18,121,20,158,131,60,87,154,162,26,148,19,138,253,25,49,230,46,187,202,116,118,128,58,87,31,22,93,109,234,244,3,166,58,192,120,129,109,86,154,250,39,29,164,27,92,6,163,104,130,123,57,35,151,215,11,129,249,127,137,158,222,35,30,226,125,94,44,231,144,211,114,228,160,151,167,20,255,115,7,205,162,159,108,219,74,70,242,33,190,1,203,46,197,181,231,102,248,53,195,183,77,133,38,190,9,196,19,199,58,54,12,224,245,108,60,76,7,18,134,166,134,140,52,228,194,199,214,164,11,110,155,134,75,104,70,7,96,169,232,203,201,248,241,14,108,14,72,43,31,108,31,132,182,121,243,125,192,37,216,26,138,33,36,99,72,37,153,48,59,24,228,11,170,152,26,207,59,6,50,227,92,249,107,110,169,247,200,151,241,179,213,31,171,183,19,132,132,41,48,121,133,194,112,209,83,172,242,41,178,34,141,212,248,70,132,196,109,94,44,103,253,204,201,208,203,73,114,146,159,224,249,183,174,131,78,241,30,197,6,55,253,188,242,177,193,206,169,91,226,91,122,188,81,212,21,3,224,150,119,40,166,205,194,161,237,122,181,91,237,152,159,31,207,205,28,44,210,195,74,35,247,82,15,149,223,220,125,193,154,180,99,185,239,226,162,213,254,249,187,220,49,22,0,195,246,184,113,107,76,116,172,34,32,0,135,176,11,255,194,126,29,71,93,2,255,150,3,162,32,5,182,173,169,118,193,85,13,149,255,235,16,167,36,151,220,254,217,180,106,208,215,14,146,153,145,180,84,160,190,238,10,245,211,165,128,87,144,144,122,122,35,242,189,157,83,82,194,198,21,18,242,161,84,69,67,165,139,51,242,97,153,104,203,169,48,58,162,217,4,246,36,18,234,39,116,15,11,28,22,195,172,20,157,55,130,27,112,147,32,23,241,73,212,197,62,55,171,76,182,236,196,36,110,202,90,116,223,144,145,152,72,99,17,134,194,242,8,130,167,157,228,42,37,92,55,196,100,57,94,163,103,17,152,140,106,15,48,99,24,63,46,140,233,165,68,82,3,4,48,251,160,136,217,158,120,246,210,21,87,89,122,63,224,188,33,191,153,190,187,32,104,239,187,156,126,128,220,10,233,18,149,160,227,19,249,206,245,253,163,110,2,191,130,185,206,208,204,25,165,73,176,218,74,97,38,179,160,253,205,163,255,150,46,246,27,157,83,0,233,238,9,11,112,164,59,121,69,74,70,233,38,226,5,208,64,231,28,156,66,166,76,148,48,64,1,56,200,16,163,80,37,132,128,157,207,20,253,31,189,174,197,174,219,40,157,122,122,56,109,197,0,190,1,42,20,182,212,4,236,168,175,152,230,245,105,57,15,229,46,138,173,90,156,9,239,186,127,6,70,207,194,172,201,88,23,215,94,37,53,85,51,28,23,93,224,207,189,10,195,165,255,135,241,253,47,81,122,22,101,59,111,196,31,242,206,170,44,133,24,113,19,74,20,33,221,85,122,131,62,226,139,209,80,75,61,148,33,227,166,63,3,20,200,255,150,108,22,107,115,125,156,204,251,120,251,26,175,117,153,196,119,155,98,132,13,18,113,184,222,181,240,149,14,248,95,41,128,37,210,183,116,159,34,12,252,150,135,27,6,22,197,86,47,98,240,206,234,223,226,137,210,213,62,168,45,122,98,216,120,33,68,134,214,157,140,186,69,191,233,88,234,38,189,232,210,150,173,110,154,5,50,173,5,154,85,251,182,10,53,4,200,175,86,47,31,240,238,246,2,20,34,218,196,70,218,37,200,4,45,181,36,40,101,176,206,118,16,49,79,150,6,17,5,5,135,75,167,140,87,114,189,151,245,234,141,158,206,176,83,43,244,26,246,177,151,190,13,213,29,53,229,80,90,246,144,141,194,121,200,52,83,91,217,44,6,212,177,95,119,21,59,156,118,211,24,225,48,169,229,187,60,164,35,202,151,193,158,155,97,87,201,181,48,106,232,86,205,223,220,46,173,254,27,106,197,142,218,88,57,220,132,57,46,245,60,148,154,218,33,207,240,0,73,131,211,9,133,7,15,119,93,19,36,56,164,122,163,190,39,255,184,205,240,135,227,34,171,254,182,81,105,103,131,214,92,18,188,250,238,5,115,90,234,146,106,240,100,15,171,81,231,176,252,194,60,188,186,163,66,200,253,170,108,153,94,208,194,238,152,229,211,227,43,86,7,212,225,176,192,254,40,192,119,252,140,35,142,131,249,55,147,131,16,46,60,58,22,34,141,83,237,94,110,176,126,51,64,137,113,42,196,202,211,203,192,192,161,107,104,37,159,75,61,210,124,162,115,208,100,175,231,102,1,130,105,102,21,204,164,34,73,133,176,236,181,63,14,20,101,53,55,201,181,101,195,5,3,194,124,215,135,123,118,115,46,116,174,15,252,71,122,202,158,146,129,205,100,159,232,251,99,210,249,145,211,73,173,41,87,91,102,120,185,5,221,132,78,48,135,153,1,192,103,200,179,195,135,216,15,126,60,200,210,109,158,165,141,128,89,112,26,245,165,164,254,245,14,226,34,199,227,196,56,247,107,81,43,196,67,82,120,80,162,101,72,161,56,34,91,211,189,77,242,197,129,55,174,121,183,168,70,214,103,66,26,154,42,241,33,153,56,218,7,214,107,130,109,202,100,154,27,45,249,188,145,244,115,222,50,175,155,224,242,234,92,84,112,83,121,237,90,81,182,25,4,244,211,105,230,233,144,91,175,216,127,65,236,51,137,154,202,250,37,107,221,63,168,89,50,155,162,121,54,151,222,161,217,58,133,95,119,192,96,168,56,162,216,99,194,84,150,191,130,100,54,208,187,19,145,9,44,71,62,248,250,165,140,205,25,49,77,199,107,148,28,211,136,81,247,104,205,56,148,181,252,129,20,162,62,244,116,71,185,70,127,11,69,175,197,53,189,80,200,6,119,235,165,33,124,81,254,195,231,31,196,35,99,238,42,55,45,136,130,53,182,209,242,153,83,6,80,161,118,248,200,101,210,69,121,20,99,23,179,154,64,163,170,194,68,181,172,130,157,108,156,35,59,121,159,96,237,137,156,71,41,146,216,134,30,109,18,148,236,88,124,8,21,187,163,84,67,230,125,44,221,106,241,73,221,84,220,130,224,118,39,236,154,213,247,175,31,123,45,206,11,219,211,10,33,212,246,2,50,165,16,18,221,147,240,48,185,115,99,37,92,37,101,141,36,234,42,180,63,202,83,32,115,254,104,105,120,75,13,227,192,250,72,226,89,161,38,106,193,129,0,95,66,131,232,215,28,113,184,106,227,179,166,93,171,220,157,38,221,124,248,82,108,40,82,97,88,232,22,153,27,245,57,68,201,62,34,10,197,119,166,22,159,65,127,141,219,26,154,35,252,12,217,79,147,132,248,140,173,76,51,242,218,73,86,92,187,55,31,180,165,218,20,63,84,97,123,80,66,253,68,91,153,55,217,98,153,38,54,251,126,12,219,187,92,77,190,25,111,191,210,232,3,75,160,7,220,250,82,42,132,139,182,186,247,172,223,214,198,102,49,100,235,13,133,219,9,82,218,139,80,137,242,23,35,105,23,147,221,211,67,29,251,70,120,61,185,4,239,209,36,219,152,123,20,15,77,146,155,150,122,199,190,91,241,201,204,5,46,250,182,144,66,77,128,33,94,147,98,126,229,49,25,134,199,57,82,218,54,57,185,224,244,180,245,18,140,187,238,117,155,25,93,73,107,99,112,15,79,25,224,198,195,38,238,70,111,31,215,0,225,55,51,229,159,127,182,50,107,56,128,225,206,252,109,136,222,54,22,50,98,68,97,113,57,214,2,197,72,157,140,215,211,201,93,62,62,153,116,40,166,252,220,155,162,82,58,204,38,221,14,246,93,234,144,189,200,144,233,149,223,130,171,152,60,67,203,255,253,113,5,237,76,63,16,59,115,163,16,200,162,230,51,44,2,222,145,85,87,17,65,177,119,189,243,38,224,225,216,207,145,214,65,49,4,156,93,17,182,114,80,37,198,119,182,54,135,157,144,138,74,95,84,161,7,230,141,251,243,218,215,102,140,254,142,25,194,74,58,215,186,112,142,254,152,91,30,85,205,209,252,172,0,153,73,201,61,212,218,12,167,110,186,210,11,171,28,25,211,67,65,1,119,52,152,142,125,58,231,12,201,19,208,170,197,178,106,172,178,162,161,157,231,69,109,20,12,67,133,27,154,84,49,33,80,192,17,18,76,38,83,150,3,66,185,66,63,105,102,179,253,174,49,233,23,197,120,139,85,252,16,128,109,156,10,165,160,134,171,16,176,245,35,55,229,91,143,88,94,172,8,199,226,41,52,129,126,30,115,141,195,133,33,173,197,47,34,81,195,172,136,166,249,166,67,85,104,202,158,229,20,232,60,186,215,185,81,102,199,117,216,22,31,101,171,73,76,150,161,11,132,43,82,65,72,105,77,224,181,234,6,84,104,133,196,74,144,185,13,84,236,52,77,93,249,187,121,225,167,61,120,102,199,167,84,182,199,70,238,226,233,128,109,33,85,235,0,16,172,182,206,153,60,3,148,152,69,198,90,36,121,116,83,117,236,223,175,26,67,30,135,106,217,68,191,208,195,240,144,3,59,166,38,208,1,69,231,176,205,87,38,199,119,209,158,65,87,6,128,97,128,253,180,102,15,111,156,29,100,239,216,124,11,184,159,54,13,143,33,151,8,19,20,94,147,107,126,29,255,119,179,108,26,203,173,135,15,254,160,61,233,5,226,117,63,179,76,247,17,40,165,235,9,106,108,247,137,191,250,141,254,149,64,186,223,206,251,171,151,62,222,7,72,222,92,163,235,70,153,33,104,94,223,99,39,160,50,208,53,124,83,212,73,129,244,110,254,58,57,236,178,181,247,19,250,198,76,214,125,184,156,78,121,24,37,7,199,247,87,234,37,46,77,150,199,69,132,98,126,185,7,180,8,87,121,157,186,11,1,218,50,217,122,171,171,239,245,127,84,148,218,247,32,177,122,147,185,238,118,79,103,253,159,233,235,110,225,40,89,169,50,160,206,177,246,214,47,36,119,20,216,139,96,21,159,213,150,2,236,170,42,114,49,196,30,238,21,201,137,173,144,35,177,198,14,209,251,165,96,153,145,17,134,77,162,119,171,76,130,248,205,98,210,113,162,13,142,65,131,61,9,126,156,142,233,210,229,138,92,221,138,216,34,184,242,54,174,166,238,62,32,97,53,197,204,165,25,176,149,247,188,221,228,140,209,63,160,122,235,154,196,47,159,161,93,201,91,106,156,120,139,115,246,190,251,124,71,246,132,26,148,170,67,79,212,72,33,249,3,155,53,32,111,128,125,93,235,93,52,241,186,92,16,126,186,204,126,220,54,234,44,65,44,5,2,112,103,72,206,214,170,164,207,163,236,66,34,233,122,181,166,178,106,50,60,102,163,99,87,133,163,171,250,64,45,138,25,8,219,2,101,193,228,107,28,104,67,234,140,69,136,237,233,227,60,37,130,151,254,25,183,216,250,174,93,75,156,6,187,98,151,79,94,169,55,52,3,177,218,52,213,247,153,19,26,228,94,206,72,215,17,107,83,184,174,136,140,216,138,85,183,195,217,174,68,239,147,80,209,11,101,11,238,200,174,113,212,7,167,157,211,251,179,43,17,28,245,160,225,60,181,189,132,42,77,117,71,132,88,124,160,81,164,166,34,146,9,142,108,93,46,174,247,198,34,95,229,138,228,181,106,126,188,238,96,148,238,50,195,129,224,93,230,14,44,180,59,173,120,237,41,171,153,196,131,191,219,28,90,236,83,13,238,179,72,181,103,219,213,106,96,120,3,37,244,148,44,19,245,108,209,206,23,2,239,134,10,191,11,208,170,222,100,100,185,96,49,218,88,30,57,87,135,3,51,180,240,172,90,5,170,220,46,111,36,57,13,68,86,127,91,129,211,219,1,143,76,247,233,242,191,4,141,192,16,245,83,255,108,34,19,81,181,112,79,94,182,6,149,236,224,174,2,151,5,215,215,165,54,197,126,219,255,34,0,105,168,152,2,56,254,139,71,146,188,21,84,133,94,102,92,164,255,165,247,98,178,7,79,158,192,240,59,230,63,103,177,70,150,27,214,224,21,107,185,214,213,254,52,219,87,158,118,141,214,24,164,178,117,49,117,204,195,30,249,50,4,63,56,225,122,90,144,85,220,141,99,213,46,7,30,22,154,133,102,117,227,55,124,191,72,77,144,161,21,123,15,31,94,187,246,176,166,2,255,225,67,139,155,221,226,62,69,106,136,157,104,134,36,113,229,186,90,140,244,21,38,180,236,34,189,43,248,52,7,25,86,205,116,117,165,126,119,16,64,238,139,207,239,149,59,158,17,145,81,186,105,214,138,30,108,109,106,64,85,235,57,219,226,180,93,203,85,133,55,102,245,170,226,239,219,52,105,154,233,28,178,95,151,247,95,43,89,147,83,61,140,112,227,216,157,166,233,240,211,65,191,243,33,155,26,98,209,132,205,46,244,66,79,135,153,167,122,246,98,133,238,26,220,8,252,228,199,112,166,77,145,143,110,6,207,112,96,115,106,224,97,72,39,138,234,190,54,225,18,35,128,73,233,192,111,9,220,7,108,96,83,8,35,166,39,113,138,222,167,58,234,255,113,104,190,152,211,67,170,218,186,143,140,63,169,64,255,211,33,78,222,38,48,150,78,199,90,146,80,187,249,64,61,0,217,81,172,106,245,237,191,80,180,140,196,227,41,127,61,89,7,160,149,81,193,51,243,101,199,101,229,212,118,48,218,67,76,242,183,211,140,223,212,128,193,7,155,234,41,35,24,53,176,229,65,83,216,220,120,144,191,96,245,80,132,28,186,169,237,103,38,117,108,239,139,13,252,88,119,80,145,122,19,207,160,69,231,176,80,222,45,110,83,186,254,165,211,222,84,187,218,61,220,217,98,146,103,171,47,132,107,141,236,228,16,127,26,247,187,17,171,102,43,177,147,15,214,225,249,161,96,205,212,154,225,240,172,114,240,182,142,146,111,145,9,22,251,98,160,20,55,106,252,148,73,150,3,160,194,159,23,57,31,71,200,228,76,99,63,214,32,53,165,47,70,91,157,14,224,169,232,79,106,122,46,195,129,51,31,119,36,127,39,239,60,213,14,187,39,43,77,233,160,4,235,134,222,146,238,152,226,133,109,99,172,122,90,225,247,4,19,65,152,224,238,245,249,147,66,122,213,149,120,125,173,107,62,91,53,111,56,113,178,121,222,1,132,169,48,156,44,112,197,54,228,128,70,140,138,252,113,30,38,142,158,154,190,191,195,30,107,103,205,132,198,120,166,214,74,30,20,114,74,223,206,178,12,200,181,219,156,46,142,205,101,114,121,193,234,175,255,123,107,101,156,156,24,128,36,212,64,23,77,91,230,126,110,78,47,153,95,217,250,55,26,32,177,248,131,36,196,190,147,84,168,113,212,139,95,232,193,86,198,201,81,78,188,51,35,213,216,68,222,66,150,82,96,10,80,180,196,11,136,134,12,155,150,44,171,132,245,181,122,9,103,103,121,102,5,178,9,0,133,161,140,223,11,208,20,94,162,136,101,0,51,94,118,169,244,226,233,155,106,214,231,94,130,6,219,100,157,217,62,132,228,230,233,152,233,13,56,14,114,36,2,235,197,4,240,191,250,141,160,50,159,143,59,192,50,144,16,182,147,253,136,58,226,123,183,185,194,232,19,233,249,71,6,255,193,153,197,253,119,68,90,20,234,119,237,215,163,178,103,167,7,153,189,142,46,245,0,29,156,236,174,109,49,131,47,187,164,83,16,29,39,83,166,13,33,99,24,217,150,189,52,80,58,167,57,96,197,125,157,27,170,15,78,102,185,219,184,164,123,167,146,217,202,146,16,117,197,29,13,47,3,234,240,45,141,159,247,209,116,98,189,230,153,251,175,219,173,237,222,218,207,48,148,86,134,221,34,163,127,57,225,178,232,242,92,214,98,115,212,243,56,13,140,249,144,137,9,160,121,29,139,54,194,68,58,85,103,250,242,215,76,6,4,61,62,245,84,217,217,10,235,24,242,57,227,9,61,182,32,198,199,85,197,74,252,254,135,34,47,103,242,66,13,14,198,89,12,30,238,115,213,86,190,169,214,46,255,165,240,113,155,201,44,184,151,182,98,111,73,217,203,142,20,28,211,35,237,143,110,94,188,151,67,166,96,89,215,50,70,243,178,140,200,7,184,82,59,159,41,120,117,42,98,206,249,3,82,124,56,103,190,202,150,157,142,104,61,164,126,101,38,238,146,250,162,160,202,84,234,244,37,152,169,217,117,184,245,52,192,127,119,213,98,57,63,155,213,8,12,107,69,203,192,16,91,58,134,118,203,66,130,216,29,237,158,208,105,253,177,54,244,248,149,243,159,249,196,125,210,57,244,245,199,138,216,152,133,132,9,65,153,184,44,172,205,172,184,16,182,195,166,187,43,1,209,255,184,188,249,245,134,94,255,168,33,65,6,159,8,130,246,249,168,49,180,25,181,119,230,241,71,89,201,208,207,212,86,32,214,234,58,78,40,204,170,180,136,204,95,199,34,218,11,172,88,176,137,10,236,193,2,30,114,173,60,237,118,248,198,32,139,200,64,61,235,246,37,169,52,78,67,239,39,235,15,50,197,240,111,118,193,65,194,88,156,147,21,221,9,205,30,33,111,49,245,134,13,211,215,239,216,62,136,224,217,73,204,153,103,138,196,86,47,215,10,54,172,224,246,57,237,11,227,89,58,159,160,27,87,34,105,65,183,7,164,136,146,151,239,183,47,13,16,58,95,86,27,207,86,236,64,86,250,254,31,228,64,37,28,153,90,175,92,202,45,95,97,235,168,251,129,83,162,225,103,193,227,1,114,60,47,127,195,199,255,151,230,210,247,17,246,173,93,209,60,47,189,62,91,198,133,35,39,180,249,77,13,76,159,51,105,116,80,193,2,89,117,110,151,113,235,70,136,44,61,102,151,11,135,129,101,154,70,70,36,229,187,19,35,249,4,215,61,170,187,141,29,169,216,113,34,208,143,225,238,203,97,98,64,246,81,133,114,207,103,123,192,217,62,96,76,140,175,70,68,42,140,83,91,63,12,83,157,196,21,199,209,166,134,31,99,212,219,180,88,161,84,32,50,124,69,233,58,47,48,235,115,102,158,253,124,138,66,191,51,156,159,25,45,153,30,137,185,160,0,211,182,103,48,196,114,171,251,137,122,144,124,136,111,85,162,14,41,124,66,244,15,180,228,80,38,120,248,185,185,10,157,85,248,229,112,87,113,35,13,229,72,247,64,183,144,41,156,57,1,153,7,33,193,17,214,57,76,21,142,185,9,117,9,213,177,119,247,42,14,221,11,117,28,54,167,230,44,26,0,8,121,7,72,56,248,167,185,117,120,53,78,224,115,242,250,1,5,81,36,194,145,210,215,168,101,196,214,117,44,253,241,181,203,165,20,243,23,213,234,33,213,0,178,131,83,61,99,53,95,179,22,113,115,185,162,113,79,89,210,84,141,102,226,73,100,227,204,0,234,161,29,115,171,39,59,105,22,94,119,6,190,150,49,14,8,126,203,63,66,5,228,162,89,144,111,38,66,101,255,222,145,253,30,191,50,189,200,135,163,142,207,119,178,219,229,64,89,202,221,184,30,159,62,130,81,60,59,146,6,40,88,239,37,176,169,240,117,226,104,229,79,62,193,23,195,63,245,234,247,22,180,33,48,226,70,252,146,59,145,164,201,3,169,182,129,236,22,253,93,102,9,3,17,161,78,187,95,213,220,238,229,143,66,155,204,175,168,72,210,116,45,219,158,227,89,196,23,228,125,82,43,22,38,1,233,40,92,166,96,39,215,0,94,34,40,247,228,18,62,80,244,175,19,66,105,159,76,86,150,55,58,37,108,75,53,222,247,9,55,82,252,154,88,128,243,68,67,204,4,246,185,86,252,254,39,255,127,233,255,46,88,190,199,114,171,250,146,229,195,50,147,91,139,172,55,105,248,175,199,119,198,74,206,155,186,234,145,11,148,63,85,185,234,210,52,136,35,5,195,163,171,65,33,116,170,81,225,79,106,91,83,210,149,51,65,38,132,31,69,1,22,15,83,0,158,110,4,17,79,71,4,20,253,10,77,14,249,185,2,50,151,141,98,121,184,227,27,15,61,68,201,65,97,190,189,247,221,116,61,99,95,140,118,137,210,77,43,112,55,252,53,66,96,65,129,29,179,218,57,36,124,64,90,232,63,136,174,122,171,122,217,149,227,226,113,229,211,28,243,29,218,71,156,229,212,19,74,97,134,75,60,247,98,96,155,102,85,209,151,232,181,249,70,125,41,36,83,85,225,148,182,18,243,153,248,44,82,140,192,108,114,103,63,175,190,17,121,128,91,141,57,173,103,171,226,218,62,205,160,2,228,69,22,75,80,249,107,188,17,26,26,206,41,103,224,171,77,92,254,152,253,47,37,181,118,133,91,22,207,17,232,132,231,135,228,169,26,155,185,73,107,127,10,113,203,248,202,164,26,250,64,194,183,91,23,95,234,78,140,184,123,176,95,194,162,14,229,72,177,202,26,38,71,249,5,38,5,35,244,2,233,127,31,115,20,24,235,160,221,250,71,233,222,180,237,108,98,235,116,101,180,47,35,184,160,55,109,80,115,70,175,15,44,6,69,179,106,155,157,28,49,114,76,128,231,58,109,72,182,187,122,5,221,242,4,73,103,53,166,149,122,59,11,27,9,51,79,100,57,199,137,64,150,74,215,70,168,22,105,196,13,42,87,173,118,1,59,76,22,224,32,214,162,94,59,44,84,129,151,223,148,239,202,224,25,152,142,213,94,32,63,70,173,62,1,178,80,198,183,44,248,35,10,148,178,163,169,159,12,116,229,65,101,95,125,232,170,172,232,137,115,211,39,245,182,238,211,216,133,65,84,133,32,7,232,168,98,130,157,174,182,83,8,136,18,255,190,55,243,124,27,38,30,176,222,142,67,85,164,85,49,70,187,210,20,50,130,239,224,103,254,4,33,208,240,20,182,251,228,64,139,231,124,169,18,201,195,164,96,235,110,123,152,219,149,222,104,129,184,216,103,11,50,1,222,225,99,176,89,88,43,124,31,11,24,13,244,103,234,252,123,68,107,114,201,39,130,130,46,164,173,20,126,78,171,46,54,123,218,150,70,117,95,12,32,200,72,4,142,90,195,115,119,112,150,11,214,148,154,112,111,238,76,215,131,33,7,201,144,218,98,229,234,182,2,27,27,170,36,102,144,25,26,23,64,37,61,135,26,192,241,137,131,142,216,2,249,193,153,32,196,96,146,22,118,212,127,110,195,174,42,167,19,64,142,0,176,84,245,200,124,61,248,31,99,81,171,2,15,72,147,122,46,117,161,97,135,225,191,115,52,83,78,239,250,26,102,183,233,142,26,184,205,55,80,72,20,197,209,184,84,126,183,54,170,89,17,121,212,59,97,227,230,164,233,255,191,101,193,162,104,153,148,166,236,27,178,59,123,131,126,12,114,30,237,178,13,145,34,89,36,227,63,173,213,72,149,233,127,114,124,247,76,234,220,122,69,192,6,88,219,240,185,194,170,77,168,149,56,80,3,214,141,56,41,243,156,128,147,87,1,7,215,161,127,222,246,97,243,114,116,201,86,14,169,130,193,167,31,203,162,254,91,48,43,2,48,160,249,25,85,99,67,92,166,177,226,30,41,56,18,54,189,154,154,125,50,68,248,130,245,5,37,183,243,183,179,222,77,135,218,230,44,147,74,42,149,3,95,153,251,112,8,120,217,206,67,19,55,254,78,147,152,129,200,184,9,79,218,72,83,70,8,157,75,226,212,34,5,22,12,43,141,153,188,237,65,124,20,176,215,252,35,156,194,74,103,157,165,227,114,241,29,129,63,143,221,90,187,70,179,30,251,115,14,5,244,74,221,197,15,96,18,201,240,75,115,192,94,146,46,156,142,39,210,238,93,219,202,202,185,118,54,64,88,79,227,233,25,137,187,33,243,108,142,221,181,182,228,48,64,219,38,241,37,31,168,102,169,147,213,157,5,140,7,76,20,160,53,149,18,183,194,72,29,183,149,103,180,146,40,110,97,179,144,88,224,218,126,33,235,93,249,113,126,240,184,202,33,84,170,87,186,202,243,2,69,93,2,79,117,248,175,222,104,184,0,145,211,15,130,255,181,11,122,13,227,80,140,49,184,0,211,86,178,159,90,153,21,126,184,168,221,42,182,159,8,157,199,234,127,161,235,238,159,67,252,125,174,204,255,70,89,2,102,102,195,77,224,92,134,124,62,12,139,132,56,219,185,252,131,169,152,4,85,166,231,220,154,173,142,240,205,203,20,47,95,215,181,42,236,48,239,58,181,70,243,73,71,201,149,224,5,100,17,247,37,111,244,249,248,59,150,239,88,255,186,204,149,228,158,178,182,155,150,134,145,205,157,211,141,195,206,112,202,236,34,100,176,241,163,202,143,163,57,100,93,66,177,63,85,52,250,16,248,220,146,52,100,232,239,247,102,6,69,238,1,210,59,215,27,156,237,103,57,40,147,168,79,61,5,220,186,107,77,197,11,1,139,25,101,96,125,198,18,17,2,245,101,182,209,156,91,152,103,212,156,251,255,46,255,139,7,147,35,221,82,101,31,164,137,235,26,116,250,168,143,252,121,130,23,184,15,160,244,185,147,223,12,115,163,73,190,177,65,175,37,43,106,203,122,13,84,130,6,78,2,231,244,130,96,94,105,182,182,84,194,69,184,69,49,95,216,51,154,22,226,64,248,222,182,194,95,143,140,159,137,250,11,143,145,127,40,74,232,39,102,127,66,0,176,33,199,41,10,179,81,87,170,34,9,244,97,85,146,202,124,151,50,151,214,24,218,122,104,235,103,182,57,194,165,240,197,238,46,224,202,207,82,11,41,3,155,218,238,255,36,95,25,252,157,220,14,188,250,51,165,224,121,207,0,26,44,74,204,16,154,217,246,253,217,195,108,49,90,238,162,117,133,143,66,142,76,242,235,139,83,31,109,14,232,85,254,136,46,247,243,187,197,132,190,35,176,151,92,151,44,45,243,151,192,166,23,198,168,71,251,123,168,186,155,196,236,77,65,184,115,139,69,39,2,55,206,46,190,82,32,146,12,81,182,31,57,16,182,242,235,54,224,244,43,157,85,122,139,112,213,0,28,54,20,46,130,49,12,199,89,162,98,160,159,14,141,162,3,62,11,195,205,193,139,57,63,62,246,2,246,125,12,18,22,180,7,140,11,4,120,42,187,247,117,80,42,153,139,63,176,95,253,153,137,218,126,145,202,102,72,51,24,146,182,101,32,172,89,89,192,237,55,41,122,54,22,241,37,34,59,18,2,43,226,221,101,149,156,169,45,4,98,164,80,152,93,226,245,78,148,99,48,67,168,109,103,21,236,184,201,42,154,116,14,9,78,78,83,108,222,113,167,93,154,215,19,183,198,77,55,187,144,196,69,153,148,28,113,116,57,33,132,122,179,105,150,115,55,71,108,236,59,175,198,153,238,247,175,148,229,38,247,46,126,134,196,203,21,4,128,27,228,106,119,91,204,253,168,57,234,205,136,197,205,176,195,185,173,50,50,51,49,49,157,63,2,64,87,49,162,197,193,73,198,223,145,122,16,150,212,152,135,104,250,93,48,174,252,126,166,74,166,100,9,114,11,46,125,72,194,96,217,51,201,255,124,41,248,12,11,224,147,124,97,84,88,134,46,249,33,132,225,149,157,50,204,143,43,0,252,98,228,202,167,241,83,97,227,224,160,196,142,222,139,30,183,178,31,123,235,165,198,222,82,95,104,0,241,100,157,29,9,227,211,224,164,219,132,144,228,241,29,86,86,239,49,51,41,98,223,174,161,199,184,170,1,19,57,163,38,179,210,74,174,39,189,225,166,168,192,5,43,91,226,91,230,30,168,111,158,54,19,62,184,41,131,246,168,111,216,234,83,227,238,52,210,245,123,113,213,174,95,14,19,94,180,224,87,211,79,148,60,95,75,124,212,129,216,51,125,126,208,170,81,115,9,46,158,92,160,241,110,0,235,148,43,185,22,97,36,114,251,91,149,21,94,93,5,216,39,204,2,95,253,59,35,85,90,170,122,140,134,196,158,49,225,162,162,200,97,228,173,118,221,101,248,241,62,113,4,204,9,81,243,208,103,93,151,8,114,34,245,89,40,201,238,254,61,246,129,129,7,62,160,137,38,244,137,170,203,49,169,228,64,37,6,183,62,111,66,144,249,66,174,187,113,134,92,236,114,97,16,42,49,205,107,255,65,202,252,246,83,194,20,126,157,139,249,76,211,55,195,240,192,253,167,111,128,241,119,40,226,218,191,51,243,189,109,248,115,116,222,64,186,222,8,74,87,41,250,154,185,156,90,109,255,253,165,27,244,228,164,159,124,231,111,250,86,39,162,97,122,56,219,135,204,190,91,3,212,224,59,79,24,23,37,184,189,97,152,220,202,186,143,105,71,118,32,149,74,209,87,247,120,224,107,195,123,243,185,141,189,209,238,80,243,116,219,27,164,216,10,34,148,24,40,86,32,168,251,189,7,49,132,253,28,222,157,224,232,163,236,44,109,196,125,13,168,132,235,87,254,241,94,103,15,18,138,3,165,201,210,49,104,219,70,226,179,168,206,63,125,32,174,104,66,104,71,109,65,38,64,21,71,71,91,170,69,48,236,126,142,77,38,112,179,138,80,28,233,127,36,153,33,106,99,84,146,177,138,41,78,157,65,34,98,21,97,62,107,84,219,35,75,79,174,146,15,160,10,168,75,40,162,83,148,186,135,180,79,20,33,17,178,231,108,152,14,130,113,57,114,198,57,19,39,2,14,71,242,168,144,160,124,105,118,242,223,121,8,84,165,166,35,155,176,53,158,91,141,76,101,93,176,124,157,6,117,234,167,7,247,202,202,71,117,184,251,36,176,79,43,96,71,66,105,9,88,128,225,192,222,235,59,193,250,77,61,75,46,36,246,52,110,200,241,228,23,30,178,2,64,92,99,250,31,75,126,229,169,12,15,42,18,105,44,66,89,170,193,248,87,92,214,72,102,3,86,29,69,109,160,252,102,39,82,115,91,136,204,217,189,86,163,36,99,1,55,201,6,33,27,112,204,251,188,101,90,82,174,22,90,116,94,68,101,216,231,6,181,230,227,228,188,218,255,127,121,66,60,142,176,220,146,13,109,14,215,42,3,25,67,142,169,196,239,211,123,170,58,20,109,101,127,64,219,66,116,191,124,164,167,192,189,113,151,176,8,74,181,195,55,125,66,19,3,130,167,182,36,8,185,227,204,16,76,145,26,222,65,107,5,198,220,178,236,75,12,206,60,66,23,72,213,47,103,40,152,66,220,16,22,39,155,39,39,233,155,30,6,7,28,115,170,189,217,8,135,167,69,35,198,69,42,61,146,132,210,124,1,52,93,205,40,124,209,156,247,37,62,15,146,136,186,235,239,35,204,156,99,152,131,58,18,86,154,208,143,169,36,121,237,158,133,107,170,245,215,53,237,77,15,48,115,144,208,215,50,198,77,201,24,90,122,110,198,0,236,246,74,149,202,103,55,189,198,83,167,96,236,152,227,53,200,10,221,185,155,134,13,173,245,219,5,45,189,72,104,5,252,225,93,83,192,222,52,239,168,171,30,158,253,223,168,47,125,154,93,108,46,81,162,136,96,223,205,24,41,161,153,67,9,144,2,79,33,117,151,25,190,91,139,236,155,82,162,254,48,22,88,254,170,50,253,69,214,148,202,229,213,189,39,17,246,154,137,185,244,192,6,181,27,161,223,246,122,60,231,15,136,16,242,2,192,248,43,140,114,1,165,199,17,8,249,174,117,40,162,201,89,98,56,170,140,120,77,13,216,59,109,172,210,214,168,92,152,233,164,73,146,79,163,50,90,121,124,60,155,36,47,181,145,58,107,103,18,211,65,183,108,203,67,194,46,178,96,234,115,91,180,212,232,184,251,213,197,57,52,35,154,116,97,6,30,252,206,136,142,17,155,218,192,22,117,173,6,168,13,93,63,249,97,181,124,200,242,151,94,95,47,233,35,186,8,165,73,6,252,128,138,221,192,147,25,100,33,175,28,236,82,60,223,96,134,5,82,223,26,126,88,172,63,201,5,253,3,115,202,197,86,114,98,94,16,48,0,251,0,177,49,0,39,173,13,110,110,222,229,210,133,112,69,206,132,69,36,208,53,144,173,108,150,197,62,155,148,152,162,141,24,72,205,136,49,126,32,255,130,175,43,15,194,185,77,177,248,105,69,95,14,56,160,49,100,125,9,83,236,116,102,99,206,76,129,126,226,250,147,45,44,95,151,39,118,174,248,103,135,98,145,126,86,154,132,221,76,166,215,132,51,207,202,142,62,131,53,159,27,100,41,162,67,90,30,61,77,109,232,183,104,242,224,80,242,21,247,84,89,182,220,16,125,77,64,64,36,67,255,83,110,225,133,82,114,51,192,184,73,223,65,224,78,131,88,187,160,47,129,161,109,239,242,105,195,123,132,122,135,205,209,147,188,254,88,142,170,99,152,97,145,114,109,14,253,123,55,21,160,134,86,114,187,139,23,206,64,38,125,116,100,63,12,202,73,207,114,119,232,255,198,63,2,4,227,17,33,207,102,144,133,52,154,68,98,72,187,2,149,111,21,182,170,212,193,93,229,209,69,54,42,178,254,145,21,113,224,255,83,238,157,46,167,15,46,96,168,18,179,206,142,76,122,115,241,152,216,133,123,33,121,184,54,123,195,98,76,76,252,60,47,135,111,150,150,218,116,21,61,100,96,228,203,189,182,53,178,199,209,223,110,236,221,203,205,230,85,219,3,133,178,143,108,125,251,86,124,155,23,253,237,57,133,109,163,68,54,94,216,173,244,165,203,230,201,253,211,247,236,177,136,43,189,143,77,220,164,83,253,17,87,187,224,131,33,187,222,61,204,14,182,28,20,55,178,18,151,27,28,227,172,202,99,42,252,18,89,22,76,141,193,177,56,39,140,89,148,18,5,88,169,190,90,64,121,16,23,36,190,50,182,165,107,157,197,222,141,32,61,118,222,20,84,44,198,231,2,96,40,92,68,135,95,126,88,159,121,132,134,73,71,177,45,128,245,28,190,213,73,185,52,51,26,192,100,20,223,147,228,16,15,121,173,158,38,235,27,163,180,35,82,137,242,83,112,149,189,80,92,165,227,34,253,0,3,210,186,93,124,53,107,85,77,215,194,109,34,210,245,140,136,77,135,254,173,227,243,159,156,26,200,98,47,248,221,27,138,165,146,187,123,140,209,159,140,192,58,20,12,230,153,230,174,63,34,249,250,95,48,85,244,0,3,164,231,2,114,91,6,223,2,128,59,252,64,91,29,73,90,24,148,79,7,10,168,123,248,37,17,227,208,230,85,64,233,14,157,46,139,111,166,186,88,147,50,172,244,234,26,233,83,170,50,22,124,86,112,46,205,184,232,110,114,216,183,206,0,151,60,12,29,3,100,121,8,184,253,79,19,181,62,17,123,134,253,63,97,255,221,52,163,235,207,26,53,250,221,248,89,88,55,56,243,229,196,86,185,17,95,84,86,120,47,107,34,252,126,177,153,218,61,174,161,121,171,103,100,131,193,239,217,185,156,150,177,193,23,62,184,55,8,177,225,16,216,204,125,139,102,55,124,92,216,32,128,241,223,156,91,212,162,160,111,135,19,26,125,192,100,120,234,160,66,70,171,95,184,214,12,242,193,86,112,189,113,169,204,23,75,19,211,79,77,7,177,10,3,7,90,190,196,229,71,21,145,142,209,170,199,7,38,148,153,40,149,95,246,189,191,62,185,204,38,133,177,141,94,191,160,36,114,75,15,175,147,51,207,62,52,61,122,83,213,18,110,174,120,12,121,97,184,243,9,153,154,35,57,98,141,2,203,188,63,30,194,142,105,164,192,197,139,53,88,147,18,127,173,135,11,78,158,217,173,228,237,240,46,117,61,83,98,43,204,37,187,167,137,197,99,239,149,93,96,239,3,233,119,54,111,244,206,96,55,133,16,29,172,239,187,213,72,107,233,173,72,239,182,126,196,91,121,58,21,139,181,24,163,180,228,0,220,113,129,34,197,122,218,124,133,63,147,227,153,212,246,19,180,242,61,162,114,11,25,229,50,131,23,61,191,160,89,15,216,140,252,5,2,150,142,180,167,119,210,235,82,246,37,141,58,222,190,169,198,30,6,189,85,199,166,35,18,105,10,21,86,177,209,84,212,233,180,233,85,129,160,135,242,125,99,252,115,39,48,17,77,31,57,182,254,119,196,146,247,146,170,183,30,143,252,19,249,96,195,83,244,246,203,1,216,25,196,191,172,120,35,48,192,118,64,238,130,61,142,72,239,161,87,183,185,76,4,205,252,201,174,140,154,57,69,85,1,149,180,66,72,58,213,64,89,39,24,176,221,93,251,150,184,145,43,21,50,73,66,49,31,97,180,51,160,69,32,235,20,69,202,119,122,55,25,115,106,253,57,144,170,189,180,17,199,174,222,81,120,46,9,217,46,166,87,153,112,178,56,217,227,115,225,133,45,113,149,231,73,87,11,16,67,163,72,103,13,45,213,75,48,135,167,211,131,32,222,15,151,145,131,242,210,130,19,202,69,20,242,110,107,128,1,33,128,189,31,160,220,167,44,157,125,35,209,21,36,220,210,103,26,226,46,240,34,148,240,164,222,24,225,12,191,101,38,83,61,182,22,246,168,98,201,93,182,79,45,106,214,152,234,176,178,251,7,14,193,30,189,185,51,21,136,190,139,28,108,244,98,195,79,109,147,34,185,32,99,158,32,172,200,140,228,220,71,205,80,98,76,249,238,114,38,229,221,108,34,185,209,158,108,9,190,49,84,236,108,228,7,103,220,18,42,49,182,21,195,52,146,52,244,141,106,96,255,108,207,149,97,8,80,219,37,143,29,228,209,40,225,217,124,26,224,254,60,29,199,0,110,121,69,217,131,63,146,142,210,45,8,115,215,40,37,86,22,1,224,21,130,253,120,71,162,239,106,0,103,193,249,173,72,143,78,54,102,207,174,122,254,38,81,158,232,4,153,45,31,203,231,61,176,122,124,164,83,34,204,5,60,225,121,23,108,252,6,242,112,35,94,200,198,126,93,49,110,89,217,250,111,164,183,179,150,111,9,144,88,180,203,239,10,76,189,83,78,41,32,20,156,206,198,136,154,44,165,96,162,194,205,2,101,240,192,60,187,211,86,116,87,231,175,113,136,158,224,245,43,35,182,194,168,176,224,65,69,178,155,215,239,157,92,44,188,106,105,147,203,83,77,43,69,171,96,51,53,82,70,63,100,192,150,196,226,238,84,100,22,144,133,44,119,195,3,202,105,115,203,76,162,210,202,49,96,142,34,233,247,103,74,29,217,18,135,248,149,176,144,1,232,104,16,60,159,155,24,86,192,32,43,124,181,132,161,176,46,35,186,235,120,149,13,181,232,52,141,209,155,227,156,210,155,46,29,159,75,244,104,41,226,46,111,36,1,147,38,40,205,7,89,176,120,75,208,70,205,4,211,163,20,153,59,81,174,167,137,176,251,143,231,144,94,182,177,197,4,164,102,123,142,133,91,213,50,240,186,110,50,148,132,22,196,86,164,244,206,121,139,16,34,86,42,247,179,51,197,41,72,236,109,165,237,192,49,32,64,89,154,37,114,211,47,201,58,13,210,74,210,89,109,183,132,134,184,42,226,112,97,12,153,246,240,38,201,117,24,169,100,63,202,5,209,13,250,25,11,112,195,103,134,67,215,171,14,111,214,85,223,115,145,65,97,106,29,26,241,183,81,14,231,195,233,54,229,113,174,49,252,5,143,154,123,153,37,255,110,112,50,54,119,32,214,49,71,15,249,252,86,74,21,37,182,133,139,80,126,0,131,140,112,106,21,99,219,202,155,99,164,162,170,184,103,47,201,220,7,127,172,58,244,100,151,179,173,240,86,50,31,230,157,144,44,1,178,58,159,217,189,34,122,198,173,131,101,145,250,166,183,210,41,156,155,46,76,185,93,16,229,244,9,169,208,81,39,74,131,40,66,175,88,48,27,105,235,168,142,102,121,173,178,52,42,48,249,200,221,31,4,189,174,219,159,180,57,122,66,212,56,248,189,154,223,86,231,37,63,9,45,56,161,199,32,150,220,83,188,188,67,26,215,179,103,62,180,220,162,75,218,136,142,171,230,159,118,182,74,212,101,23,128,128,255,143,133,141,234,202,145,55,172,1,204,187,56,150,128,159,45,47,232,147,13,251,80,192,196,179,119,142,134,37,198,92,110,174,50,98,36,165,230,135,132,214,43,233,228,145,109,6,240,147,119,85,134,140,184,193,104,180,33,209,145,84,208,118,132,245,57,123,200,74,126,86,180,220,78,165,110,64,42,210,211,181,241,169,112,159,186,140,3,28,244,183,140,47,197,208,76,108,133,218,241,153,197,1,35,163,156,133,196,29,20,113,227,212,47,252,230,65,119,140,253,91,189,62,139,114,128,52,159,150,70,101,208,160,69,219,205,112,42,186,242,182,250,203,159,10,245,118,172,145,0,215,70,152,218,69,100,166,200,194,246,131,55,247,9,50,18,21,82,190,92,176,225,14,131,114,173,113,55,200,254,254,205,1,156,160,171,236,91,76,157,250,173,254,10,250,9,118,196,60,224,123,42,192,87,252,36,245,159,51,191,228,165,106,175,255,20,198,28,153,180,70,110,159,172,144,39,24,170,230,131,183,107,12,194,226,51,18,113,39,138,158,122,253,211,43,75,214,86,46,153,170,1,191,195,214,246,213,220,138,58,199,1,16,74,29,121,221,120,99,197,92,227,131,207,207,82,242,35,242,197,98,210,103,79,158,69,47,136,27,194,228,211,65,79,190,16,213,219,237,190,193,125,223,41,75,150,230,108,183,213,106,129,25,80,237,218,86,11,198,96,111,128,140,237,253,204,60,112,88,182,242,29,109,110,39,51,19,14,6,209,13,47,221,88,120,213,125,126,192,46,146,64,45,51,221,92,79,26,12,204,177,183,122,240,210,215,13,63,126,91,117,129,243,182,59,29,194,237,180,179,113,78,104,51,180,94,95,223,250,1,201,184,74,110,110,154,212,57,115,100,232,190,232,19,211,213,249,80,178,58,111,187,126,163,199,49,85,108,208,14,183,222,24,104,116,173,18,240,180,9,83,115,31,9,114,0,3,79,43,63,22,211,188,89,211,238,4,235,253,34,123,189,120,5,229,19,24,149,68,119,179,37,50,59,40,241,217,142,174,5,249,64,103,185,196,155,188,183,69,39,145,138,166,162,75,86,138,17,88,112,90,161,56,42,95,140,67,166,155,27,237,20,63,188,143,148,110,168,178,63,59,136,63,175,1,65,64,20,119,98,182,247,196,58,24,126,177,206,114,232,168,133,244,113,180,80,144,59,89,113,119,208,1,129,163,187,233,162,190,0,243,241,193,197,227,250,57,5,146,70,112,35,29,161,232,37,127,70,92,58,253,228,245,27,17,92,77,189,29,93,6,236,103,197,54,241,192,244,97,42,104,227,166,123,102,64,151,99,129,226,80,176,63,156,126,80,211,249,113,79,111,35,84,251,22,198,27,122,11,45,99,112,219,112,200,172,116,23,137,225,3,52,16,54,144,165,61,241,79,61,248,127,12,210,4,221,74,26,60,232,107,217,123,208,106,52,229,162,12,240,131,99,138,111,17,113,56,109,49,104,76,112,94,42,0,157,27,107,4,235,232,6,190,185,82,205,207,94,237,175,23,148,237,120,145,96,12,146,73,78,115,157,7,106,70,105,49,47,224,133,234,149,96,124,199,25,166,172,154,79,82,220,131,27,240,168,137,109,231,206,255,113,133,88,240,135,172,56,246,185,126,116,36,177,203,142,89,106,87,46,229,79,67,215,221,83,108,223,99,45,18,198,114,151,3,11,107,238,239,158,97,212,220,198,45,100,162,29,187,126,102,200,111,146,88,84,238,84,208,157,249,198,179,101,176,74,202,239,127,95,237,208,166,197,76,39,184,143,57,102,246,38,19,190,71,30,86,119,164,81,8,84,46,3,89,93,237,107,70,173,111,191,170,76,255,146,191,217,161,49,102,81,115,99,8,88,155,222,140,49,30,236,43,106,210,83,238,148,124,189,137,186,48,122,147,110,31,55,101,216,183,88,140,14,232,61,225,78,95,142,197,234,53,15,120,173,138,17,198,217,58,254,168,214,11,96,55,255,163,191,212,162,138,77,189,227,45,111,47,74,151,241,178,203,191,8,127,50,240,219,112,223,77,44,224,178,66,124,162,35,185,31,152,178,157,115,115,173,59,9,133,239,164,201,204,34,63,52,36,33,113,166,246,252,19,165,61,198,117,63,6,135,193,124,159,78,96,216,28,145,133,110,171,239,238,61,167,62,233,137,112,52,17,126,25,34,220,241,17,77,10,58,53,158,149,41,9,204,202,37,225,6,37,212,107,108,28,80,195,215,188,203,130,127,149,183,99,219,189,9,42,114,173,135,191,69,7,193,148,142,55,245,45,211,74,29,118,116,82,200,30,35,85,81,43,4,162,32,67,119,235,29,22,114,77,108,81,221,194,139,254,2,12,87,78,216,203,0,149,100,254,182,1,20,107,73,239,211,253,4,254,62,191,249,23,248,23,202,166,218,208,86,156,192,124,183,238,28,132,42,86,213,107,152,212,159,96,93,244,150,232,184,210,33,15,180,224,181,127,222,85,181,169,170,152,131,145,221,228,178,189,132,142,207,55,225,171,222,88,161,15,194,147,32,201,214,139,177,161,183,166,192,35,135,22,249,16,77,199,232,60,172,106,15,172,222,133,8,197,96,221,36,35,154,1,121,13,243,28,224,110,29,175,205,91,241,186,143,174,98,72,90,128,113,230,163,55,27,17,239,52,174,234,32,251,9,200,222,145,183,233,125,16,136,81,23,86,63,214,100,118,87,11,228,104,46,111,193,243,167,48,80,180,180,182,68,17,35,75,150,161,241,19,175,234,238,6,108,34,99,7,92,39,43,164,192,30,80,220,39,224,12,158,49,236,105,245,243,53,90,102,32,191,97,181,164,160,175,24,112,225,151,170,130,214,18,234,84,218,185,243,196,190,135,205,161,146,224,92,227,30,17,187,75,125,106,36,175,14,248,222,187,128,133,105,186,81,116,59,192,114,139,238,170,96,143,106,188,39,134,64,190,107,151,109,132,236,111,55,194,231,148,24,151,17,34,16,6,41,238,155,236,219,50,207,207,249,219,16,149,189,126,112,8,72,94,5,17,207,134,69,54,216,34,139,192,126,92,130,144,1,158,96,154,223,111,158,70,9,156,246,227,239,183,47,227,207,231,168,190,47,200,84,36,16,13,157,53,155,88,232,183,178,189,235,246,175,193,168,204,241,79,158,155,17,187,202,24,129,14,88,137,94,132,95,104,190,154,201,226,69,205,23,17,192,2,191,239,29,169,119,8,164,92,244,249,2,239,72,29,235,175,15,78,160,171,37,63,246,62,194,120,222,30,156,136,228,113,133,247,91,254,14,171,48,192,58,199,97,154,37,140,66,152,169,182,191,171,88,224,23,80,32,47,129,92,46,56,125,33,233,51,223,44,45,154,148,63,88,22,195,43,106,167,127,58,70,223,98,108,133,69,205,89,19,188,148,173,138,250,224,207,16,191,93,92,59,223,42,136,161,20,164,220,60,119,230,163,174,214,240,135,78,216,152,115,157,228,100,188,184,91,208,196,253,164,75,210,173,214,152,231,81,27,16,45,159,30,244,117,65,65,114,108,3,11,29,153,203,222,235,56,18,138,177,235,181,129,198,183,75,15,70,165,50,83,155,15,4,192,245,223,65,84,25,98,59,45,31,49,188,191,194,233,49,71,239,198,115,182,104,98,55,79,86,93,225,141,51,167,198,180,138,149,43,159,35,159,117,60,106,183,247,150,182,48,65,186,9,154,191,35,80,66,219,139,247,126,228,60,117,174,219,88,234,205,5,78,159,61,38,41,238,200,170,180,190,52,131,147,146,227,133,204,190,229,158,176,53,55,193,32,0,36,242,40,50,120,152,40,174,223,153,41,215,125,98,220,119,237,15,11,141,4,250,136,11,85,115,123,29,96,153,75,10,109,54,153,89,116,236,21,104,8,242,2,121,77,129,171,88,164,166,248,229,184,17,240,197,86,81,17,148,27,134,94,37,89,80,142,143,173,198,82,110,3,224,218,185,123,77,135,99,207,30,107,70,28,171,241,192,146,176,50,210,67,165,103,134,45,229,231,223,1,21,126,236,63,130,201,140,132,240,205,210,242,40,102,240,246,75,99,24,60,191,248,221,226,221,210,45,130,81,219,237,37,146,219,160,154,225,214,130,230,8,184,200,55,6,218,65,49,18,141,93,252,168,154,149,131,220,52,173,119,76,121,238,223,70,130,110,56,236,98,11,80,144,179,228,156,24,250,40,44,58,76,146,65,170,157,93,132,205,89,210,16,161,119,86,56,146,92,103,72,198,46,47,243,96,200,168,220,172,49,13,137,239,172,200,150,39,191,198,220,41,80,138,87,209,14,114,196,59,226,74,158,158,175,247,48,173,55,168,253,43,114,39,218,187,130,240,118,52,65,137,211,223,93,253,179,79,0,31,232,46,106,47,150,252,168,239,169,101,182,130,31,131,18,36,51,41,195,245,148,156,45,246,121,241,208,117,177,137,33,88,32,246,47,107,115,152,120,183,105,22,186,190,53,61,13,245,213,99,197,217,67,251,222,48,204,254,99,61,151,97,144,57,238,47,8,81,37,217,125,54,110,41,210,191,106,152,119,14,96,90,23,206,65,116,14,192,228,94,227,204,238,66,137,88,144,193,109,7,200,101,213,50,181,145,125,221,130,49,151,98,66,12,189,197,187,135,215,63,41,119,128,182,25,15,189,101,129,51,142,170,197,200,123,7,100,43,86,176,95,140,202,24,22,169,225,24,248,248,186,211,114,151,30,95,37,214,68,208,0,76,21,99,46,165,218,157,218,107,52,251,54,10,144,21,215,100,92,22,145,189,60,126,87,125,194,108,111,113,90,128,54,41,245,81,243,189,22,94,188,86,116,59,120,146,167,74,45,17,185,52,2,124,60,146,43,165,93,147,34,215,207,234,170,240,77,170,186,205,20,85,95,198,189,82,155,110,98,176,210,0,245,73,91,56,254,123,198,131,34,122,154,8,0,128,64,147,206,149,185,52,161,212,47,211,189,39,59,140,220,192,74,61,91,178,19,229,95,178,81,82,40,216,114,163,92,117,192,4,67,11,238,9,252,145,238,100,110,121,62,211,145,201,16,124,190,193,184,133,71,118,210,33,104,156,89,122,165,1,217,22,249,18,31,91,254,183,208,215,235,175,209,53,238,180,103,114,145,252,213,126,53,82,43,145,23,71,126,223,8,218,184,48,42,189,51,1,111,93,138,129,42,72,225,114,13,24,185,197,162,70,65,121,212,212,162,7,29,3,205,172,34,227,56,220,68,34,3,208,224,55,149,31,175,93,140,121,139,86,43,157,175,235,58,68,26,7,67,187,95,205,210,67,95,234,170,189,61,64,179,115,196,170,51,190,41,210,174,180,224,65,207,107,171,58,141,16,147,12,77,164,189,215,213,30,147,196,118,189,194,215,16,214,38,207,13,5,99,19,129,159,30,221,182,227,241,126,126,103,115,31,40,185,56,230,8,66,124,86,64,139,171,128,170,133,15,26,154,31,92,245,116,68,113,81,241,177,83,80,211,164,42,60,75,116,56,110,50,184,1,138,78,133,19,110,96,10,23,218,68,145,102,73,169,201,112,186,85,81,228,34,24,64,244,173,233,88,192,238,199,166,210,81,133,222,136,178,207,76,146,4,231,71,68,217,78,213,188,40,67,60,5,190,14,7,222,175,211,14,29,1,32,199,79,167,241,25,121,115,144,100,29,17,117,90,220,89,154,191,205,228,97,195,21,201,231,243,154,52,232,140,155,46,78,111,98,190,189,64,232,34,44,138,27,174,63,37,110,46,144,182,3,69,11,93,198,150,211,72,151,54,114,130,120,157,117,54,186,144,19,40,163,62,49,113,245,199,123,151,119,207,50,167,227,112,143,91,204,179,214,176,206,78,164,106,20,203,79,121,236,119,141,137,147,27,239,39,78,58,122,253,70,200,255,58,160,47,140,72,252,22,2,186,213,147,10,31,222,131,151,95,149,29,94,16,97,226,211,63,57,96,132,128,29,192,4,240,138,77,121,113,213,104,134,69,215,140,255,237,29,56,250,150,149,252,215,151,102,220,49,111,225,235,77,150,16,0,205,134,11,149,36,85,120,47,67,15,140,149,204,136,172,84,241,143,187,44,68,170,160,136,102,49,229,1,93,128,42,177,78,43,74,159,234,210,64,128,58,90,1,10,158,115,197,164,44,137,59,83,136,187,106,51,238,69,51,230,224,240,127,230,136,214,69,63,138,200,94,102,21,250,58,226,186,115,10,157,132,199,50,230,200,14,154,33,98,31,247,40,7,248,50,214,176,235,22,90,245,160,179,22,216,210,146,86,75,90,153,32,144,210,175,100,32,146,208,239,24,230,247,61,25,53,120,192,195,68,230,40,192,39,10,43,233,114,40,230,123,110,160,233,26,34,63,35,26,119,97,26,209,85,167,89,86,238,61,111,4,225,79,20,103,185,176,43,34,12,248,60,8,219,201,16,31,7,39,172,218,135,198,4,43,86,86,140,178,28,87,1,221,125,50,188,165,229,253,31,247,105,206,157,79,76,155,35,58,3,117,62,165,26,69,72,31,84,221,61,100,16,65,197,116,26,33,70,51,75,173,162,87,5,194,129,168,108,111,191,217,188,20,32,40,146,219,107,147,142,203,150,130,219,115,29,120,135,45,132,114,116,239,44,248,227,12,238,117,215,249,45,196,130,22,251,203,193,239,16,250,70,159,243,168,4,236,47,58,162,114,80,64,84,165,114,89,208,72,205,102,169,144,13,217,189,159,119,40,188,128,204,127,61,199,80,173,188,190,145,62,221,191,139,214,197,69,21,120,195,189,85,11,154,187,104,66,82,135,108,134,118,205,20,146,132,36,87,78,168,95,121,12,143,151,185,75,18,64,247,178,233,213,30,248,151,110,212,212,209,33,183,87,78,156,172,48,26,113,115,85,158,75,101,126,6,37,131,15,228,138,200,175,40,75,62,214,202,87,9,76,49,56,136,152,38,167,24,148,15,232,203,111,142,160,182,200,31,96,102,17,100,97,214,6,194,96,110,216,67,185,69,83,49,193,85,43,72,168,210,142,151,255,251,157,76,45,248,72,45,47,79,182,218,201,71,101,109,152,119,55,133,10,188,132,172,213,206,15,187,80,89,199,25,163,132,198,25,183,145,29,168,136,168,144,95,77,143,77,178,106,151,36,1,58,173,253,63,70,1,197,19,228,11,69,123,85,105,165,96,84,38,15,1,8,92,116,228,121,38,71,82,84,72,41,100,82,69,191,40,106,163,178,99,124,100,146,100,81,177,104,192,254,99,125,216,209,145,224,171,105,37,255,156,199,58,232,152,253,75,135,197,97,58,23,125,169,127,210,110,80,73,146,40,16,36,48,249,91,189,99,117,105,226,107,185,27,231,82,72,199,213,88,75,71,42,209,9,234,68,219,15,230,237,214,183,243,255,165,248,23,41,170,244,45,192,113,167,3,124,6,220,20,180,254,25,164,1,40,82,120,82,167,198,12,199,99,37,107,15,41,243,60,185,58,110,174,251,63,252,185,97,254,37,224,213,126,48,31,66,44,190,55,135,30,1,200,186,201,245,230,115,27,152,196,131,135,67,192,242,53,245,0,215,144,44,127,105,6,188,247,122,218,140,87,196,97,91,208,81,73,29,179,35,29,3,75,32,138,189,150,5,24,15,73,32,46,2,155,23,174,164,116,158,136,162,176,254,196,100,215,18,35,133,49,47,73,73,141,202,216,101,171,33,87,207,59,195,72,183,185,55,77,221,179,132,249,0,233,104,253,34,29,118,180,183,4,69,129,34,160,139,130,239,1,54,223,16,151,230,240,129,213,135,90,114,29,83,155,133,3,166,103,86,238,36,150,21,40,184,253,237,218,2,72,181,107,81,193,241,175,137,111,164,7,154,247,41,36,7,33,159,238,111,181,153,22,65,116,111,31,181,147,86,7,79,103,118,134,137,15,190,155,108,203,126,20,100,85,11,32,63,15,149,146,228,87,46,18,40,79,89,69,126,3,113,198,211,183,232,13,106,255,233,146,58,80,212,103,243,57,219,102,63,207,91,242,122,195,207,54,144,150,160,161,197,237,41,8,246,211,66,80,112,28,124,232,81,204,42,76,114,93,250,54,181,98,208,240,9,164,240,99,189,52,35,14,161,53,77,144,116,61,56,155,21,176,157,188,98,81,151,189,164,138,199,140,109,67,176,38,129,81,198,229,227,170,45,147,166,43,248,59,21,180,120,213,240,215,192,31,233,69,181,5,79,133,247,59,120,128,187,59,6,19,173,168,109,170,197,225,91,48,230,209,31,132,215,11,153,19,102,30,254,193,19,104,97,221,23,68,187,169,213,69,244,128,137,253,254,162,162,112,66,120,64,90,172,166,152,23,55,81,151,230,135,137,141,150,97,224,98,129,102,125,61,213,47,239,197,201,80,222,48,86,162,213,16,239,53,187,76,18,187,191,32,51,231,115,2,227,144,198,252,30,16,48,125,193,244,152,250,57,140,205,85,36,180,136,47,196,151,103,132,190,86,79,25,137,21,204,31,113,104,19,41,151,179,164,178,184,6,132,49,104,134,163,59,113,118,16,1,100,232,216,252,19,192,163,103,116,109,136,199,158,112,125,241,129,69,93,130,91,23,161,85,252,211,87,21,28,25,254,135,243,165,64,111,109,32,170,15,82,108,230,232,119,6,80,169,14,155,41,155,99,189,99,185,76,212,34,21,44,18,87,90,81,95,50,218,2,4,103,102,255,140,180,82,126,147,165,50,62,140,71,210,199,139,236,214,134,242,7,89,36,228,13,7,207,11,62,185,5,49,38,88,65,14,99,17,214,145,248,251,209,5,123,130,59,111,98,139,112,171,33,238,58,27,122,89,235,35,121,40,158,98,200,35,217,229,237,231,201,142,217,225,178,57,70,60,11,55,35,148,96,117,100,83,130,159,57,33,34,43,177,229,109,192,79,224,101,27,52,50,170,104,163,32,81,254,142,104,75,235,139,189,117,138,234,58,28,197,11,250,204,93,128,84,194,238,140,61,30,32,108,78,88,77,145,195,152,248,82,146,96,129,234,167,15,40,66,179,17,69,143,95,113,176,158,55,11,234,37,243,189,38,152,95,200,89,185,250,76,212,222,248,242,51,242,189,51,161,112,169,214,252,250,93,62,164,93,211,223,124,246,102,112,240,246,71,44,217,162,185,151,152,156,74,203,156,161,208,85,172,58,249,218,76,62,34,251,96,52,188,148,211,123,198,86,255,34,53,245,215,158,164,254,68,214,72,39,207,144,71,244,237,237,61,105,244,200,205,70,159,81,91,4,56,1,109,117,84,188,198,120,27,23,169,169,236,83,119,40,2,202,94,240,79,172,67,184,194,190,15,9,85,86,182,196,232,160,175,115,30,23,56,238,115,124,76,4,222,187,19,27,224,51,223,101,235,140,68,203,1,106,91,134,252,110,30,241,159,109,29,167,101,40,104,107,165,43,93,91,80,48,200,123,255,206,59,93,40,114,66,31,219,14,148,138,119,43,133,80,134,17,48,69,96,129,237,123,86,155,49,175,68,176,209,79,246,139,64,163,25,111,16,127,87,119,155,127,9,182,196,148,179,93,218,60,84,117,85,246,10,124,142,247,65,47,96,103,231,143,193,42,251,223,198,50,171,134,17,235,76,184,163,184,126,146,198,49,170,43,21,131,94,5,50,239,109,145,20,105,23,5,22,143,191,247,150,34,215,186,207,113,199,35,173,64,251,200,230,217,65,97,71,242,31,57,142,214,248,109,130,174,138,71,196,219,167,124,66,166,113,20,120,247,210,198,49,63,7,127,55,130,109,222,144,198,0,64,195,142,197,5,218,71,245,236,116,183,36,51,46,204,69,129,228,86,139,196,108,74,220,196,166,213,106,126,200,109,88,28,78,222,170,118,119,157,216,245,85,36,157,35,201,121,81,83,60,181,9,236,26,4,52,190,213,229,3,58,251,211,159,111,184,206,12,133,45,106,231,92,234,10,154,88,234,156,46,221,89,91,0,194,233,238,131,23,223,21,64,11,83,13,72,186,115,255,164,160,156,73,71,245,129,44,148,88,63,37,116,242,242,137,167,60,64,66,210,116,181,83,62,129,175,224,127,36,171,146,183,108,45,212,15,238,52,58,27,247,86,14,118,159,72,107,121,126,83,63,248,110,8,201,189,160,22,158,210,237,143,228,152,17,11,247,210,0,136,109,101,186,135,167,31,118,139,165,245,160,69,211,149,165,188,54,200,156,175,221,134,252,147,90,6,19,182,181,195,3,158,25,33,243,2,51,30,131,192,69,66,228,218,169,231,53,82,74,157,111,133,245,178,41,100,187,253,120,253,126,54,180,172,161,122,49,35,225,108,209,160,188,128,18,144,160,145,68,202,27,154,58,164,109,126,55,180,73,63,208,125,157,114,10,170,230,242,127,28,189,61,95,114,203,36,215,58,35,33,144,161,154,80,34,167,189,175,111,119,12,191,174,253,16,195,97,24,186,177,184,189,163,251,205,111,145,4,0,211,135,22,247,111,83,142,149,174,236,72,22,238,133,31,6,247,251,40,92,196,228,177,45,160,48,204,92,27,201,173,218,59,111,106,88,63,22,196,249,138,246,70,119,122,222,149,74,61,199,254,251,221,55,225,163,136,90,44,48,213,23,69,201,224,205,7,178,94,67,107,110,147,113,35,115,43,148,185,200,186,137,44,87,161,71,92,0,173,173,238,161,177,191,169,154,168,58,98,49,132,137,47,71,107,193,7,15,190,187,129,205,110,4,90,242,128,29,64,89,65,59,102,17,106,204,117,155,30,209,138,242,4,236,157,185,243,188,99,71,180,235,92,89,83,135,74,202,241,79,103,150,126,166,81,219,3,225,21,35,84,155,119,181,102,113,250,62,4,163,4,235,93,213,215,238,162,165,207,240,21,227,3,120,139,197,173,92,148,4,132,151,255,240,252,212,43,237,37,154,62,30,149,37,153,4,210,68,152,86,12,100,144,169,61,194,21,53,85,233,21,185,246,181,252,70,20,113,150,66,3,212,124,5,108,238,21,178,25,67,143,245,246,150,253,43,64,184,99,61,161,104,74,93,105,34,156,199,222,234,135,129,43,99,196,195,82,170,93,145,92,196,170,28,191,171,83,120,76,196,177,17,42,182,251,205,65,144,42,139,50,134,2,84,21,64,59,103,46,53,181,185,119,49,31,1,99,53,69,81,230,15,148,75,150,194,96,65,178,42,115,23,154,52,80,56,91,199,241,33,130,28,217,83,115,241,19,60,231,25,251,114,88,133,5,253,249,24,67,140,233,87,44,66,231,129,35,187,152,38,155,3,246,151,128,94,86,27,179,253,115,215,24,126,170,149,224,104,164,97,226,8,180,129,105,155,127,198,157,252,74,36,33,59,248,50,113,51,36,209,186,190,221,180,230,191,238,23,146,129,193,143,134,176,211,146,212,206,170,100,249,2,2,181,92,140,134,82,191,155,64,55,177,183,164,149,5,156,34,131,36,161,5,28,133,231,245,231,85,103,143,230,112,150,56,100,195,32,166,103,51,88,92,92,226,4,160,232,49,123,28,27,28,28,138,167,251,103,173,14,58,62,35,64,198,231,80,250,4,239,119,109,111,18,149,84,89,250,57,161,184,160,131,117,89,87,101,182,237,108,3,249,26,19,213,247,172,173,18,10,180,252,226,140,7,86,47,39,53,43,31,0,90,108,12,102,128,47,210,48,155,78,22,165,130,202,62,53,115,44,170,26,146,48,17,114,45,14,158,44,173,160,1,192,28,44,228,121,8,207,59,93,151,160,135,127,21,21,231,222,129,28,58,71,10,35,176,51,112,72,117,155,83,165,30,130,124,7,172,141,188,123,27,255,24,180,220,48,221,58,47,169,0,9,9,164,120,40,203,20,240,108,63,255,62,140,162,203,253,19,84,176,124,136,122,226,241,214,231,182,152,17,186,60,233,134,157,48,245,111,228,197,90,95,61,115,194,221,191,66,115,104,227,27,255,142,236,69,251,172,20,43,13,92,44,96,201,158,115,251,109,143,115,65,27,115,35,238,42,62,92,222,157,79,41,210,203,232,2,130,227,83,191,66,16,194,91,60,182,153,188,118,175,166,163,89,77,216,26,238,53,220,56,2,136,230,167,139,81,196,39,65,194,242,211,36,179,44,137,168,32,236,125,79,154,168,241,176,9,235,249,166,23,192,179,198,216,144,27,0,44,11,160,234,221,78,11,99,169,168,26,73,124,0,9,123,0,116,24,86,77,17,217,227,171,32,244,192,17,41,144,38,163,216,27,39,139,221,231,19,160,131,146,145,12,149,221,96,22,135,156,177,25,185,23,161,144,218,163,79,78,29,84,193,222,82,68,11,134,16,113,63,3,28,207,23,170,95,0,54,92,54,133,92,252,149,81,165,83,55,64,131,212,19,212,121,52,190,242,74,66,27,31,123,85,238,71,78,254,164,142,96,245,37,136,236,93,10,249,114,215,34,135,232,212,159,136,94,135,119,26,197,91,115,223,253,206,10,16,152,104,37,234,63,79,247,241,39,100,51,204,156,251,54,0,164,224,4,98,128,209,41,123,242,183,38,141,37,175,254,228,125,145,53,71,193,68,239,142,139,179,164,174,242,241,95,162,28,132,185,240,78,71,195,42,249,107,76,132,245,0,205,16,52,103,205,214,142,151,45,173,96,49,147,220,177,36,128,16,219,25,95,86,58,171,144,13,100,26,34,228,85,140,252,208,91,146,97,165,246,19,253,39,166,172,233,107,98,108,85,222,57,202,193,212,107,76,152,91,253,107,113,249,221,67,193,74,195,170,7,47,207,182,55,150,30,80,54,117,22,77,52,214,96,145,210,199,155,3,115,15,71,203,84,211,34,190,193,32,186,8,179,131,163,205,193,248,243,31,59,138,54,136,202,161,123,8,11,40,253,139,53,228,20,216,241,181,187,58,245,211,185,251,10,113,248,17,19,252,159,22,251,229,79,205,111,9,127,244,222,244,61,38,3,170,190,204,96,180,104,176,229,254,33,2,102,178,94,234,211,51,3,200,100,136,0,81,116,20,218,171,249,199,46,110,106,162,39,236,19,186,177,125,160,62,79,178,77,165,137,117,155,59,142,124,205,7,212,172,18,216,148,83,64,229,23,17,78,176,150,72,52,116,15,70,146,204,131,204,194,54,36,10,59,151,115,31,15,40,225,207,194,98,231,122,37,244,254,13,70,126,230,194,64,47,123,139,60,56,241,175,190,110,228,92,97,2,178,137,166,113,242,33,217,94,175,140,139,75,183,134,221,111,108,235,252,83,62,90,28,43,171,84,82,226,174,110,246,79,179,45,13,35,102,71,201,54,245,171,229,239,56,181,174,95,52,43,235,27,59,41,116,157,224,117,167,180,227,94,165,119,17,209,167,95,182,34,252,45,31,58,162,30,232,130,138,115,149,251,150,193,41,96,229,248,140,121,93,239,206,96,207,33,66,46,48,44,72,251,155,147,200,161,18,119,30,15,56,140,63,109,118,12,50,180,2,116,173,178,88,197,65,70,132,182,185,227,96,40,82,40,6,14,169,74,47,54,16,74,13,2,80,196,176,247,221,19,242,169,37,90,214,71,229,138,127,139,41,35,100,25,165,76,116,41,176,16,210,101,41,188,180,248,57,68,103,251,54,59,124,109,105,99,66,91,132,1,4,255,191,132,89,90,67,73,0,139,162,109,148,90,5,66,12,167,201,246,145,229,78,126,117,228,202,175,23,230,126,181,138,121,237,96,103,10,99,5,34,252,14,137,36,130,38,187,185,71,164,114,19,251,207,134,210,199,140,191,45,239,219,153,133,26,37,235,220,31,237,193,155,212,51,83,63,2,27,228,115,81,84,116,113,31,226,151,3,6,54,8,111,13,172,58,18,237,55,206,233,128,145,119,191,228,211,1,59,239,194,47,133,80,107,175,69,57,37,49,224,155,79,112,29,144,246,134,205,92,1,112,213,53,77,158,115,177,132,137,27,113,47,88,204,60,0,147,99,154,201,246,220,7,172,187,104,104,120,230,87,241,150,11,46,196,86,228,174,27,73,62,252,206,12,166,67,210,5,197,106,119,64,187,202,15,128,243,222,47,124,168,119,64,144,35,198,195,117,31,67,21,4,220,156,1,32,105,203,165,242,7,96,166,209,113,82,7,80,141,22,249,44,219,53,226,79,175,137,62,119,116,242,61,104,167,100,21,174,64,23,43,84,244,218,46,49,199,30,254,227,3,88,98,55,189,55,254,210,178,135,40,35,200,134,128,68,115,159,109,129,47,236,157,219,169,55,61,58,45,110,201,131,177,237,178,197,224,97,210,213,249,114,26,134,176,79,14,30,71,91,126,233,41,88,125,128,245,70,216,114,238,126,240,127,38,157,246,245,217,243,118,209,207,57,73,233,33,83,102,165,158,53,240,173,39,183,77,254,39,171,233,60,125,105,115,24,184,252,120,67,115,168,175,211,103,52,98,161,146,131,94,233,87,126,251,227,194,54,2,134,213,188,201,23,154,111,160,68,140,212,41,35,75,71,71,140,39,149,165,76,15,161,3,164,61,74,246,238,236,218,136,52,123,223,98,87,193,0,174,82,29,39,232,107,121,18,253,105,167,100,248,111,197,76,132,5,61,164,79,102,64,20,202,76,229,65,175,109,43,145,254,128,49,100,168,137,225,193,130,48,37,133,16,75,139,154,19,40,38,28,11,233,91,156,188,205,179,45,2,89,179,187,167,123,165,33,255,88,138,188,47,34,130,117,58,193,172,245,122,137,227,30,28,242,70,4,126,129,0,1,98,195,47,133,208,57,127,27,138,152,189,174,125,100,134,244,100,11,94,240,141,12,117,153,111,38,61,0,160,156,14,37,197,235,51,195,119,236,91,190,230,84,220,59,142,34,130,77,13,146,108,190,125,14,78,171,165,218,250,181,181,186,77,113,56,69,238,200,149,34,197,150,74,33,67,228,71,18,191,183,217,25,233,147,74,186,184,153,58,69,138,102,151,90,21,154,161,194,204,50,194,201,78,196,237,50,131,118,253,73,95,106,11,130,78,124,31,167,83,3,97,24,124,245,125,88,206,83,39,3,134,95,56,35,93,92,192,177,246,97,59,103,98,182,76,151,179,14,201,131,41,43,87,231,150,23,182,24,93,131,46,1,77,82,159,210,27,100,103,47,6,138,193,228,46,58,59,74,213,108,242,185,58,116,36,61,126,109,1,234,195,115,25,208,208,72,34,230,36,72,209,12,28,226,179,233,32,115,236,72,142,153,129,209,153,202,249,106,109,62,94,214,10,248,178,226,5,234,243,16,99,138,58,179,228,228,243,180,239,223,143,110,250,193,102,23,181,238,79,3,76,241,90,104,10,104,187,239,217,221,41,218,220,85,33,106,93,71,87,255,76,39,63,44,87,176,254,114,24,45,154,92,38,121,161,114,188,9,23,75,108,178,199,93,135,101,36,173,161,107,58,199,134,95,134,140,22,177,125,150,4,131,167,106,181,65,245,217,202,236,117,166,15,171,30,96,236,61,93,249,5,39,190,203,241,180,120,216,131,102,102,242,255,114,190,236,120,34,221,180,133,193,79,139,232,207,93,5,138,16,143,214,212,232,74,82,182,20,196,51,164,167,142,236,108,157,191,13,247,97,235,87,105,38,221,197,64,38,35,128,160,112,179,148,228,206,208,28,236,199,30,9,53,144,201,144,152,143,52,96,104,41,218,142,203,23,121,231,26,213,77,32,59,192,139,68,216,68,3,162,21,11,74,32,4,149,201,235,3,90,7,96,114,237,156,208,20,250,78,144,188,80,56,211,2,242,30,211,14,215,39,195,222,241,183,54,68,133,24,198,93,227,106,237,125,11,29,75,185,85,202,182,79,61,34,180,156,56,100,240,235,59,94,147,2,234,234,178,163,95,150,113,226,63,6,150,87,244,134,253,115,147,135,229,188,197,53,115,247,104,19,143,223,156,99,253,178,142,251,130,234,74,51,180,125,226,64,173,58,108,131,141,67,201,206,89,178,78,179,49,69,124,127,37,119,14,239,189,211,228,208,12,99,66,135,143,158,56,63,141,49,50,75,56,148,125,18,162,246,16,105,60,102,222,189,216,5,21,213,254,163,172,58,217,113,156,64,232,135,72,52,110,54,213,72,154,223,65,42,245,226,142,12,162,225,132,123,182,45,70,84,243,158,49,55,118,191,47,82,235,14,81,54,177,5,228,51,87,80,127,214,173,9,207,94,86,198,251,173,228,82,138,131,80,27,106,33,30,188,20,115,95,231,97,227,21,33,10,62,59,161,36,18,122,104,142,196,179,146,233,183,21,55,29,44,102,225,195,139,10,99,225,107,200,106,98,248,191,12,139,236,47,106,173,233,220,125,47,61,253,246,222,214,39,102,200,38,179,199,124,40,159,154,142,228,201,105,101,220,190,121,85,109,158,89,216,141,102,136,129,136,18,108,203,148,60,106,35,252,106,235,246,239,68,28,176,228,113,150,1,69,152,193,229,191,228,243,86,100,29,251,197,136,100,180,211,104,128,226,198,188,84,214,64,14,250,160,24,119,209,27,90,142,30,91,74,92,125,179,138,146,149,132,30,65,67,208,233,238,35,29,142,140,174,205,165,86,164,113,239,197,187,232,91,47,10,179,34,59,143,37,5,221,220,140,85,153,102,183,18,47,175,196,184,180,117,5,142,134,208,208,92,68,148,155,207,166,183,38,160,29,231,102,224,172,195,123,224,219,62,122,180,54,183,195,231,147,28,49,127,229,120,183,168,82,28,78,114,242,66,234,231,127,134,9,167,73,200,105,156,5,218,211,207,156,103,71,182,102,118,197,232,239,248,127,131,214,70,53,173,238,111,76,13,156,205,202,77,189,20,168,247,194,151,54,252,155,233,72,144,245,50,136,174,64,47,232,240,197,247,10,16,97,103,186,54,170,13,84,47,143,210,16,206,150,107,192,217,88,248,161,3,108,171,91,244,28,220,208,122,12,180,88,5,102,70,68,66,212,25,237,44,88,26,95,76,131,59,28,191,16,214,230,140,243,247,10,102,50,134,47,170,128,161,193,187,59,91,74,45,135,63,231,74,114,153,60,179,64,109,1,49,190,214,252,146,73,210,65,134,208,130,240,123,76,253,205,51,164,8,60,10,111,64,189,60,124,236,32,35,239,36,39,91,174,215,111,209,204,111,97,68,48,205,45,157,155,50,239,35,224,115,51,207,197,166,231,4,95,216,112,93,123,153,88,221,165,38,249,177,142,20,238,158,9,243,17,232,156,238,34,111,158,144,200,194,158,8,77,188,214,112,173,216,191,23,247,224,9,147,124,244,166,33,140,25,16,43,252,166,237,63,194,66,77,75,62,129,35,110,183,86,168,155,237,190,20,158,200,219,188,38,205,173,86,44,61,160,68,179,229,143,47,92,243,44,6,221,244,120,70,60,222,227,3,226,143,201,31,201,85,185,50,67,21,56,40,79,244,19,252,138,60,101,211,110,194,74,128,42,40,102,101,31,172,53,216,131,68,235,210,28,139,100,43,157,167,98,190,121,148,218,252,108,6,149,95,251,6,89,236,5,180,183,199,227,247,176,249,121,55,107,216,162,9,0,34,135,24,51,134,86,199,58,180,73,135,208,68,68,57,27,26,225,86,153,133,8,169,166,202,95,210,27,197,29,226,90,6,152,243,218,7,5,68,13,216,33,198,72,238,141,191,163,106,143,6,245,33,208,135,96,195,182,84,198,4,41,174,168,193,234,32,217,246,209,99,136,158,101,149,50,127,71,159,10,225,125,36,91,225,131,149,190,179,128,250,237,29,50,21,249,132,62,238,125,212,111,81,37,97,253,180,199,181,39,155,171,26,107,91,170,183,48,87,89,56,237,142,76,252,96,113,113,9,119,218,89,68,83,134,84,32,40,103,160,172,168,40,69,83,32,100,62,47,250,8,117,54,130,201,1,248,111,4,78,35,87,90,78,72,244,161,1,236,141,176,126,118,116,86,97,129,191,24,215,40,131,184,183,33,17,59,247,116,79,70,253,147,61,198,215,164,34,95,246,120,50,27,220,4,85,145,35,193,1,17,112,236,185,4,18,139,159,240,142,217,131,73,147,6,218,35,227,133,50,225,44,70,30,71,128,122,228,209,64,127,36,175,234,60,247,196,209,178,127,130,119,172,225,23,76,240,224,147,239,66,14,35,3,180,151,194,125,196,160,192,81,77,210,9,222,154,80,30,19,198,10,51,47,109,174,123,169,171,234,224,196,223,127,33,97,107,4,203,255,127,120,223,206,42,44,238,221,105,178,221,27,174,100,151,197,206,142,50,100,215,204,70,178,91,70,36,87,151,85,116,245,67,73,169,235,8,146,4,123,26,161,101,228,192,125,254,5,8,86,188,154,47,41,83,14,205,240,167,79,188,130,119,164,93,191,35,26,59,161,209,92,66,86,212,194,232,119,154,149,106,148,103,47,233,145,20,17,7,128,156,113,254,92,12,26,30,112,80,148,203,17,159,37,124,92,38,177,178,125,251,164,239,97,130,249,204,248,23,69,154,190,200,238,87,212,48,78,124,228,43,219,9,242,250,97,69,13,148,199,220,157,205,55,19,222,63,235,120,239,62,148,126,36,79,176,211,82,164,250,30,120,21,173,236,55,118,144,131,183,88,4,225,16,103,70,179,134,89,142,136,12,231,207,38,230,79,20,8,78,115,97,33,148,29,234,78,8,131,126,35,228,108,165,159,234,106,108,142,201,222,48,103,131,200,50,221,37,70,3,157,75,77,105,103,225,68,190,97,119,123,2,155,124,175,215,110,118,66,242,70,131,137,62,242,183,249,159,28,4,154,160,132,212,17,219,49,187,43,145,9,21,87,245,205,58,51,191,126,49,172,239,47,204,68,7,15,189,235,60,185,224,80,103,211,126,125,162,66,172,103,243,186,47,18,131,117,57,133,239,1,76,199,244,17,214,6,181,88,204,93,174,58,117,56,114,203,79,163,2,108,52,169,132,166,120,111,3,100,224,203,118,180,132,215,100,85,90,126,80,197,118,218,36,183,40,162,248,146,137,93,6,66,196,96,243,6,192,217,12,230,27,91,88,222,38,66,28,34,132,31,20,130,88,2,128,109,133,23,57,97,211,65,5,35,244,166,60,106,103,13,181,66,132,248,214,84,209,92,31,117,223,149,191,240,108,134,239,0,88,136,24,224,176,241,143,65,158,87,136,217,255,130,161,124,148,212,100,78,250,45,74,195,216,101,189,78,201,107,5,32,199,67,75,120,173,99,110,21,85,21,193,231,13,217,230,197,198,9,224,240,207,94,104,14,41,222,142,102,34,129,131,27,216,205,93,206,55,236,85,213,87,114,193,206,80,208,194,31,156,3,214,104,157,76,113,50,190,23,50,55,55,211,114,4,104,238,178,72,14,47,108,233,243,96,201,233,62,227,35,184,76,255,199,201,0,202,76,148,38,11,88,86,97,159,116,230,137,106,176,56,74,45,82,251,49,129,151,40,128,98,116,6,9,37,94,43,222,95,170,163,57,139,152,206,239,98,100,99,110,9,6,85,0,218,224,56,220,206,128,81,160,152,147,140,164,138,27,187,82,185,33,96,128,90,13,50,2,127,177,115,147,83,39,190,217,40,194,75,39,208,69,37,184,171,24,133,31,6,192,57,162,74,125,59,213,86,14,79,31,75,125,238,163,68,124,25,151,10,59,116,211,239,92,101,144,135,253,97,223,32,122,109,99,204,7,79,219,49,37,89,245,3,225,79,245,77,185,248,161,96,170,127,10,169,193,209,1,32,64,81,157,22,3,26,113,2,179,55,189,187,240,198,203,67,184,72,176,203,255,141,160,198,80,48,50,0,171,120,59,220,10,190,96,195,81,76,214,32,178,63,140,19,96,247,131,177,132,115,87,136,148,155,38,119,120,141,73,247,163,60,7,24,139,152,167,171,4,220,240,119,79,174,214,211,155,251,62,113,161,208,15,86,192,88,166,127,178,196,215,197,66,200,24,113,9,90,183,233,211,96,131,45,231,43,151,62,108,51,146,46,26,226,224,83,93,244,99,40,8,140,89,136,188,192,2,57,153,228,220,164,100,103,54,103,0,145,134,205,23,160,83,16,141,86,248,39,238,44,109,248,99,45,92,228,24,166,109,252,67,221,23,87,40,54,120,74,86,83,205,35,149,2,230,243,20,169,155,31,199,32,91,195,5,200,131,207,188,134,252,147,92,239,108,96,101,70,240,6,210,196,80,72,117,46,213,112,179,155,70,145,7,238,11,64,92,49,221,84,141,39,229,142,227,252,109,46,88,119,97,54,183,15,171,19,80,156,230,157,99,47,21,233,253,35,52,159,30,1,12,43,249,79,13,151,230,163,8,129,88,4,50,36,241,43,192,18,14,48,39,160,156,137,97,119,125,201,1,192,227,89,248,23,241,31,226,86,171,17,142,21,133,124,70,54,143,1,21,111,124,133,72,235,117,198,189,36,171,161,253,15,178,176,246,52,41,126,182,190,203,229,159,39,55,59,72,29,26,109,232,165,65,249,249,172,228,1,188,100,122,206,160,71,2,28,141,187,83,58,182,208,22,151,225,220,201,177,227,81,112,240,175,183,155,73,24,81,251,127,238,250,16,250,107,3,185,209,25,149,2,170,43,152,182,183,19,91,144,223,226,247,103,30,184,202,205,155,217,226,238,31,224,27,252,232,224,241,218,117,216,170,205,91,1,119,67,28,73,80,7,166,71,201,83,27,236,80,69,89,11,223,32,177,170,79,98,46,107,6,84,152,172,190,234,139,13,87,194,255,79,51,39,93,49,172,65,77,110,58,170,138,25,143,229,111,83,188,152,59,220,203,56,96,135,215,224,231,103,157,37,83,84,119,234,250,220,200,88,250,187,109,31,17,38,247,124,69,166,106,190,179,60,240,255,233,117,29,114,186,80,44,181,239,211,88,98,253,50,12,43,225,95,29,170,27,160,83,193,190,215,182,8,102,6,136,143,224,255,255,171,41,245,104,226,39,167,125,28,19,251,148,159,37,151,70,199,129,56,178,113,135,166,189,246,98,13,249,140,52,205,250,12,205,116,226,1,6,16,40,210,64,29,205,131,177,56,118,204,171,160,134,216,41,154,81,210,151,109,78,228,173,73,74,193,4,42,66,104,75,12,178,250,14,77,108,246,232,171,104,118,240,100,60,36,119,209,249,2,204,154,233,141,99,230,74,40,109,110,3,3,197,234,52,32,138,7,163,35,253,144,97,235,207,42,196,107,63,217,213,141,62,246,175,227,12,50,93,231,83,106,248,211,184,225,127,227,157,95,221,113,61,3,218,87,253,111,171,26,19,209,94,73,38,243,124,125,180,39,16,14,21,3,128,80,141,195,43,216,43,108,190,12,214,111,124,195,13,171,85,222,73,165,187,62,62,144,129,254,216,249,226,65,156,103,125,91,129,151,152,85,244,49,43,10,185,149,107,91,128,225,162,246,113,56,150,27,98,144,104,112,90,238,96,130,143,130,29,107,102,20,80,71,192,106,14,242,200,5,201,134,46,10,190,35,12,115,148,193,94,143,189,61,212,137,96,196,9,132,152,103,27,82,77,70,182,29,210,185,125,111,55,221,246,96,58,111,235,80,46,182,12,59,0,116,45,152,6,185,91,128,80,175,85,81,111,222,187,200,10,6,78,69,44,22,195,127,161,36,222,18,226,128,224,250,67,192,110,31,65,183,193,53,207,108,152,227,110,203,128,144,67,138,167,86,111,28,106,237,14,43,22,25,8,165,163,64,81,45,21,14,218,114,177,78,109,120,165,38,76,179,103,249,179,66,97,89,19,16,176,35,21,133,15,24,59,38,11,41,38,79,215,128,136,216,128,127,100,189,63,60,67,37,17,142,167,45,84,97,247,128,16,189,69,73,59,159,178,109,76,26,40,75,216,82,157,68,220,194,42,184,111,56,64,198,39,160,166,61,38,179,150,245,80,41,222,238,163,15,38,168,107,5,89,145,235,228,113,146,90,104,133,29,76,152,157,223,219,35,246,27,159,75,15,18,164,21,188,138,218,207,68,250,31,221,182,79,78,239,46,212,11,62,105,163,55,58,57,55,76,231,1,93,210,214,182,63,59,0,29,187,64,163,55,8,59,158,83,175,222,30,249,220,97,218,241,145,144,146,110,68,133,212,222,95,163,202,218,159,220,70,65,57,116,35,93,97,31,103,3,87,245,13,218,104,196,204,175,89,58,195,203,135,113,75,205,223,33,162,96,119,215,8,140,6,190,208,114,137,7,157,176,120,54,128,76,29,175,101,172,122,109,253,48,78,53,8,27,90,242,87,4,154,223,203,205,201,178,19,28,221,155,182,58,117,174,29,24,189,5,113,233,133,148,187,189,107,206,20,172,134,140,99,237,61,29,51,223,100,230,15,220,238,186,22,192,104,6,227,191,26,251,255,104,127,202,30,76,47,226,152,193,16,253,46,10,223,47,120,157,77,117,103,220,81,7,137,207,169,9,41,94,84,230,197,237,170,224,177,193,121,225,49,107,117,190,246,124,67,134,76,46,116,125,2,202,205,86,60,173,72,137,128,205,145,5,89,245,133,104,161,50,155,247,110,55,16,132,9,244,168,11,12,177,16,117,114,200,18,218,177,64,197,153,172,81,111,134,82,40,57,142,147,150,105,106,44,23,178,129,137,174,100,69,184,195,82,0,60,236,50,243,106,17,188,142,99,234,32,159,45,13,164,242,14,194,161,232,159,229,88,64,214,180,199,116,134,90,31,192,226,224,86,159,13,238,158,174,73,130,77,63,191,231,175,91,101,57,172,188,52,114,88,105,114,88,35,180,163,58,219,216,102,149,29,137,214,189,170,9,76,35,78,74,255,128,87,76,9,74,210,130,110,215,232,189,124,7,164,28,38,55,213,162,124,101,208,27,15,6,127,35,149,95,221,13,208,70,108,106,219,108,246,207,4,126,140,216,57,159,18,250,194,181,44,177,89,32,211,134,243,78,229,205,19,111,176,52,181,165,250,239,227,186,167,121,110,194,239,151,170,128,183,180,232,17,235,146,139,12,229,28,117,217,236,16,77,235,3,107,125,12,68,86,190,186,176,184,33,141,72,206,95,217,116,106,2,100,205,79,15,80,144,42,121,81,150,71,11,217,30,46,255,141,102,4,204,248,43,206,129,170,32,163,148,189,193,77,153,86,0,104,234,191,214,80,254,125,225,72,163,7,92,146,229,43,97,80,252,82,219,16,0,227,68,72,250,30,221,226,96,237,203,51,217,180,31,147,103,186,170,110,40,241,226,180,151,176,32,70,187,166,222,71,63,160,25,221,27,114,146,99,64,137,49,102,229,193,223,62,14,60,23,216,8,210,64,72,114,247,113,156,11,135,221,14,160,60,153,113,180,141,90,219,147,244,238,170,105,60,212,15,78,56,34,108,149,40,104,211,112,201,63,186,242,150,25,10,80,252,68,121,149,92,16,231,61,195,156,202,76,217,17,3,240,54,134,171,215,60,141,193,154,73,47,11,165,189,173,108,74,145,209,154,156,127,101,233,208,105,95,243,87,252,246,181,163,234,236,8,136,235,73,25,117,107,215,21,47,231,57,15,27,197,156,16,19,93,121,206,185,172,235,25,130,150,255,246,126,37,143,67,73,167,192,57,34,14,93,183,107,102,108,183,253,100,199,76,216,50,241,81,135,43,70,110,12,83,220,241,249,246,86,235,98,73,220,90,21,46,211,80,11,112,77,202,59,37,254,177,124,216,159,29,183,203,209,119,177,202,67,147,182,44,183,124,101,182,45,232,141,85,192,195,91,195,57,91,19,170,100,40,85,85,166,185,225,128,75,24,45,98,110,48,154,117,228,228,232,114,23,181,151,71,186,110,145,73,127,96,47,50,191,9,137,205,188,22,62,87,241,240,12,111,42,52,140,146,128,121,249,156,205,143,25,220,207,164,237,162,248,40,218,2,44,96,219,86,76,22,93,46,115,4,42,100,93,224,205,229,69,181,218,117,27,177,106,73,165,27,215,70,30,66,108,99,164,127,68,159,184,199,139,227,93,137,196,155,196,133,194,200,67,49,240,246,11,150,22,30,137,219,133,49,166,107,147,127,29,34,242,19,214,64,3,239,71,164,86,120,127,127,246,173,157,57,244,221,112,148,105,59,216,153,231,49,240,213,91,131,91,254,17,198,80,230,87,253,69,180,29,50,227,109,88,53,11,94,226,203,39,86,124,134,31,151,38,55,133,82,210,149,161,178,212,163,109,143,174,130,190,51,126,106,36,55,167,178,27,229,131,208,255,26,77,26,221,215,21,99,229,57,153,20,134,177,69,73,57,59,18,75,11,67,179,102,147,85,204,179,101,103,10,145,131,122,42,176,234,65,136,100,154,198,66,178,197,250,27,184,88,39,146,221,248,114,92,21,175,91,48,127,18,201,103,131,227,211,154,99,65,109,237,231,158,230,160,161,237,90,111,187,80,229,110,121,65,213,4,185,3,175,126,173,209,210,41,200,208,38,243,22,100,207,93,239,59,134,243,214,95,47,136,55,77,125,73,206,208,199,100,201,41,171,26,119,69,62,39,142,23,112,173,202,74,52,153,56,126,147,7,195,213,194,149,224,154,244,180,115,196,163,14,57,156,165,89,54,174,74,202,98,229,136,187,149,245,80,89,23,67,183,44,155,103,168,176,84,253,178,34,107,77,184,87,160,141,251,110,36,145,83,82,175,50,138,77,226,138,15,148,130,123,134,79,1,67,200,34,252,93,185,233,197,93,30,15,13,145,84,186,150,45,16,34,13,91,84,75,225,182,3,143,12,192,113,252,55,114,78,177,8,224,47,144,82,156,91,190,171,73,215,221,29,57,143,123,180,155,163,223,202,161,39,228,100,120,190,58,47,106,174,110,60,139,48,81,72,1,208,145,135,205,46,234,241,255,155,24,33,2,5,0,70,40,93,60,154,127,227,230,173,32,247,240,247,79,142,231,49,66,134,187,93,243,231,193,153,24,161,124,106,204,171,255,149,229,124,241,157,172,105,143,38,163,80,84,199,203,195,65,153,160,8,69,35,45,107,10,104,249,210,79,219,59,116,24,48,15,102,239,10,219,171,140,68,129,204,150,249,188,120,155,250,186,57,179,130,98,213,237,218,162,99,23,163,1,183,179,80,102,29,193,255,3,168,32,110,14,18,143,126,31,139,234,112,175,239,111,59,11,167,212,87,188,49,145,234,232,250,73,158,97,108,74,237,73,90,85,78,86,87,251,148,38,81,99,35,23,246,2,214,123,174,67,7,116,14,29,95,192,9,247,20,236,26,111,30,222,84,166,230,42,49,29,93,105,135,7,3,241,172,238,39,172,4,66,74,19,54,82,36,102,74,253,254,216,51,206,30,37,120,99,224,50,217,202,195,210,92,228,135,69,215,72,98,195,28,129,239,176,193,10,49,176,102,183,183,149,205,125,166,217,58,149,112,56,59,3,87,197,205,222,135,110,49,150,111,115,74,94,57,15,249,159,153,168,164,251,146,59,255,114,164,92,74,239,70,81,147,119,93,97,169,177,11,147,197,118,141,18,23,218,226,72,237,77,252,166,231,97,165,252,152,32,125,63,129,157,112,23,36,208,181,22,20,46,115,159,135,85,196,167,23,55,2,248,178,18,121,148,178,174,89,252,252,152,21,93,180,72,212,91,153,21,240,187,239,159,201,104,254,155,67,16,113,229,29,224,92,36,9,14,239,94,153,64,136,146,43,106,56,131,109,33,153,55,170,68,18,129,68,97,198,140,39,33,134,21,55,35,23,16,75,58,135,207,206,89,254,169,161,145,24,89,167,75,41,196,117,62,239,4,246,194,142,246,94,122,19,163,139,236,58,212,180,153,115,245,193,250,38,27,77,95,96,86,33,145,244,231,4,26,147,106,13,247,108,234,121,167,77,46,116,34,224,44,16,240,193,253,49,232,220,199,4,37,51,85,155,72,7,190,182,76,143,106,24,48,173,50,244,225,34,69,33,5,183,145,74,177,35,52,218,170,29,221,76,84,170,130,126,231,155,20,187,193,138,22,241,170,242,102,254,28,59,153,45,129,182,191,145,108,33,5,53,99,208,189,77,155,250,59,197,153,222,29,150,44,155,152,33,216,120,181,106,240,75,83,116,51,83,111,223,91,184,126,89,97,199,121,135,207,234,151,13,108,132,180,78,214,16,194,20,200,114,119,52,97,164,240,111,51,10,147,124,124,127,196,110,11,45,205,59,148,215,156,28,207,29,189,85,232,4,172,146,45,196,211,116,53,252,126,143,106,174,223,80,25,149,237,42,158,249,39,27,213,199,29,63,59,204,171,196,3,30,105,60,74,65,196,33,200,43,28,24,121,14,5,20,56,109,150,251,45,179,59,228,41,205,59,229,140,65,33,222,209,32,196,160,23,164,148,188,75,175,113,38,91,135,52,218,86,5,51,100,61,71,90,107,97,171,109,58,138,26,226,17,209,155,87,145,244,54,249,171,220,187,89,137,191,108,192,23,247,244,76,174,71,211,64,10,253,152,55,237,123,14,248,211,89,58,178,108,231,224,114,13,198,225,66,174,211,73,251,232,119,247,85,190,24,169,39,255,209,1,209,52,29,150,75,157,175,135,81,253,103,136,215,230,121,208,234,128,136,102,15,190,176,75,168,13,158,218,16,212,26,211,127,25,53,212,193,150,135,208,140,103,28,62,176,96,20,33,34,133,168,227,43,209,202,219,178,87,217,136,221,121,255,173,24,87,129,86,231,124,152,110,204,94,59,14,24,71,26,154,90,138,190,146,49,128,165,191,33,13,241,52,254,234,168,77,47,62,125,4,103,244,180,61,45,179,74,25,91,13,214,12,117,1,76,233,119,120,211,124,13,115,203,230,240,222,228,151,43,213,178,48,100,15,15,181,213,134,211,33,48,204,161,71,207,109,106,38,209,17,66,42,86,96,94,90,140,90,8,53,115,77,152,187,197,234,4,11,140,35,52,251,241,221,197,13,212,178,102,42,162,16,239,67,225,31,142,64,44,52,243,102,208,32,57,202,218,139,80,77,214,218,236,23,247,127,36,58,22,237,78,70,10,121,53,189,13,9,194,197,54,94,227,245,70,70,226,207,184,103,31,133,122,4,186,63,24,181,226,232,210,23,83,73,198,107,203,147,2,155,71,107,16,162,108,86,73,210,51,2,48,9,244,62,54,16,116,183,213,232,107,76,34,25,0,156,99,208,207,10,189,241,43,145,17,95,211,228,55,83,63,164,59,126,30,161,29,37,100,43,182,44,174,156,179,97,139,232,1,222,67,183,225,26,101,89,214,179,229,208,168,92,80,248,202,99,149,29,46,8,62,148,133,21,106,46,204,186,234,206,58,14,207,155,33,130,136,52,72,195,165,148,85,252,82,215,193,1,182,84,104,142,175,181,26,81,252,122,191,159,24,19,72,63,219,200,49,57,57,217,50,162,247,194,24,241,169,18,112,194,141,192,39,99,165,139,224,251,119,22,197,240,135,143,245,170,183,194,81,12,156,209,75,175,62,22,236,151,217,219,162,209,157,26,92,117,146,137,197,7,118,127,2,250,149,232,124,98,243,93,72,187,234,109,116,20,130,230,39,158,249,206,114,0,63,44,57,231,248,239,148,237,14,33,12,133,19,175,107,221,246,130,57,247,224,177,176,132,147,202,54,229,5,135,55,129,213,185,230,205,122,169,221,122,11,235,7,193,165,135,39,47,46,158,90,133,23,137,249,91,135,119,61,186,33,203,154,237,50,54,55,193,134,44,101,54,177,231,144,88,66,53,50,64,76,18,88,55,183,112,10,203,132,233,207,123,245,142,14,91,207,45,188,137,73,199,14,247,219,98,108,252,100,90,204,152,152,74,65,146,243,117,86,22,12,11,163,101,61,212,95,120,219,218,81,121,211,29,93,54,202,173,12,191,129,234,106,82,4,149,55,111,255,193,212,232,187,77,16,3,29,7,27,132,204,76,170,163,40,111,111,64,125,71,100,71,111,201,208,188,222,34,141,3,0,15,29,220,19,104,162,32,187,162,107,252,11,172,182,24,69,111,151,2,159,48,201,224,39,81,220,23,231,10,229,202,24,220,70,171,57,6,149,233,114,239,57,59,115,242,43,12,68,25,211,249,212,1,175,33,121,138,155,111,208,96,200,119,234,210,175,26,124,51,22,132,251,152,253,74,255,195,212,154,95,172,54,69,145,4,82,41,136,73,36,163,249,238,9,231,81,107,116,17,239,146,233,83,222,167,236,231,157,175,180,147,35,255,205,170,68,170,99,68,92,221,45,77,96,148,192,63,166,119,108,16,236,81,31,159,64,196,197,125,24,218,19,159,82,67,243,221,3,213,157,28,99,27,152,252,238,36,153,144,174,245,2,234,45,191,229,16,140,241,71,72,113,150,37,159,16,237,108,198,65,18,11,201,133,247,125,83,206,86,42,150,123,166,35,135,248,18,251,140,16,127,50,186,205,4,37,98,47,131,86,86,48,233,254,183,121,5,98,2,32,205,90,224,147,224,76,29,234,166,225,78,241,156,186,40,250,185,60,54,208,160,152,35,72,51,207,143,185,111,114,202,200,6,247,53,17,169,164,62,101,13,216,27,2,232,110,5,209,132,202,173,99,190,202,80,155,68,128,1,96,181,30,156,210,218,84,154,137,148,153,224,29,8,30,29,143,20,186,8,229,178,104,184,178,159,236,189,56,28,78,134,3,240,42,157,16,193,174,103,243,142,1,9,23,253,127,49,228,30,71,76,100,98,84,108,224,118,153,139,187,60,157,220,176,124,146,104,50,249,196,110,158,32,73,236,197,158,102,164,191,216,208,88,119,81,8,245,154,236,254,7,119,198,105,105,34,251,76,151,54,203,91,91,104,17,126,34,182,245,48,107,22,178,117,183,171,19,2,251,159,48,229,211,169,152,127,214,177,223,226,230,180,82,183,15,10,206,154,87,51,72,86,122,25,211,142,176,66,244,66,173,251,184,98,136,105,93,67,179,12,203,18,231,137,159,165,147,84,230,210,244,196,154,226,54,77,46,246,211,232,113,195,35,104,93,149,81,180,98,237,36,215,40,2,243,213,161,24,175,63,234,97,185,227,182,236,202,81,90,144,114,198,223,6,112,3,236,180,170,118,66,23,169,103,82,42,246,8,152,230,24,20,220,206,91,109,111,82,129,113,188,98,52,128,124,125,215,215,96,158,175,5,16,146,138,166,193,164,109,126,27,114,125,227,229,183,143,168,106,133,79,34,89,25,255,216,65,186,194,194,41,50,255,234,192,31,245,57,65,185,228,146,224,251,180,102,33,74,87,86,66,39,232,91,204,186,121,45,251,54,37,203,16,200,249,192,104,2,177,54,197,204,85,170,41,186,54,3,236,62,12,206,253,20,149,147,235,225,10,102,237,230,118,109,106,170,10,7,5,247,195,248,161,16,194,19,210,33,107,59,139,198,114,111,82,235,22,37,142,239,254,87,250,218,5,48,197,183,41,158,238,41,63,250,160,53,143,224,146,220,132,95,97,16,17,111,223,237,68,98,194,24,190,47,43,143,83,105,245,247,120,146,123,195,31,29,63,26,78,58,23,185,148,14,78,200,199,180,87,95,3,222,217,219,243,205,41,169,252,206,150,78,33,231,193,158,217,212,242,32,238,99,69,210,173,223,59,105,244,14,240,83,192,208,48,79,165,185,31,27,176,229,185,26,192,41,4,120,172,78,248,91,32,205,213,15,93,26,143,8,86,45,170,184,143,154,197,98,116,191,236,128,84,253,66,224,32,4,182,122,134,187,244,147,252,44,77,42,15,246,168,53,102,165,126,68,178,36,157,205,1,253,48,61,75,39,80,209,85,107,91,86,140,193,73,97,138,89,10,51,222,79,150,0,245,15,59,124,134,161,207,52,83,231,215,41,240,3,102,208,230,35,186,214,117,172,65,187,72,40,190,33,179,211,243,203,73,3,218,119,88,115,80,113,181,216,180,253,166,83,250,30,55,185,236,227,93,211,9,193,55,219,168,125,86,8,178,109,245,54,12,6,153,224,195,112,140,221,128,125,148,250,164,15,50,231,239,177,147,160,79,244,225,154,255,62,109,57,188,216,115,186,146,104,122,180,118,211,217,81,247,200,56,234,23,242,142,251,251,57,193,69,97,0,129,201,131,96,220,87,165,100,243,34,7,177,108,3,108,222,146,46,53,223,47,33,222,209,30,212,13,231,105,105,229,253,90,167,58,128,124,109,154,131,75,172,208,44,36,75,50,43,247,134,193,139,14,162,116,40,51,45,198,122,246,165,199,60,236,103,49,92,15,216,219,66,205,180,97,202,115,48,129,167,135,22,13,58,36,154,113,101,238,138,163,59,19,61,161,38,35,82,218,143,242,30,222,198,127,83,62,145,152,37,155,238,134,114,95,147,193,185,11,233,135,252,35,154,101,169,183,74,66,144,177,180,91,74,243,29,253,136,13,86,175,81,106,31,254,183,212,64,20,75,38,127,44,80,62,58,168,203,181,214,141,39,196,144,21,176,113,247,251,7,22,245,87,24,135,240,171,71,113,197,18,166,45,50,104,233,12,179,190,228,191,15,17,95,192,12,4,141,45,155,244,145,44,222,227,24,143,69,44,91,224,3,5,85,35,30,86,37,18,0,35,31,51,77,214,107,170,228,247,157,98,107,215,193,195,151,179,195,156,199,181,6,255,192,10,160,125,121,239,46,0,149,246,69,193,0,129,82,17,124,215,208,115,9,94,220,101,225,43,35,168,215,39,240,161,234,142,9,211,214,138,92,167,25,79,137,180,251,163,36,90,23,64,56,43,41,24,226,254,252,184,117,14,140,42,158,22,49,13,212,16,73,1,205,162,157,19,226,126,10,102,162,150,113,116,128,85,198,109,83,177,38,18,36,96,61,229,213,20,40,74,193,124,215,226,124,175,207,250,221,30,73,128,181,150,146,239,62,133,28,145,237,113,97,87,202,221,69,14,140,46,56,123,101,172,187,87,249,124,169,149,81,218,24,5,78,35,105,108,94,30,95,243,149,247,84,208,217,235,17,0,130,199,11,204,43,52,96,46,11,170,254,164,239,238,77,219,55,32,196,109,92,149,188,131,247,233,203,188,179,194,67,4,113,254,240,200,37,191,148,127,176,98,149,208,95,203,110,68,168,215,95,123,73,90,207,152,218,136,178,222,47,183,138,197,229,163,223,209,198,90,200,25,58,120,66,104,200,194,72,245,54,106,64,5,122,201,249,148,142,124,207,40,112,233,22,180,49,146,52,151,185,204,36,146,43,130,197,97,31,224,177,38,133,137,136,61,20,209,122,162,59,103,132,61,211,24,114,200,34,65,107,113,146,25,162,125,22,121,35,74,57,72,221,125,66,123,77,92,28,247,82,255,163,37,188,90,135,104,124,168,145,165,145,245,242,150,206,165,169,167,167,30,1,249,199,129,39,32,150,110,83,75,143,23,60,22,238,122,162,134,169,252,185,77,228,219,2,237,71,108,143,165,179,253,56,202,133,108,252,184,244,199,187,35,187,175,176,151,2,206,64,192,11,225,225,108,170,201,106,32,207,188,223,105,246,161,150,252,125,150,111,70,41,168,156,122,175,89,5,148,97,156,168,150,187,217,162,254,9,162,218,80,225,14,117,81,43,72,49,8,170,37,15,70,177,53,158,237,163,171,202,25,161,91,133,71,217,66,108,2,160,72,145,229,18,65,79,165,236,174,193,102,17,102,40,114,93,94,185,93,155,140,172,175,55,111,201,138,31,128,151,248,174,154,92,55,26,132,44,52,110,134,168,119,199,203,148,53,60,18,173,125,167,206,74,233,168,80,144,28,10,54,114,98,102,60,192,45,182,10,125,231,84,230,120,126,205,226,196,136,64,105,112,200,94,38,128,28,136,242,52,15,171,57,245,35,35,234,77,17,230,228,189,36,102,69,9,121,233,11,239,110,131,182,101,249,97,76,165,54,153,11,216,226,171,220,78,104,35,194,70,240,164,3,34,240,244,197,17,134,114,179,186,205,245,184,185,75,102,67,133,222,67,104,127,131,209,134,253,47,36,175,109,73,131,137,196,124,147,36,12,205,226,198,188,145,107,76,212,49,142,168,96,56,205,222,102,100,224,242,242,187,19,243,205,83,226,89,189,79,65,228,129,33,93,44,255,31,120,254,164,200,84,48,216,240,167,71,197,111,237,132,177,178,115,237,85,124,19,109,126,213,98,169,192,127,250,84,81,231,185,187,245,220,82,166,14,40,166,193,34,181,73,10,4,129,80,54,59,23,216,26,49,179,104,96,245,209,166,155,127,93,251,171,108,142,239,81,107,202,3,60,37,203,199,180,68,214,77,15,157,221,202,241,18,131,227,122,231,84,233,16,200,19,205,57,171,102,109,234,242,169,160,118,116,226,102,210,205,159,123,35,22,21,217,44,109,235,17,171,158,8,78,78,203,12,65,119,143,132,136,9,159,47,185,41,15,209,84,210,32,247,239,185,147,116,20,177,127,88,143,231,0,8,169,33,221,130,45,213,108,110,253,57,66,141,235,60,7,151,83,202,147,67,31,150,83,21,92,89,199,140,124,8,68,220,242,74,17,139,86,245,222,26,122,35,96,231,205,114,77,55,116,75,134,98,184,106,88,113,249,2,232,213,230,192,99,85,254,31,55,9,194,133,196,111,172,141,61,203,252,30,23,73,9,160,248,191,78,65,95,56,74,33,203,156,81,66,161,132,46,2,89,1,192,225,128,54,116,166,14,46,44,101,151,182,31,210,162,186,149,92,105,31,71,61,99,217,140,103,142,245,62,38,80,183,207,134,133,38,48,242,104,59,233,174,61,235,109,131,106,150,168,138,236,52,39,217,240,106,193,130,239,100,181,233,70,34,19,253,105,135,144,71,102,10,123,58,111,71,70,227,191,96,60,174,116,51,74,69,129,39,45,61,194,20,227,121,1,61,126,234,99,61,203,217,24,164,3,187,255,182,3,115,49,1,73,237,146,101,61,94,50,61,181,98,133,150,223,185,172,15,247,177,214,93,8,47,67,18,212,129,218,15,198,38,66,73,159,246,3,1,182,135,7,125,139,130,62,246,43,13,98,82,110,24,227,78,69,135,156,179,82,3,165,39,165,149,55,144,75,192,202,43,45,3,228,186,102,42,240,255,191,50,43,138,83,253,87,190,220,51,163,248,72,142,95,114,246,9,99,2,29,69,79,219,200,120,137,25,216,231,237,100,243,83,213,233,83,8,160,96,242,213,56,246,90,225,234,242,224,6,67,112,158,42,111,246,10,155,132,233,242,173,13,54,167,158,193,234,151,131,154,107,196,83,83,78,75,148,66,18,111,10,140,219,0,63,94,188,11,70,196,253,58,60,22,102,210,101,87,179,14,140,88,65,209,105,45,40,202,253,105,176,209,67,144,190,140,70,56,96,247,210,87,236,222,179,163,62,54,13,8,62,236,176,193,112,52,3,155,3,4,226,249,84,168,227,16,186,193,3,148,54,31,76,229,240,204,226,94,5,252,90,131,49,129,111,147,67,101,11,7,22,126,33,201,54,226,66,113,255,146,10,174,203,169,237,114,2,218,121,50,185,6,70,57,214,235,47,168,42,120,156,228,84,62,131,19,156,65,224,143,50,62,198,39,192,16,204,235,122,246,15,190,107,237,104,46,192,113,86,159,156,90,83,24,50,42,100,87,168,106,101,0,205,249,45,213,88,216,232,101,220,90,160,86,103,63,173,224,132,253,250,24,92,50,195,152,206,135,5,150,189,131,25,17,75,173,114,234,170,203,112,77,45,178,145,231,220,46,32,163,44,51,140,89,12,73,25,55,112,251,219,105,171,28,132,37,43,134,19,237,152,4,52,234,185,201,13,177,209,67,75,252,189,131,248,244,152,111,171,160,163,210,104,197,239,93,11,119,107,58,103,228,53,8,228,49,159,163,55,53,192,175,208,155,244,190,226,14,60,183,213,214,238,90,202,17,89,5,124,122,79,24,130,229,79,80,58,172,168,188,33,68,142,205,197,34,5,237,183,71,213,28,172,116,200,131,19,175,30,244,243,245,57,78,122,166,137,91,193,15,27,251,230,40,84,1,127,189,255,234,118,72,67,193,65,198,148,52,91,198,185,57,174,108,2,48,24,129,72,166,90,141,107,107,152,76,98,173,83,43,249,161,121,251,163,81,209,193,71,39,227,228,232,229,134,175,193,176,70,192,73,76,124,41,67,21,58,218,120,188,197,84,127,178,9,120,74,26,16,193,83,74,119,253,42,93,161,13,106,5,236,166,64,158,209,161,54,155,19,100,167,115,76,2,72,232,118,124,126,244,0,249,52,194,91,119,29,114,39,127,201,4,65,94,162,185,139,120,98,116,100,137,160,34,158,116,202,67,59,238,191,137,178,59,64,3,109,192,88,113,38,110,192,243,225,249,229,153,166,168,201,221,249,73,189,84,139,123,24,128,39,66,246,28,242,251,89,201,163,65,138,92,155,101,216,119,119,84,142,188,255,31,225,132,205,58,186,142,6,237,160,125,32,90,246,71,240,127,90,106,63,51,62,100,111,145,87,14,67,152,86,1,63,144,119,73,12,130,59,59,45,204,88,225,242,166,47,167,66,124,61,237,81,254,215,62,195,152,205,171,127,115,164,255,54,139,19,1,61,37,190,139,103,158,214,209,83,25,124,195,248,28,226,243,137,252,195,37,91,160,207,37,133,58,145,27,96,208,155,155,228,31,236,253,52,19,223,20,178,105,56,139,50,171,107,158,47,15,80,218,119,26,68,99,254,61,213,230,15,127,116,85,81,196,219,4,65,187,130,233,240,90,191,94,27,63,229,188,86,212,32,219,75,74,124,165,171,97,166,36,38,200,166,234,35,191,118,243,13,14,248,72,126,74,210,127,47,46,189,22,4,215,55,162,115,198,169,161,68,128,245,69,85,138,3,116,49,218,25,45,73,20,129,158,43,36,111,88,39,167,161,88,164,200,36,242,182,83,154,200,178,95,132,134,147,81,134,209,209,130,81,37,183,192,255,238,43,111,240,123,6,50,113,31,189,23,208,136,138,236,8,145,241,102,240,173,65,222,5,204,90,41,139,0,39,22,161,79,191,67,126,194,3,91,94,216,253,139,162,124,42,46,11,176,147,241,46,144,193,39,41,125,226,159,20,97,219,157,40,75,43,125,82,200,217,103,69,61,166,136,137,238,74,31,35,47,101,141,118,7,32,233,41,107,21,221,44,44,32,21,83,162,210,233,157,2,69,103,219,135,255,142,57,245,128,121,233,227,6,197,245,44,136,129,13,9,218,187,250,117,230,248,148,199,162,2,102,252,27,230,112,172,47,69,22,121,140,87,242,174,44,114,62,211,222,97,167,233,209,111,64,63,213,53,253,11,40,214,208,157,144,66,80,71,86,229,40,232,199,153,202,162,115,71,171,83,29,82,178,30,207,81,174,101,173,244,42,135,20,123,96,156,19,115,200,137,107,172,26,248,123,235,229,68,255,230,165,98,3,41,91,21,127,104,78,169,210,138,188,6,233,20,132,54,32,31,96,164,0,127,102,71,149,187,108,198,171,216,99,91,3,192,20,44,91,109,160,70,53,95,41,124,51,93,176,133,85,78,137,35,153,208,30,38,145,171,11,132,139,101,104,18,141,208,82,64,244,162,10,165,243,96,7,161,210,3,201,130,177,95,167,38,11,154,70,150,184,120,236,247,101,236,211,251,236,38,242,65,80,119,110,233,93,41,17,222,108,84,143,221,133,156,42,61,156,235,155,135,38,13,72,142,71,61,125,241,252,129,240,213,33,135,178,102,61,206,37,48,81,234,72,57,77,21,42,193,112,95,81,227,128,81,51,204,160,64,96,103,22,167,66,109,149,109,79,239,222,211,73,9,211,235,9,30,218,161,108,75,92,197,61,171,85,194,172,170,206,11,185,117,167,123,155,69,211,108,232,248,232,165,55,12,96,48,235,23,64,132,45,109,190,52,95,42,33,166,121,87,198,173,21,6,237,240,242,104,187,201,174,43,164,16,245,36,75,97,73,85,229,82,163,216,24,39,75,31,44,241,203,66,191,105,102,99,12,234,214,172,239,179,204,239,248,78,123,77,93,126,94,15,181,216,153,86,179,84,228,55,190,149,157,63,37,19,82,160,72,92,255,8,238,231,205,96,249,120,207,8,38,218,157,178,132,37,123,56,202,85,128,59,51,215,113,240,133,102,6,226,238,183,27,62,239,18,137,173,133,112,177,214,26,220,231,128,203,202,56,216,70,73,234,61,140,115,195,63,15,200,112,66,110,9,64,185,22,115,201,128,76,44,180,209,243,165,162,212,229,147,35,34,186,172,139,97,179,71,9,215,61,22,116,96,234,49,77,190,107,76,69,32,103,211,104,210,158,98,8,146,23,87,17,194,163,164,15,56,149,65,216,156,115,22,83,130,238,229,122,221,163,24,16,86,80,163,27,120,160,118,136,140,143,190,103,107,178,77,133,38,135,150,42,84,31,202,162,15,81,94,118,138,72,64,94,13,134,82,19,145,117,3,222,36,153,56,127,155,244,146,120,33,65,243,216,89,37,105,220,33,20,154,75,85,56,73,193,72,17,64,248,88,43,17,3,11,155,208,111,105,224,98,155,210,188,144,114,187,225,172,228,102,211,34,94,245,241,208,220,12,161,67,203,136,34,70,247,163,213,62,161,104,52,18,230,195,224,81,69,61,179,99,244,61,109,223,58,249,217,99,254,152,134,2,209,131,91,144,236,50,62,62,134,226,41,61,209,28,131,167,174,241,67,219,30,122,51,197,8,229,14,156,62,35,126,43,143,93,63,233,36,3,176,17,163,32,29,183,143,140,18,170,227,57,81,61,178,213,137,50,121,94,108,96,126,57,101,206,229,48,3,158,22,80,108,203,91,82,103,136,108,205,147,39,7,240,248,42,55,121,26,191,93,106,116,134,62,138,103,235,111,190,203,31,154,131,140,221,69,246,73,225,44,70,33,105,217,70,63,130,37,49,195,90,43,98,227,243,228,50,242,178,77,85,177,77,226,65,88,68,98,185,204,175,16,62,211,255,23,57,167,38,234,31,234,53,91,170,91,144,41,24,88,38,14,157,204,114,118,96,94,233,30,182,89,34,163,135,2,63,143,98,25,101,241,69,60,3,143,54,128,158,254,69,232,235,12,106,61,190,109,41,15,178,64,31,106,78,3,55,176,34,153,10,58,75,126,218,37,139,32,13,247,198,123,145,224,10,9,81,18,113,36,119,216,61,235,104,10,69,75,15,88,103,120,186,58,17,14,129,20,70,86,25,177,16,220,106,176,73,111,134,209,86,82,151,188,105,227,114,228,110,161,128,220,55,13,31,239,13,180,140,134,246,34,172,84,77,237,241,205,248,62,35,22,246,199,185,189,134,172,140,50,205,122,8,20,3,4,161,6,153,65,125,158,158,126,24,51,156,135,162,6,116,134,84,29,227,102,19,162,222,232,53,167,216,113,0,36,161,137,103,101,223,170,165,203,36,68,1,215,179,236,214,185,233,16,3,137,73,226,41,245,216,14,212,231,92,41,56,228,169,94,22,1,152,180,110,230,243,190,2,243,49,169,141,48,117,12,30,158,139,185,31,217,60,108,113,63,194,251,101,110,35,174,6,98,249,89,26,210,191,130,156,81,81,243,106,58,121,236,73,83,234,234,107,53,40,91,35,164,101,31,109,168,236,108,61,129,67,94,28,185,57,195,198,229,58,41,200,78,0,228,252,143,146,167,120,97,156,16,242,254,202,217,179,239,105,177,98,122,201,81,71,226,155,93,158,216,67,76,60,245,115,200,189,138,142,207,54,136,169,217,12,134,94,222,166,93,94,254,166,177,37,220,79,193,49,198,9,79,104,48,140,4,222,252,72,221,177,234,134,99,11,146,234,126,178,15,6,19,26,76,3,158,239,224,112,77,215,19,166,62,236,45,120,101,163,145,17,200,244,24,138,236,133,221,53,226,22,11,4,27,96,175,254,60,56,9,164,55,27,88,160,239,159,166,146,24,236,105,11,44,206,7,40,75,90,6,213,39,152,105,156,48,184,251,195,25,136,223,51,104,218,254,82,88,223,88,22,225,199,168,87,165,54,58,144,216,235,221,61,115,97,219,22,21,152,28,122,223,219,78,53,114,162,186,129,230,14,104,103,73,157,229,202,9,180,127,62,67,130,186,93,13,152,241,56,133,92,245,47,125,102,111,33,192,95,138,212,64,235,35,58,147,58,43,255,2,227,111,62,255,188,182,138,68,170,120,51,192,186,79,131,24,226,116,0,68,89,47,68,222,198,209,55,22,224,71,241,163,48,47,166,225,231,204,253,112,234,172,120,15,240,22,124,151,227,78,101,100,127,41,123,222,57,81,63,182,222,42,193,37,50,234,15,246,98,88,100,162,99,189,104,229,180,147,137,248,200,211,89,28,232,68,95,64,30,52,201,92,254,40,161,84,252,117,139,65,29,14,218,235,237,28,19,183,243,36,46,9,207,255,60,93,58,122,4,46,54,138,0,139,160,139,181,98,75,34,34,124,182,226,145,152,158,237,249,85,250,161,62,117,162,129,244,170,3,254,252,131,250,221,204,146,11,209,177,203,4,176,66,194,196,175,37,156,94,11,187,189,243,151,107,60,26,246,240,204,83,47,95,65,75,80,159,218,2,230,226,33,115,32,227,160,97,26,66,99,214,205,216,177,222,72,164,154,80,195,69,15,3,190,187,241,71,174,177,254,205,17,80,141,197,29,187,154,45,165,158,231,158,147,246,64,70,181,157,32,15,210,106,191,250,152,79,132,38,146,143,192,136,3,106,93,194,152,8,6,83,43,14,184,232,42,248,227,140,26,209,21,69,11,167,33,70,187,251,219,49,105,48,7,53,114,0,244,239,189,181,111,46,60,84,182,101,154,161,193,102,242,186,206,121,116,192,159,52,249,134,151,134,11,27,224,32,68,40,67,166,204,92,208,124,62,161,204,228,248,237,12,197,244,34,202,233,47,223,163,229,93,41,153,238,123,103,16,240,212,220,186,122,241,46,152,175,249,48,142,121,116,234,246,104,160,189,115,65,235,3,35,54,176,23,133,196,52,63,7,161,26,176,56,76,23,67,73,14,194,76,101,197,24,161,97,197,22,62,239,63,198,148,255,250,104,39,74,95,26,181,67,12,61,44,177,29,81,104,187,6,129,127,110,199,173,138,144,208,113,190,159,236,170,243,29,188,225,234,216,209,229,145,217,155,82,98,22,9,203,14,39,154,136,28,227,164,136,122,223,104,135,188,144,22,99,198,18,18,68,233,24,241,90,71,11,56,184,187,100,27,52,194,117,81,31,243,111,216,214,114,34,14,194,37,76,72,223,202,60,153,163,191,27,202,229,154,39,94,129,56,29,6,41,186,239,191,123,97,21,160,55,69,67,200,221,123,220,229,41,255,176,201,47,124,213,40,14,7,179,176,28,245,72,221,231,177,2,148,146,5,122,217,54,147,141,154,135,63,92,150,246,246,84,179,117,170,74,153,212,134,118,200,210,8,31,62,157,76,51,71,42,131,169,79,249,145,78,147,221,167,121,8,111,198,128,116,114,248,204,248,164,250,138,124,245,187,222,88,219,24,112,229,9,99,17,69,52,229,215,123,60,54,197,86,143,142,59,155,254,155,30,0,51,140,186,72,182,72,31,1,44,101,156,133,170,84,19,80,225,184,14,175,125,206,16,230,33,24,229,46,40,132,111,153,188,136,124,88,18,132,43,129,108,128,159,34,140,180,243,51,248,102,8,135,66,101,105,175,163,163,196,135,240,193,196,231,10,246,137,11,208,106,201,254,243,222,23,153,50,140,178,216,29,214,89,97,168,179,114,70,250,56,201,254,20,2,170,135,188,230,241,148,45,114,60,99,164,77,158,27,95,151,65,84,156,167,14,8,236,187,130,29,41,242,60,212,114,147,85,38,26,99,233,205,229,163,8,198,37,85,246,19,52,48,144,126,87,7,46,150,191,158,126,128,67,69,188,232,161,116,111,149,184,202,166,173,104,51,248,129,65,103,132,161,91,146,129,113,223,207,234,27,240,220,125,133,232,68,199,92,28,51,219,54,252,50,127,5,140,179,197,58,134,23,82,143,70,215,26,170,35,35,186,212,68,199,170,86,166,126,48,1,53,214,166,112,194,248,94,48,37,231,8,47,12,47,54,37,217,54,144,62,244,201,195,130,79,240,65,189,24,249,32,245,246,96,236,17,252,128,253,248,172,179,210,45,86,29,180,76,221,129,91,168,234,98,185,165,221,56,41,2,68,87,112,117,87,20,80,250,95,78,246,252,111,141,10,40,136,199,18,79,34,220,82,7,112,139,41,44,7,89,48,125,69,218,94,75,24,120,75,212,116,47,140,189,55,42,80,76,3,147,134,169,184,195,128,17,146,86,119,111,53,139,167,121,239,84,114,52,30,93,113,222,115,240,231,161,113,229,128,216,80,235,36,53,175,169,152,183,133,11,2,30,224,69,21,192,164,30,219,167,58,111,114,173,30,101,232,120,236,0,207,3,31,246,124,62,49,1,215,184,85,103,11,236,140,188,102,148,241,254,6,13,61,56,112,30,215,253,238,164,63,17,23,199,212,235,95,123,219,92,50,112,44,192,187,243,11,129,190,42,191,235,196,31,241,58,111,35,159,12,51,76,155,241,170,18,213,240,120,193,117,167,255,83,5,234,205,169,113,102,140,116,91,201,159,196,115,169,4,137,35,205,11,4,43,87,81,192,59,229,29,178,226,186,145,19,181,170,235,162,180,169,146,79,134,56,154,138,81,152,237,254,207,117,131,247,226,24,21,46,18,109,52,152,62,132,34,10,66,176,219,117,62,4,150,76,94,112,68,183,133,134,96,241,250,166,155,51,72,68,205,169,20,155,203,247,164,162,185,39,55,251,47,88,255,11,88,31,175,140,173,252,27,231,70,13,57,130,7,183,28,101,110,213,70,18,205,42,63,107,144,201,255,248,132,135,214,67,62,45,205,236,186,4,227,2,119,203,65,10,254,152,82,146,253,42,12,63,152,162,129,248,102,42,66,56,26,211,140,21,119,42,125,230,28,66,129,133,112,251,185,156,213,6,41,234,192,102,120,27,52,141,79,119,254,9,41,213,91,13,47,218,52,169,16,32,208,130,249,111,186,157,128,193,10,111,168,234,254,40,65,233,206,170,231,80,92,79,136,122,77,123,226,246,163,91,87,36,127,146,39,223,42,172,130,79,229,119,34,167,95,116,193,36,10,39,110,189,16,17,3,238,81,50,165,62,240,242,132,191,92,223,173,97,214,1,77,9,23,255,227,52,138,99,114,92,203,32,118,25,214,117,97,4,229,59,56,95,61,134,58,216,226,31,87,222,95,152,189,222,6,117,54,187,11,141,73,139,183,189,236,122,16,8,34,18,240,11,77,160,24,50,52,148,138,100,65,36,45,156,177,139,119,47,144,135,110,244,209,24,93,87,72,231,125,96,180,202,104,62,88,70,187,194,221,172,77,238,43,38,0,202,38,128,76,214,7,87,45,76,94,230,125,23,78,204,173,100,8,250,54,4,109,51,71,165,139,213,55,51,207,137,31,146,112,92,27,143,103,91,244,49,30,66,83,230,204,49,57,115,129,251,236,231,249,121,170,228,220,139,50,30,87,249,48,74,80,248,212,182,78,161,11,136,175,147,189,119,1,139,156,128,193,59,218,22,27,101,24,250,49,45,135,69,18,138,135,165,202,253,64,95,137,186,67,90,147,73,172,12,88,246,219,235,144,57,200,122,95,159,207,239,241,88,166,98,247,24,102,154,106,212,141,233,130,232,123,15,227,98,21,103,183,119,53,49,213,57,129,5,70,166,148,134,65,252,245,210,16,252,218,226,158,174,16,163,148,16,18,53,116,34,88,115,167,16,0,69,20,94,92,8,8,218,169,201,113,131,179,118,222,30,166,87,70,21,114,164,211,125,231,234,149,201,234,136,131,145,104,97,195,212,241,163,24,120,244,23,19,193,195,168,39,11,237,69,144,26,94,40,114,131,211,135,121,13,93,82,77,37,95,150,75,245,118,40,212,121,239,176,34,80,79,216,75,99,82,94,55,102,223,220,144,148,72,190,130,79,128,214,119,37,190,149,231,122,85,232,18,227,69,204,140,106,98,11,16,66,13,204,161,74,192,154,90,189,113,7,106,197,154,205,9,23,72,142,14,81,220,145,200,25,91,145,37,135,249,204,246,110,25,41,156,8,130,118,104,128,195,171,207,239,204,97,12,43,122,178,19,206,140,81,184,26,112,155,123,17,112,145,161,187,159,186,177,25,6,150,132,127,156,106,133,82,166,93,204,90,217,97,144,145,122,28,79,46,47,147,124,48,207,112,129,7,132,63,57,204,221,79,26,233,122,151,70,85,178,17,236,87,140,159,25,8,16,197,190,115,166,224,61,136,145,128,4,94,208,235,34,109,165,203,63,218,157,66,255,162,169,79,78,111,237,179,118,130,41,243,230,214,166,166,157,74,39,145,112,128,212,144,75,189,237,111,121,161,52,147,216,183,89,56,99,104,0,235,112,195,242,143,227,3,180,103,168,106,229,182,30,206,203,158,87,170,207,116,37,235,236,125,62,92,134,219,140,206,105,207,129,243,94,234,70,145,241,238,241,144,209,64,5,82,171,208,63,120,40,82,254,181,239,230,206,72,21,95,118,189,166,11,236,82,115,96,102,184,6,55,223,247,197,62,186,155,199,124,81,25,246,45,147,243,36,107,135,45,124,217,7,138,13,128,92,214,84,52,168,249,65,8,215,159,110,241,32,62,120,242,242,225,110,136,164,199,43,24,179,254,193,33,158,28,131,240,5,240,213,241,104,106,132,186,180,211,198,93,46,150,150,186,83,3,239,126,7,246,81,73,219,188,196,159,47,155,249,84,136,168,67,95,98,83,94,131,178,121,253,202,221,163,29,147,252,151,30,108,96,227,39,57,11,58,239,108,142,30,196,80,241,191,242,125,19,93,227,12,106,171,88,55,208,98,62,41,64,202,96,98,26,183,171,94,247,161,189,250,164,242,96,160,21,140,0,238,203,53,242,172,80,155,27,243,56,117,137,48,116,144,136,209,80,186,221,210,214,152,214,202,228,136,78,85,117,114,98,172,163,151,42,9,174,93,202,114,58,208,217,51,193,88,206,129,218,24,214,163,10,17,122,172,17,125,187,229,227,41,31,203,114,63,79,199,240,13,78,9,175,76,227,59,232,222,167,159,151,86,142,146,211,222,192,81,49,8,114,121,154,24,100,204,172,153,38,35,249,171,110,129,249,202,90,231,213,65,166,2,72,145,3,228,42,217,130,145,97,75,22,80,157,229,81,24,239,65,183,63,217,200,77,206,94,151,11,177,165,187,61,58,205,20,8,206,165,151,105,29,133,128,60,101,160,109,200,130,189,81,230,121,88,250,211,2,2,186,198,200,11,187,122,212,193,194,255,152,126,96,232,161,34,190,86,50,96,56,66,88,181,176,32,109,233,233,157,112,189,49,199,132,132,3,177,58,216,96,140,227,52,128,17,3,26,190,31,82,169,117,138,151,155,33,56,53,0,246,64,153,114,117,122,164,233,88,28,172,181,86,224,37,9,140,133,130,211,203,55,230,126,237,63,100,43,98,207,193,51,195,235,44,9,217,124,239,233,131,233,230,42,55,220,190,42,109,149,241,29,10,153,196,46,60,226,195,90,7,115,222,77,140,31,155,222,226,22,199,234,128,111,22,43,159,67,40,10,13,194,142,149,2,237,223,68,33,68,56,239,36,240,133,27,17,142,120,161,63,49,218,134,146,240,65,135,59,10,242,180,139,196,77,49,7,97,3,73,224,62,138,144,214,158,122,32,154,12,88,231,212,125,47,64,30,178,49,11,173,157,76,139,158,84,197,45,98,230,191,81,236,192,241,27,10,26,232,118,158,239,40,163,50,8,223,111,182,114,148,95,132,22,49,4,128,106,242,14,137,115,218,213,232,162,101,213,76,254,13,55,56,212,212,166,86,154,81,204,157,180,76,199,229,162,191,176,170,179,56,192,102,50,88,158,58,250,241,132,42,150,189,175,139,248,21,208,9,56,169,243,24,166,204,146,27,15,248,88,80,26,99,32,20,117,114,150,111,103,87,99,36,1,209,151,119,154,245,81,102,150,78,107,4,149,90,241,109,50,50,17,80,52,205,175,60,134,253,24,118,48,250,32,151,168,158,117,141,60,46,116,196,254,193,14,246,197,165,244,117,116,62,20,255,84,218,70,162,36,175,209,191,55,75,5,127,242,194,194,112,38,209,35,224,135,69,94,47,186,160,124,205,104,36,247,173,209,138,67,170,201,185,122,47,156,194,126,187,187,180,18,183,22,238,161,230,29,29,170,103,38,23,203,39,77,136,97,71,237,147,57,0,57,0,61,161,198,216,248,87,84,193,80,42,149,235,26,152,58,181,154,150,86,231,79,41,22,200,228,43,30,52,114,95,204,30,115,63,112,115,0,122,140,107,153,33,229,206,83,218,157,225,120,32,219,151,166,109,76,100,200,242,108,106,166,243,238,172,243,155,137,231,12,116,183,114,131,45,104,254,180,114,109,124,31,244,12,71,47,59,187,93,138,152,204,183,10,190,114,208,39,252,82,85,96,146,132,17,158,142,33,56,116,57,208,237,221,175,9,5,171,99,250,187,203,69,137,105,146,176,105,19,254,216,109,227,131,76,211,125,73,23,202,120,19,32,166,133,127,84,253,123,72,247,157,205,17,41,196,112,75,139,132,99,52,147,96,94,11,140,108,220,126,57,112,198,246,156,180,18,19,92,6,50,171,154,0,228,153,80,204,118,37,118,109,50,154,7,68,192,128,241,216,235,74,98,56,172,186,120,64,8,145,86,79,129,219,119,232,96,253,152,41,8,239,188,70,135,32,251,131,1,244,123,185,193,91,69,239,138,23,54,141,155,170,114,154,90,50,67,123,211,92,59,154,181,40,153,140,31,61,65,159,157,14,169,47,20,7,91,219,226,185,230,232,81,187,92,98,234,171,20,160,56,62,40,172,254,2,119,119,73,26,186,164,222,26,252,218,19,33,87,221,238,207,214,62,34,114,158,78,72,231,231,3,141,141,128,166,128,241,247,59,54,22,207,32,38,167,198,48,239,199,90,206,166,162,129,229,141,174,205,60,122,241,106,145,7,242,71,5,229,134,241,150,33,8,222,34,103,116,127,18,15,113,26,52,152,185,171,22,43,110,31,186,3,121,25,139,79,20,1,139,111,198,81,115,165,1,251,239,167,243,134,172,160,190,144,206,111,94,143,137,94,139,41,121,90,192,161,62,37,39,157,27,221,115,116,78,162,16,198,108,237,100,139,181,5,24,81,185,162,12,165,135,24,216,4,52,1,215,81,19,255,1,47,64,175,184,102,70,107,105,92,77,234,215,116,221,103,1,101,191,7,204,46,75,10,140,241,16,109,31,130,225,102,96,222,11,243,181,94,76,155,30,152,78,198,54,228,164,0,171,197,87,251,108,189,113,206,46,125,86,177,151,111,30,232,120,7,233,134,241,121,5,47,109,229,29,54,238,37,196,15,238,102,32,183,146,67,211,244,43,116,244,235,249,187,232,207,36,47,89,133,108,131,16,240,235,76,238,154,82,141,13,205,8,232,49,182,30,138,174,35,178,6,118,174,126,148,20,219,109,37,7,42,205,30,116,233,210,198,203,27,198,201,68,62,152,208,105,20,247,129,21,61,4,136,135,131,250,178,242,46,202,238,55,112,214,61,54,70,163,77,55,180,106,153,205,127,135,79,39,211,215,19,13,103,15,108,33,154,110,144,106,141,98,252,120,135,196,245,10,206,176,245,228,182,96,36,51,144,163,203,81,250,132,225,34,115,232,105,43,196,230,77,204,5,48,236,149,185,58,222,34,217,158,220,174,223,24,63,242,142,129,88,19,2,159,174,227,25,208,251,107,137,68,192,146,166,137,143,214,79,232,242,159,60,185,133,42,191,161,146,77,73,202,83,35,105,62,200,227,19,229,194,143,117,118,102,12,61,188,205,188,123,0,77,37,114,65,100,183,154,97,206,111,64,155,133,13,214,3,131,57,207,123,192,166,187,39,216,78,251,223,188,45,18,205,96,79,3,36,225,112,252,33,247,198,85,47,158,166,232,97,68,64,231,177,9,188,241,217,187,29,114,147,167,153,200,33,45,88,158,148,10,61,206,97,110,60,137,121,53,170,104,115,131,108,16,42,158,206,34,240,122,172,127,241,170,187,102,166,15,149,49,62,133,195,90,198,38,252,120,124,123,69,136,106,151,211,40,122,196,167,248,209,114,19,50,14,227,248,77,221,8,67,173,197,139,34,121,197,247,248,34,235,61,195,55,157,221,166,131,165,206,146,166,21,82,183,224,163,186,219,14,151,157,76,141,165,249,229,23,85,95,129,85,181,128,243,18,108,154,110,64,48,88,108,143,226,57,122,144,117,121,15,69,239,121,174,67,84,55,129,114,3,106,232,222,139,74,72,64,110,99,202,223,110,78,248,174,219,236,199,171,213,235,39,6,52,254,177,33,123,158,85,216,46,122,45,140,251,62,171,159,109,24,90,121,236,71,163,65,169,45,93,72,109,249,14,57,213,237,145,104,108,107,77,219,99,31,166,123,69,239,142,132,15,56,70,71,23,179,203,59,195,222,210,187,70,228,93,41,189,159,1,199,170,33,185,184,43,187,255,1,247,107,180,139,41,184,60,15,29,115,188,130,96,254,223,11,8,123,34,210,6,73,243,200,168,223,236,121,228,114,130,243,186,153,62,186,58,164,77,243,194,18,8,202,46,206,28,151,10,171,111,98,153,19,1,79,164,110,234,90,134,119,121,85,40,87,89,32,228,206,20,225,245,48,139,92,46,56,246,195,23,93,162,53,42,172,8,92,191,229,5,21,43,162,212,59,190,63,69,161,75,231,249,129,154,249,139,168,163,74,255,109,248,213,14,199,54,188,245,241,224,56,41,11,133,92,40,161,74,127,250,104,174,11,112,71,76,206,225,35,162,124,48,133,7,78,74,71,22,242,129,100,13,38,154,123,87,158,86,162,148,218,89,30,14,233,253,117,45,106,221,213,58,89,64,104,110,199,236,220,173,50,91,223,8,158,228,233,122,128,243,223,18,237,171,67,216,232,30,82,173,156,15,69,104,40,194,123,193,147,14,4,208,85,242,239,61,251,251,53,92,162,63,207,24,37,208,38,17,196,195,104,7,170,33,123,183,102,25,173,227,182,149,20,134,154,62,209,64,9,165,161,150,34,227,62,117,64,83,42,142,195,232,131,66,239,223,90,52,151,116,173,53,159,189,59,126,238,238,78,234,117,127,125,152,115,65,109,85,12,105,3,159,61,216,129,168,221,95,97,207,72,186,168,113,26,169,235,242,242,148,108,202,17,228,125,92,105,131,151,116,231,242,248,82,1,105,0,119,168,173,124,193,29,42,117,40,165,61,54,114,121,130,145,120,25,120,242,7,210,183,149,231,56,7,10,185,141,171,154,169,184,213,183,38,23,11,232,87,198,11,15,79,104,52,251,73,211,29,219,95,134,85,127,133,175,175,29,255,201,82,234,12,240,4,141,166,172,252,231,121,116,69,152,194,231,125,164,133,6,220,87,40,172,241,15,87,178,109,100,125,108,142,223,35,144,105,39,132,106,235,237,16,158,226,57,190,247,70,96,140,118,125,44,161,243,226,238,238,118,151,136,92,190,232,245,108,130,99,76,163,29,60,243,67,166,7,183,48,7,120,168,163,27,82,36,85,237,92,115,54,114,161,12,177,86,22,27,196,29,150,68,142,12,102,169,222,86,224,36,61,122,237,75,212,221,121,111,241,165,17,73,58,245,104,41,2,222,59,76,186,5,212,203,19,194,74,39,7,2,84,42,175,177,27,222,7,149,196,195,171,125,117,90,86,57,226,137,109,121,152,192,115,64,22,231,111,17,164,44,14,194,132,114,178,49,242,7,136,188,103,163,220,204,118,154,219,241,206,145,250,44,224,1,74,117,65,134,43,130,126,73,200,205,73,18,9,85,40,16,219,11,156,27,30,68,215,212,192,8,54,101,116,41,205,54,58,113,23,252,85,113,72,218,165,100,102,152,124,18,238,244,221,155,229,244,17,209,36,148,232,80,16,121,71,168,242,245,0,140,146,246,124,31,75,169,205,193,199,129,51,195,239,61,107,215,102,196,101,5,27,191,213,21,150,137,237,6,130,147,237,95,117,196,198,119,223,144,25,48,244,114,195,48,201,71,206,166,229,197,188,71,44,194,32,22,109,106,244,218,211,251,91,90,57,199,170,231,92,136,39,99,253,255,214,200,71,24,192,167,183,43,75,74,40,59,55,72,124,207,102,39,74,24,50,103,102,93,215,194,24,44,209,91,249,149,181,14,160,138,202,123,47,136,81,113,199,106,145,181,179,250,138,242,179,37,175,71,228,31,255,25,246,42,247,53,34,123,64,214,149,179,226,162,173,133,255,108,151,94,70,47,70,106,81,90,126,225,130,80,187,160,215,121,177,37,142,52,205,45,146,202,237,43,219,84,85,54,222,10,252,137,20,66,152,181,241,222,100,193,112,234,184,224,174,127,34,0,4,135,46,150,150,120,119,243,254,100,145,8,189,173,226,222,217,6,73,21,134,187,139,71,123,226,38,37,193,199,140,70,135,217,127,72,23,193,158,59,46,80,74,77,17,56,218,10,84,48,196,236,12,219,182,150,48,135,172,8,181,241,150,237,17,140,236,124,40,200,111,176,199,43,122,31,70,132,174,191,147,43,223,216,164,150,159,239,138,120,40,76,168,161,85,236,78,33,138,96,7,189,178,117,31,129,143,87,17,97,234,203,92,189,40,206,115,5,175,62,120,149,183,7,198,168,245,217,98,253,124,68,126,188,117,10,138,252,143,30,219,212,150,237,206,207,211,6,234,215,197,103,117,62,170,177,80,174,172,107,114,18,171,121,116,155,4,105,217,223,72,146,119,126,190,46,71,178,103,207,162,73,243,191,206,112,206,115,97,208,106,186,156,248,20,225,216,169,158,232,255,51,28,175,6,40,59,146,248,162,85,219,139,206,177,240,24,139,77,70,19,201,33,11,238,181,140,62,10,179,24,158,149,133,138,9,199,138,175,110,192,146,6,136,142,73,255,122,70,12,165,18,86,237,127,118,18,210,141,66,86,218,197,58,4,206,99,67,167,214,204,62,31,69,63,114,108,209,154,144,107,79,122,20,150,231,107,84,102,64,88,135,9,63,58,112,134,20,223,191,234,189,93,143,114,53,132,3,51,53,69,55,69,189,53,22,133,38,42,118,246,47,58,107,245,73,11,131,233,24,207,206,114,175,31,202,183,127,227,125,238,151,227,10,243,100,113,101,92,206,53,38,14,235,235,21,135,65,89,119,209,201,103,75,246,81,56,24,22,118,138,168,18,179,98,25,62,24,201,157,3,70,143,59,10,224,139,89,185,162,146,148,50,10,102,101,107,30,101,153,151,183,140,179,192,169,211,181,237,101,190,144,14,76,40,196,196,169,177,185,226,116,245,156,5,194,214,167,2,6,81,120,85,233,63,206,37,75,153,53,2,215,88,99,61,5,167,20,214,190,90,62,115,138,231,4,213,193,35,96,166,194,108,72,95,21,65,94,233,195,40,11,213,130,128,107,123,2,104,82,135,57,69,89,100,30,46,29,116,14,170,93,72,4,254,7,211,77,160,60,94,233,230,36,194,71,207,119,255,221,99,239,5,66,242,7,156,92,14,181,211,57,59,14,146,146,119,125,60,55,131,143,122,106,248,53,51,33,74,172,15,195,221,29,25,113,7,59,112,139,26,51,123,81,72,48,102,196,33,29,130,91,244,98,109,64,123,27,192,186,104,200,134,107,142,192,231,13,71,29,70,78,74,215,157,159,130,161,212,61,205,206,47,94,236,21,242,134,229,197,30,162,252,204,193,245,43,4,95,213,121,3,206,29,118,250,223,113,147,205,204,25,247,186,135,252,165,28,134,179,213,197,49,115,215,37,63,134,247,183,150,231,10,12,53,185,73,110,237,49,207,57,8,156,82,196,179,194,178,186,255,44,68,146,3,113,209,149,82,43,66,223,123,93,168,133,188,238,153,186,90,218,22,109,146,128,55,10,188,72,237,181,49,152,143,252,22,83,233,75,235,42,122,100,130,170,90,114,217,7,222,185,145,4,147,29,67,20,99,224,254,82,150,17,49,45,8,149,61,244,37,29,46,240,98,75,53,29,36,72,39,94,72,92,164,186,200,210,53,184,243,136,74,155,27,74,11,123,212,77,137,38,45,212,250,251,20,22,14,58,65,183,133,0,146,92,186,194,6,167,5,13,119,119,93,131,156,26,19,0,105,34,214,21,109,80,147,170,119,8,45,246,133,48,58,141,145,33,115,75,30,52,201,181,164,192,150,41,213,125,36,234,123,235,184,58,20,228,104,186,88,115,120,174,159,34,226,83,41,133,224,158,114,229,106,59,163,215,160,145,228,12,60,135,18,5,251,170,41,180,200,236,113,89,182,244,179,250,31,220,148,148,252,168,21,255,127,4,194,147,184,130,222,101,82,197,10,110,120,186,96,107,166,86,237,207,232,111,129,100,26,113,90,16,50,132,19,146,48,160,162,107,55,214,142,206,164,209,227,132,113,87,202,187,252,176,226,97,109,62,82,7,50,171,245,80,72,49,138,104,154,226,33,126,4,38,30,155,152,146,160,39,215,83,17,4,245,171,148,74,187,136,139,197,111,64,193,190,19,242,237,72,134,166,116,46,53,42,225,100,50,87,143,219,165,108,242,151,129,21,188,90,32,172,241,17,139,126,172,229,226,130,187,233,143,160,43,0,218,15,216,138,8,95,209,202,226,22,92,8,213,109,38,74,159,27,189,59,200,135,19,6,120,252,87,245,171,37,76,51,119,242,102,94,151,237,133,144,6,132,117,109,207,78,241,226,23,10,249,242,42,211,182,3,123,212,133,72,238,182,120,21,9,247,66,97,60,69,186,161,119,34,187,89,27,74,47,180,212,127,163,125,24,24,41,14,92,234,9,161,226,237,20,17,58,155,0,238,192,1,138,163,229,253,22,172,61,21,6,246,174,8,153,207,44,140,126,150,87,234,230,19,77,205,50,106,10,193,111,246,179,145,205,204,166,238,250,74,11,54,211,174,165,205,147,37,197,65,18,56,206,69,161,98,248,93,157,89,84,150,88,205,75,126,98,103,152,139,65,169,199,162,112,90,40,161,76,53,6,24,42,190,41,219,54,24,37,108,65,244,57,55,80,37,44,196,184,77,195,132,106,218,87,174,1,226,188,149,182,69,228,250,143,80,68,24,91,43,113,136,1,233,37,196,5,39,136,35,174,33,227,63,253,127,205,225,186,130,188,93,248,23,204,166,62,24,14,5,192,120,26,11,55,98,86,40,72,99,186,88,66,158,40,119,207,152,134,133,201,156,200,150,42,139,142,102,64,50,125,208,144,191,106,25,220,182,253,161,248,98,223,19,9,63,238,48,63,79,13,96,1,61,210,30,53,222,238,169,200,86,187,222,133,205,212,159,167,61,91,242,79,165,44,175,244,248,61,34,73,106,155,218,208,78,26,193,133,250,129,153,105,192,125,31,145,222,108,56,207,254,116,162,108,74,179,222,173,133,14,105,54,51,248,255,33,228,22,80,164,26,26,44,153,63,157,8,51,38,16,63,3,222,178,197,231,45,197,66,51,193,63,148,253,236,17,106,86,233,241,107,3,241,202,188,222,43,29,49,244,66,46,82,70,154,15,85,27,48,198,85,62,160,83,229,140,71,230,18,140,178,100,175,123,188,241,196,3,14,108,192,250,199,107,97,131,37,249,71,170,41,182,196,175,72,24,77,167,216,108,255,17,125,38,51,54,248,182,33,142,251,27,71,231,133,141,168,143,113,104,17,73,10,253,29,95,0,21,228,178,83,249,133,44,232,114,205,15,73,243,212,86,251,253,69,17,35,38,18,30,81,52,207,211,153,157,84,6,85,63,199,151,4,24,158,212,139,178,31,47,10,229,136,250,201,71,70,94,245,6,36,3,42,211,77,123,69,34,243,115,2,159,104,126,218,186,173,35,30,170,12,218,13,41,131,71,196,175,214,62,113,211,250,32,123,199,220,236,35,70,137,26,162,39,121,117,208,156,220,37,241,245,162,136,218,253,111,170,142,117,245,148,49,181,171,10,150,184,234,167,133,99,215,62,89,173,42,84,139,36,62,84,86,93,178,119,126,127,146,102,237,227,120,94,155,253,45,159,234,253,150,8,24,100,29,249,161,36,60,155,91,222,172,114,107,239,85,73,45,2,91,17,72,1,85,168,240,169,177,7,82,127,71,124,67,167,194,143,244,181,215,14,1,10,110,230,242,48,134,52,86,85,247,21,129,162,194,31,35,96,25,216,102,133,18,46,83,169,205,77,109,211,111,232,68,118,25,202,47,219,41,219,237,59,249,134,62,62,134,12,104,138,4,91,86,19,250,70,163,230,84,71,203,172,0,109,161,129,119,142,175,226,233,163,250,49,65,44,35,249,251,4,143,98,124,51,136,6,109,47,98,60,118,181,77,4,157,23,183,104,65,102,58,181,31,3,213,57,112,195,228,10,167,64,11,82,38,222,19,16,173,44,217,135,195,212,133,242,116,67,211,79,242,59,215,188,20,78,220,147,255,116,133,255,20,95,45,29,13,101,158,57,226,45,197,141,138,220,229,222,188,136,111,223,186,171,119,165,8,215,84,40,150,115,47,169,61,197,91,27,217,212,157,84,68,16,236,93,120,42,166,1,166,46,145,68,165,100,27,174,90,242,134,162,99,168,201,114,194,95,59,50,15,165,209,230,212,161,1,131,104,206,17,247,159,13,115,40,166,89,110,228,139,76,217,65,200,17,205,157,185,87,208,135,58,149,11,68,7,132,131,194,229,99,235,129,184,39,51,8,150,87,197,32,44,214,246,178,60,86,57,234,207,90,212,170,93,76,252,16,252,255,188,83,146,206,139,18,161,255,57,173,3,79,143,96,8,98,195,211,66,205,179,76,35,137,16,71,154,39,228,114,147,4,150,64,63,89,75,85,173,108,203,22,252,249,223,38,250,135,241,167,49,209,203,164,212,123,111,243,111,230,200,225,82,96,109,124,74,116,162,244,122,68,102,22,98,222,209,115,123,213,4,110,88,100,198,48,133,148,11,229,54,242,88,146,72,94,163,153,85,242,18,35,9,194,131,116,98,170,197,55,70,201,8,209,8,222,111,118,182,30,120,171,218,164,144,163,128,248,227,7,205,167,114,80,196,166,38,73,77,10,197,54,166,131,24,226,111,53,54,235,130,130,25,74,163,93,221,52,62,48,66,160,178,238,175,241,183,25,1,68,187,254,67,227,173,248,119,127,48,18,226,206,3,27,130,229,196,84,211,255,133,214,29,4,56,10,241,33,63,237,200,254,216,108,129,216,124,157,135,140,93,93,76,206,82,206,180,240,107,18,212,243,176,102,240,229,89,182,2,83,77,94,238,51,35,171,33,8,245,200,117,224,235,140,27,225,57,142,213,83,94,63,151,160,19,77,176,212,162,158,129,167,64,134,187,44,247,31,210,210,184,141,2,204,136,175,136,194,168,210,26,15,174,159,120,107,44,183,98,181,131,211,103,106,51,38,204,136,173,148,195,205,128,49,175,81,148,253,119,157,7,168,101,131,89,187,93,106,139,96,168,246,242,196,149,122,199,102,76,99,214,216,33,13,111,227,58,95,156,87,244,80,251,101,186,142,157,33,113,219,122,15,103,143,206,226,121,77,225,85,88,227,111,145,42,132,234,214,165,138,60,151,130,16,41,33,45,180,241,213,182,182,169,48,197,117,163,19,66,4,35,139,186,174,52,219,43,132,100,151,243,50,40,102,130,139,6,153,76,238,59,145,201,252,89,3,94,249,98,162,121,211,211,176,87,0,242,177,151,61,53,84,76,89,101,251,135,226,20,129,33,178,62,202,106,140,54,148,135,221,213,165,199,128,159,155,188,85,194,218,243,186,252,160,139,37,156,141,1,41,163,124,186,203,118,206,33,133,133,235,247,233,213,74,74,209,62,130,63,142,136,195,46,217,250,64,171,67,171,114,77,111,220,245,167,91,67,93,232,164,71,163,141,152,55,232,239,154,205,216,174,61,102,121,134,151,21,54,235,189,173,75,45,196,24,68,109,211,146,104,231,174,174,121,104,254,22,139,23,41,181,104,20,210,250,255,83,100,69,66,151,52,18,178,87,214,163,63,34,34,200,213,6,171,74,68,133,220,97,125,7,214,211,204,86,174,205,21,117,129,33,95,234,132,45,111,143,9,7,204,141,52,13,48,178,183,18,0,8,29,23,135,69,40,186,204,17,158,228,151,43,156,28,164,223,140,100,10,209,8,129,144,34,150,158,82,163,227,249,219,27,232,72,122,239,225,46,95,127,142,203,248,210,149,8,4,13,77,140,132,100,94,54,30,8,229,21,50,72,123,116,217,250,242,1,43,195,119,199,160,81,20,95,220,3,255,250,167,254,250,209,76,185,204,254,175,102,151,117,242,231,6,114,126,232,225,71,200,242,124,163,41,197,210,181,243,54,65,141,157,189,52,116,222,141,207,80,24,225,23,143,78,160,112,154,22,114,132,96,188,124,75,85,93,27,28,15,190,185,210,157,232,41,66,81,197,249,212,48,111,127,190,243,91,27,111,195,44,208,43,24,121,123,208,39,255,197,3,123,235,62,83,100,45,156,248,123,128,238,18,175,255,195,197,164,130,114,188,39,83,87,69,151,245,160,23,229,8,33,31,75,172,56,64,81,125,215,11,129,213,199,198,185,197,121,35,216,34,188,161,213,189,143,170,215,119,139,187,235,50,248,29,229,248,90,164,48,51,66,91,117,155,177,18,219,2,133,140,110,208,191,13,182,180,61,95,176,40,14,139,105,69,41,162,119,41,187,246,63,242,159,237,130,228,215,60,42,199,76,242,110,78,55,210,180,235,177,110,245,116,186,30,50,7,229,188,47,186,219,244,199,139,233,110,162,162,178,86,160,38,105,217,118,18,245,210,196,69,211,112,239,68,222,44,147,18,108,198,223,183,145,200,175,10,249,213,39,60,211,35,107,86,41,220,232,171,97,127,81,77,96,30,130,147,101,7,185,159,21,215,227,102,108,94,64,11,88,143,118,51,116,53,33,253,171,239,93,132,172,105,58,99,114,211,26,251,197,70,93,132,214,1,125,221,172,154,226,120,6,5,176,118,115,37,251,92,146,44,187,129,69,245,216,199,126,24,167,15,210,108,171,48,16,235,157,163,234,229,162,172,4,203,10,171,207,236,72,147,206,244,225,165,222,95,13,239,73,178,42,37,190,58,234,240,30,226,240,251,32,69,161,59,239,152,142,13,94,106,35,112,13,99,107,42,3,58,253,1,67,161,68,149,145,150,31,19,219,66,134,97,232,72,2,7,45,66,89,253,21,78,22,151,89,28,231,168,234,102,137,43,78,111,53,193,78,132,52,137,125,156,147,62,36,73,212,90,226,222,128,150,238,103,74,121,167,176,194,144,110,13,249,127,92,34,5,54,51,12,253,237,44,19,150,73,118,227,10,194,155,97,159,23,253,221,94,38,16,138,131,224,116,74,143,9,197,148,106,37,170,174,12,47,42,227,231,129,103,18,80,128,140,67,177,131,75,114,235,193,73,207,118,15,11,216,74,129,193,40,212,76,220,97,23,196,184,95,194,23,21,57,147,225,49,30,84,166,147,74,16,88,211,49,88,155,72,129,231,201,53,190,110,20,224,174,246,172,70,251,150,183,3,253,142,112,155,223,251,51,177,53,242,231,164,34,137,58,225,45,126,18,252,64,237,44,71,208,33,242,186,6,43,172,254,61,90,18,209,125,176,238,244,54,75,3,237,45,141,240,42,73,226,234,211,145,154,18,104,230,17,89,73,169,221,24,241,18,238,91,192,177,17,168,88,119,74,161,39,156,197,35,171,83,221,2,100,60,236,73,160,119,209,70,132,248,88,177,138,81,151,189,72,145,158,176,77,240,192,20,193,99,152,228,100,11,61,215,84,144,222,249,219,241,16,230,163,127,191,83,119,245,239,225,141,144,148,70,0,27,160,71,3,220,15,173,242,150,218,36,212,151,38,154,44,6,175,76,203,211,218,244,102,133,82,226,254,24,168,30,44,102,132,47,172,196,96,70,78,62,139,42,8,94,200,97,122,186,66,187,128,251,135,238,170,11,127,197,240,123,79,93,81,107,119,6,246,196,45,213,37,143,15,134,17,114,164,7,37,121,217,203,41,3,195,8,68,78,33,16,91,174,159,134,230,43,91,135,231,121,163,156,207,83,19,241,240,106,140,170,181,228,50,108,31,72,144,26,93,224,174,195,35,215,151,15,153,251,6,8,81,110,162,3,39,120,118,204,229,71,98,210,228,154,238,186,128,237,99,91,23,120,210,94,225,146,83,139,119,117,196,49,242,9,77,159,90,15,114,171,91,12,81,254,10,188,74,174,25,235,243,6,36,168,249,252,201,63,206,173,104,104,53,80,246,24,95,75,33,51,164,98,64,9,254,34,220,87,178,243,14,129,181,210,194,249,48,234,154,144,116,212,120,29,168,56,117,184,33,143,254,229,123,229,241,217,14,147,193,1,126,173,98,214,92,45,194,213,239,143,4,243,127,1,136,248,208,165,202,143,11,33,141,178,179,93,179,252,175,77,10,200,54,225,155,186,148,34,90,208,152,34,254,203,204,210,93,60,165,243,17,205,82,206,107,11,167,79,248,191,114,146,190,60,213,86,36,67,57,144,184,29,32,54,89,29,197,220,101,150,238,85,234,5,62,244,119,214,98,14,54,59,106,88,164,125,147,76,108,182,164,195,28,237,137,57,92,117,89,0,89,20,217,234,217,54,232,112,183,218,10,244,201,62,35,72,24,30,149,147,122,25,191,28,179,178,13,124,37,221,51,149,197,187,34,2,200,69,136,34,189,208,212,1,114,149,181,99,254,208,109,50,188,90,70,132,160,17,244,59,152,181,35,26,132,207,118,143,160,203,174,78,178,15,15,97,225,202,219,164,77,194,188,169,48,242,107,169,231,109,82,148,50,84,191,163,226,146,232,111,197,213,189,0,21,214,180,20,74,232,161,75,153,189,145,220,175,181,253,183,33,28,246,161,230,32,107,251,192,228,52,143,58,33,192,140,200,182,44,36,247,220,166,35,145,125,196,36,224,144,255,51,41,115,51,194,204,186,85,21,254,237,210,255,213,101,206,26,92,93,20,252,213,20,192,127,107,142,206,180,160,127,170,207,104,172,188,248,37,240,33,217,109,253,44,24,188,206,245,149,216,75,228,119,14,187,190,34,187,220,182,155,148,46,120,64,184,125,161,86,57,227,36,131,168,122,80,35,203,56,94,177,133,57,5,175,204,30,181,195,254,8,168,26,92,53,194,53,41,13,174,123,121,215,126,135,243,216,46,144,38,128,64,105,93,70,177,162,99,179,132,103,123,152,64,207,98,69,134,105,172,250,210,90,26,159,200,21,137,116,190,13,200,207,232,191,108,224,117,171,56,17,179,24,156,52,234,21,25,137,143,59,75,15,58,228,90,41,189,171,58,222,60,235,90,200,123,63,50,254,113,54,176,188,28,200,130,237,158,177,186,219,220,149,43,196,47,145,61,234,66,101,166,49,59,77,114,130,31,49,132,152,147,130,16,50,20,78,159,215,101,104,187,57,9,219,98,235,144,162,59,2,78,197,44,129,68,101,48,20,9,215,8,79,19,114,127,20,44,215,253,112,81,106,109,62,207,97,49,20,244,112,199,217,234,134,224,87,141,93,35,174,236,45,134,54,204,74,91,246,247,165,44,171,18,222,188,44,186,164,100,170,186,192,94,54,166,182,69,141,53,13,235,15,236,243,103,244,208,144,60,64,80,10,144,12,79,4,106,244,178,223,222,211,215,194,117,90,217,213,181,168,244,8,47,4,231,84,83,160,120,211,253,240,162,56,74,106,120,8,147,135,138,185,254,186,183,131,82,50,56,145,220,115,179,227,91,143,253,153,73,5,188,123,159,160,241,32,243,226,155,199,94,212,92,56,121,183,88,207,93,73,199,50,145,247,114,146,183,138,95,44,238,68,1,194,122,39,105,245,82,157,252,20,2,105,125,68,155,184,212,47,34,134,163,26,123,100,161,29,26,138,225,247,157,116,45,248,255,61,19,57,96,38,218,192,158,250,208,56,65,167,74,153,147,143,187,236,255,24,252,14,147,148,68,168,225,20,29,2,191,209,129,183,93,6,143,177,65,61,39,26,243,16,220,76,80,217,89,120,194,128,166,244,170,119,137,146,74,77,174,55,254,164,27,42,137,69,103,121,84,70,133,150,24,178,231,56,179,147,132,169,143,240,68,143,198,212,59,225,243,129,127,8,1,214,189,50,60,71,1,136,105,13,119,78,63,106,166,218,190,141,178,201,22,15,235,191,51,187,32,247,223,37,129,9,224,239,5,36,19,207,128,177,8,18,203,214,134,14,19,80,232,62,163,60,10,223,152,136,121,81,30,84,22,244,195,235,217,204,110,190,188,71,111,53,149,20,147,251,148,196,138,93,111,141,161,25,192,49,20,163,222,6,241,149,108,155,65,91,88,255,203,2,218,113,178,172,118,250,195,43,3,147,86,253,7,126,19,169,226,128,2,201,247,136,131,29,20,25,149,86,167,235,163,221,110,86,239,84,216,182,73,139,168,5,63,86,167,184,102,229,49,174,175,182,60,209,102,146,16,22,85,129,238,171,254,183,186,194,3,168,89,100,108,40,249,239,232,62,142,93,78,213,136,185,74,247,20,218,156,90,49,215,124,80,180,30,7,1,245,181,162,84,24,42,33,112,236,121,48,83,41,77,220,253,108,218,114,147,92,144,142,148,30,27,112,237,20,149,57,185,15,236,249,85,240,113,31,0,121,116,240,55,72,31,246,47,201,133,204,237,45,68,85,70,246,21,44,91,165,197,110,191,200,92,32,177,144,49,200,177,227,91,55,146,170,8,23,126,156,243,98,6,54,62,179,35,27,115,6,221,54,229,22,211,15,171,59,71,137,160,117,200,80,38,119,37,31,121,2,59,225,133,237,1,191,222,216,20,34,8,166,89,126,27,79,253,118,177,130,229,124,3,48,3,11,133,146,45,76,13,175,138,167,144,103,177,63,43,222,43,30,191,123,168,191,33,97,209,133,210,115,100,238,71,56,19,253,118,20,51,238,47,95,247,159,7,69,112,92,100,148,198,14,208,49,107,150,38,189,48,17,156,85,81,235,92,233,129,162,211,20,247,147,28,85,90,72,228,255,85,225,167,78,156,133,194,41,65,155,238,124,6,214,152,76,115,242,86,107,2,73,8,91,192,78,8,189,31,103,75,224,198,226,190,82,212,80,67,32,10,165,189,151,160,147,92,41,250,67,188,226,79,37,57,125,116,255,169,109,224,218,165,123,195,225,200,45,248,11,44,72,20,73,251,12,35,52,193,59,152,64,151,137,98,67,83,70,224,89,248,185,153,5,229,99,238,3,243,181,33,87,27,191,17,12,187,46,243,165,115,68,223,231,44,212,80,157,151,151,146,89,68,164,148,2,1,227,193,84,50,176,144,229,164,88,31,11,163,169,71,9,231,95,108,14,159,147,210,79,117,50,86,48,56,183,114,99,7,233,27,38,104,87,204,200,207,56,147,112,4,93,106,175,55,134,32,176,48,41,187,7,237,179,247,159,112,207,129,6,89,244,236,9,188,40,2,166,134,4,70,217,217,148,119,69,52,69,63,101,27,75,241,168,129,159,30,171,232,21,167,242,246,56,53,62,157,125,31,82,146,96,107,201,69,75,207,1,82,214,231,40,50,176,174,165,3,21,191,177,59,27,247,125,122,254,74,241,216,78,178,205,142,228,39,61,144,165,75,168,199,108,243,238,252,10,50,80,141,71,2,235,156,110,14,166,49,239,81,29,58,180,233,35,154,57,254,47,14,198,11,32,142,238,8,67,117,120,69,136,88,170,44,136,122,20,141,58,125,166,234,139,66,6,252,77,37,226,149,116,241,91,66,180,151,22,252,215,194,1,33,122,251,73,126,162,179,110,56,243,143,170,85,1,5,145,22,121,9,181,129,188,238,115,184,201,74,235,219,44,52,106,86,132,33,209,55,230,143,126,185,20,128,172,80,105,22,15,49,42,152,17,10,206,104,76,141,65,129,10,39,213,158,43,248,139,70,130,59,110,55,135,200,68,89,88,64,206,43,105,46,230,68,248,248,83,45,33,12,211,204,10,137,9,145,215,213,181,252,144,202,197,131,145,232,85,92,184,96,151,200,230,78,98,163,198,189,116,239,79,102,92,201,255,19,248,58,128,30,206,222,23,65,52,73,177,108,58,25,244,213,177,212,68,58,65,218,255,154,197,60,26,128,101,194,67,233,237,186,59,120,213,128,231,227,66,90,162,6,115,133,4,107,56,179,233,206,135,185,6,196,27,53,73,191,160,180,87,188,182,25,227,226,106,163,76,60,120,128,167,159,193,40,69,213,209,227,230,202,67,55,86,109,254,176,80,144,187,48,144,169,55,51,238,81,100,203,148,114,201,60,162,0,68,130,13,150,255,43,203,153,130,155,246,247,254,158,63,111,93,40,20,135,166,115,156,83,30,84,104,28,252,177,134,4,222,184,155,128,59,13,215,229,112,200,43,144,170,131,243,192,104,80,96,40,222,251,41,246,152,2,86,189,176,76,12,144,225,82,0,51,194,84,50,238,242,113,72,23,17,173,189,86,77,147,187,218,215,225,255,234,108,131,71,251,169,47,243,96,160,17,85,32,170,96,66,156,16,0,63,24,218,84,0,107,45,156,146,122,161,56,15,49,144,85,45,239,218,151,239,183,66,213,3,85,143,126,177,204,16,47,74,163,65,6,154,66,145,135,23,145,145,216,21,38,20,205,16,50,205,91,116,116,170,110,225,64,155,17,231,165,104,77,30,29,110,34,106,177,37,147,188,53,190,29,137,48,179,134,22,75,205,6,6,61,254,211,6,214,208,238,9,117,37,24,76,60,117,136,102,146,210,171,107,230,174,106,55,153,56,42,58,78,234,128,234,73,68,108,191,166,46,187,160,60,63,76,29,37,106,212,188,70,145,22,188,248,87,18,180,93,196,79,79,176,211,137,192,131,67,67,78,194,137,44,235,224,133,177,223,170,193,77,189,81,111,90,212,240,46,55,136,247,186,105,61,92,59,111,226,196,75,177,21,223,57,118,78,78,146,125,137,200,170,60,101,205,45,207,14,144,185,25,42,178,121,122,87,191,172,42,54,255,15,65,22,195,212,79,158,45,251,218,35,90,92,76,14,175,92,252,161,61,113,87,247,119,33,245,91,38,208,36,3,200,234,34,67,230,149,248,239,172,250,51,91,90,3,201,106,113,140,225,241,32,116,241,209,112,195,140,135,78,79,113,217,133,63,221,162,22,219,213,240,185,190,144,53,24,166,153,124,18,85,178,87,229,211,110,58,44,197,127,167,81,115,79,72,207,84,46,114,177,54,39,255,71,198,173,201,81,199,193,73,222,92,232,35,23,139,29,235,134,54,240,58,98,134,167,214,164,99,164,16,183,132,129,139,115,13,52,194,67,194,211,128,101,202,219,19,200,200,196,33,250,153,224,138,76,96,8,206,54,210,15,200,106,148,5,155,190,11,205,205,104,204,129,194,31,222,227,222,115,22,98,106,226,21,24,61,51,8,100,173,43,112,52,116,98,184,93,151,254,120,38,219,102,112,143,161,159,127,132,241,150,137,93,139,151,47,180,146,213,195,85,241,11,73,184,120,21,170,28,204,184,110,113,17,82,186,148,216,246,62,132,232,110,52,2,240,43,156,34,100,240,88,25,115,192,219,246,1,124,181,230,22,212,82,254,198,100,108,93,47,160,117,112,177,21,32,200,174,141,41,248,130,113,249,1,31,113,105,29,202,2,156,13,70,182,79,15,255,147,208,223,63,250,184,37,181,209,157,78,176,44,119,172,198,79,22,187,61,26,214,78,195,184,111,128,76,10,195,188,248,92,156,51,85,235,5,113,151,29,15,232,146,179,82,181,171,198,21,29,121,255,233,225,71,212,113,108,184,195,23,171,131,49,27,9,56,236,226,170,142,157,171,34,237,103,101,93,183,73,46,209,224,35,34,123,91,206,47,132,248,72,151,252,140,205,162,224,250,115,80,164,42,207,30,123,110,118,57,49,201,154,155,199,129,246,110,251,248,168,166,74,202,8,204,144,161,64,142,248,151,221,185,94,149,20,160,82,194,252,59,193,9,112,217,209,60,198,125,168,242,219,116,29,255,212,117,229,124,187,120,209,5,233,228,185,15,93,46,84,150,144,125,29,188,114,101,161,147,16,101,112,223,77,232,231,38,112,123,199,177,233,193,118,161,79,13,85,224,206,182,131,163,158,225,146,79,222,128,168,68,200,193,139,25,148,157,164,193,2,14,70,193,180,235,188,118,210,139,136,86,192,96,9,241,65,6,189,93,150,61,82,123,98,160,208,195,72,204,74,252,125,66,224,31,240,222,234,247,182,193,43,228,33,236,168,5,217,195,212,149,141,37,129,214,231,65,25,8,189,60,182,168,250,9,136,181,6,33,181,39,14,227,166,89,247,235,104,92,1,140,78,211,110,120,26,148,133,27,173,9,170,200,200,187,239,77,86,153,224,142,61,190,171,76,105,135,6,162,244,46,155,32,147,130,6,28,32,56,189,184,97,211,88,245,103,48,85,25,51,76,2,49,201,223,145,120,227,109,149,250,24,19,173,218,74,37,153,56,95,182,83,33,247,124,36,41,221,0,226,129,217,28,154,106,227,77,17,93,195,243,227,75,214,158,209,107,61,53,33,249,35,228,236,68,71,86,153,50,45,94,39,215,118,88,156,107,243,101,38,21,192,30,183,214,203,12,210,11,2,214,217,105,40,65,78,54,237,152,96,160,164,13,197,122,139,109,61,163,105,78,7,64,228,231,50,115,21,108,89,5,238,177,26,15,93,147,221,137,221,169,106,40,198,82,177,63,122,90,139,161,157,174,186,119,203,140,124,206,241,13,74,168,97,140,255,251,168,193,175,63,185,203,215,249,250,61,88,149,71,174,12,84,66,9,165,15,122,59,33,109,110,12,34,214,160,112,162,127,22,77,72,73,76,62,242,226,26,181,217,124,28,145,62,218,92,233,213,196,34,41,214,191,224,204,36,155,45,247,154,161,26,153,127,167,181,138,25,199,33,34,221,198,29,82,130,106,167,142,11,173,98,244,214,190,106,198,28,40,60,141,66,167,112,11,92,240,33,65,221,219,160,32,106,7,32,34,111,95,130,4,110,118,187,203,165,42,95,101,152,87,141,78,141,49,142,207,192,236,166,228,134,35,148,187,145,166,208,234,160,52,40,141,216,196,208,62,24,234,123,62,157,191,43,176,6,86,136,114,58,4,198,186,202,139,70,224,118,173,87,222,4,132,10,103,196,241,62,204,180,45,56,156,112,205,114,180,135,134,55,245,106,48,35,65,124,216,217,19,219,31,24,248,134,197,230,96,67,210,216,161,239,220,242,210,36,205,149,36,190,54,71,238,68,65,120,100,159,197,122,98,163,117,39,13,162,133,209,60,121,85,70,115,150,65,243,249,116,67,79,155,104,80,67,220,235,62,224,21,17,80,29,74,255,70,30,221,28,88,187,11,50,241,252,229,88,205,17,88,87,52,115,80,206,107,143,167,159,113,111,53,0,199,109,152,116,113,104,118,209,70,50,78,225,90,51,77,207,101,251,241,60,96,237,235,18,138,217,218,237,97,255,147,138,84,243,52,127,63,173,187,60,217,123,89,108,207,99,190,86,44,16,196,212,118,42,90,195,212,54,56,154,180,202,106,215,74,177,15,237,178,167,32,75,76,55,162,114,188,50,144,228,10,91,105,108,134,249,106,214,70,195,180,69,25,186,237,124,229,145,224,209,4,111,198,235,73,234,24,9,93,25,255,180,186,189,156,113,221,24,206,220,164,10,84,101,81,11,73,81,2,101,59,17,218,42,90,68,127,186,229,106,101,187,55,45,240,220,244,67,58,61,201,33,62,97,59,185,123,176,17,86,90,218,4,214,61,227,218,115,51,37,167,48,12,192,239,55,151,213,163,151,81,28,111,134,97,217,2,16,51,47,129,172,176,251,213,211,6,89,4,1,223,179,114,92,10,229,243,127,60,158,3,186,148,239,66,122,49,140,151,46,138,214,230,208,35,106,252,155,95,176,248,10,21,233,206,240,228,5,209,19,224,91,72,255,235,163,38,65,189,73,109,114,87,228,130,52,58,69,23,140,33,37,65,230,201,29,94,40,184,191,67,22,137,125,22,10,154,157,234,201,83,203,98,66,71,190,65,39,215,153,104,225,36,85,16,146,165,42,232,243,227,12,246,136,154,72,243,73,163,119,136,204,161,24,159,152,42,37,115,53,148,218,135,196,168,35,77,202,199,18,240,145,247,54,254,203,115,165,172,74,164,120,70,14,68,82,187,238,249,223,181,199,226,42,63,39,158,54,66,144,126,22,249,221,118,120,103,196,43,94,116,239,211,91,8,159,88,170,27,3,176,92,211,79,165,55,102,24,148,121,222,36,224,42,72,246,49,100,193,233,227,160,94,132,171,211,199,177,122,250,169,46,214,254,35,211,228,13,229,191,188,127,140,87,65,79,39,167,145,41,193,176,52,199,142,253,255,215,56,251,87,2,36,31,131,142,98,69,86,206,218,151,211,76,183,10,160,90,201,234,97,20,61,164,193,220,175,119,156,20,115,170,4,195,82,26,125,200,31,71,74,96,56,187,223,151,144,204,50,137,194,251,56,106,50,100,47,6,93,140,191,201,86,54,100,138,102,195,224,254,211,117,247,110,232,44,143,77,144,186,72,46,161,55,106,103,25,189,166,130,36,139,201,190,249,240,217,25,220,47,213,109,130,141,135,99,23,210,81,168,238,245,13,2,179,63,235,86,140,203,227,234,225,27,133,202,95,76,137,165,231,233,93,38,160,181,130,77,90,119,17,80,129,122,93,83,24,193,183,18,158,124,232,228,120,93,92,105,30,144,163,145,70,42,170,48,106,253,63,231,84,173,129,192,216,80,0,4,203,138,65,60,79,116,141,240,59,240,127,71,185,84,9,186,123,157,119,17,95,133,248,140,85,231,247,2,159,81,138,117,30,219,209,241,121,70,25,187,241,84,200,65,203,213,98,158,98,151,68,78,10,117,114,72,157,149,184,212,226,98,222,251,168,179,186,152,153,139,167,201,98,190,191,81,246,181,68,47,213,245,13,200,89,247,230,2,53,38,145,117,137,66,88,94,41,197,183,173,67,32,175,141,41,107,78,62,96,82,220,225,170,170,181,197,215,93,190,188,170,28,235,148,54,125,64,116,190,147,246,192,57,149,48,25,73,178,40,209,175,215,127,156,11,230,50,52,203,251,182,18,238,190,113,109,150,111,242,89,96,184,198,6,204,149,158,204,177,215,123,194,91,145,168,198,253,101,204,199,206,215,21,95,147,248,94,151,208,200,173,212,152,33,115,133,96,161,152,102,89,170,227,239,90,2,130,92,195,228,242,234,21,70,73,143,162,81,162,43,0,193,196,151,85,222,100,102,187,78,114,81,158,211,246,145,19,210,152,174,32,244,107,62,253,174,51,67,223,39,120,107,183,4,190,222,184,184,38,133,192,176,155,35,22,199,69,40,13,237,178,118,236,96,91,50,172,91,108,237,70,112,71,239,84,135,83,164,247,43,223,205,168,95,18,16,217,105,71,100,161,188,44,103,252,126,59,253,234,149,248,196,212,25,159,12,161,90,10,6,139,154,4,228,118,52,252,250,234,247,212,60,196,127,72,9,107,65,77,227,111,112,159,187,204,76,197,141,83,9,123,46,244,118,68,184,148,189,136,177,35,89,227,166,209,238,107,53,30,27,81,252,207,174,98,229,97,17,69,0,28,129,222,201,228,43,102,198,211,191,130,103,81,252,31,104,26,223,16,138,161,160,133,79,247,23,196,142,69,176,99,145,115,8,22,137,124,36,118,251,90,177,29,8,91,175,114,59,207,122,200,77,107,242,107,8,250,87,170,99,14,24,194,114,92,227,209,129,73,8,66,31,73,129,55,162,26,237,172,122,14,165,144,133,131,213,88,89,71,219,251,84,150,190,106,40,84,171,235,62,76,41,121,226,197,238,239,17,17,2,97,97,218,75,156,11,35,214,70,18,41,200,161,126,85,72,145,199,51,44,153,3,241,111,28,43,141,241,225,223,0,6,142,84,64,24,29,45,38,32,127,254,68,174,138,225,57,46,168,156,48,221,189,85,121,5,179,123,107,181,226,129,157,136,143,17,193,120,246,59,94,182,165,47,14,89,166,37,179,49,60,222,68,17,38,222,11,146,121,90,151,23,206,171,43,105,140,239,199,35,234,199,249,147,1,167,27,95,107,45,114,87,96,227,222,29,60,108,138,98,68,169,2,65,129,27,196,129,78,134,57,231,141,250,145,112,91,128,164,9,225,240,184,104,59,158,6,254,151,83,126,121,255,92,21,144,31,219,32,80,150,80,6,250,149,201,7,16,243,183,171,191,246,19,254,89,147,85,202,244,167,162,150,16,77,134,84,13,80,159,27,54,194,128,152,117,75,127,48,74,36,136,212,48,86,19,33,128,145,213,186,187,28,246,228,160,123,105,10,69,208,121,239,228,154,89,22,191,252,53,142,89,248,197,211,184,2,208,80,210,102,77,93,64,220,52,67,3,86,199,46,20,245,46,83,53,175,215,226,237,190,164,130,77,195,82,245,142,197,203,164,109,247,156,20,95,140,222,135,193,134,229,17,11,110,95,70,154,92,205,255,12,139,193,31,185,147,160,142,144,140,200,72,136,86,195,230,213,138,132,188,26,238,147,117,172,151,138,132,172,180,118,210,187,65,131,152,59,42,80,131,48,240,45,187,66,72,5,103,104,243,40,74,18,130,253,43,44,109,25,172,160,220,174,153,120,202,236,133,241,1,165,133,233,92,11,118,218,181,39,15,172,102,191,231,19,147,87,91,104,41,57,78,55,75,245,4,248,80,241,45,228,80,104,76,28,180,149,96,151,116,199,66,26,77,49,21,1,133,20,184,88,134,93,151,158,93,250,240,96,96,30,178,130,212,45,234,152,176,136,59,31,195,111,195,113,198,124,12,135,128,85,4,135,49,99,39,160,56,16,230,206,18,46,242,25,167,12,230,181,48,123,23,80,182,253,98,123,236,84,207,40,220,15,37,248,83,98,64,161,86,202,240,80,232,245,73,65,3,135,246,77,147,138,196,66,118,201,180,176,149,62,253,18,146,234,238,13,45,190,200,144,118,158,215,120,46,90,130,176,15,189,234,75,153,80,119,43,238,236,161,75,189,182,64,207,123,112,101,29,208,26,170,5,130,60,223,203,226,31,249,238,235,7,248,191,50,46,14,208,47,252,201,41,151,109,189,250,107,78,36,50,35,182,228,42,111,144,232,253,198,208,49,216,180,7,187,142,21,1,68,29,209,31,63,154,44,106,153,16,172,248,101,140,243,255,50,70,60,212,103,74,72,169,174,18,21,83,40,56,19,21,7,126,175,150,253,224,128,189,192,233,91,95,229,83,85,8,45,69,229,93,31,108,22,20,130,114,105,241,125,203,143,247,30,109,5,99,232,130,37,203,51,197,201,127,241,132,197,34,64,24,8,124,210,211,92,131,5,114,54,148,112,172,215,40,31,115,189,77,45,109,252,57,65,106,90,179,234,52,252,213,65,87,11,31,36,104,169,63,107,103,85,221,135,230,60,254,175,125,140,5,137,79,238,136,103,82,190,90,144,224,84,23,244,143,239,68,58,215,38,169,130,25,217,252,16,91,168,205,146,179,146,12,193,231,106,2,229,97,62,180,10,149,224,244,143,108,104,201,150,238,250,199,54,103,178,155,65,129,110,127,140,145,229,111,226,115,221,3,84,139,125,113,232,182,133,51,162,250,1,17,116,97,89,147,109,85,226,183,29,52,158,174,70,127,165,184,170,168,118,136,174,255,19,177,194,66,133,48,233,40,182,253,203,24,68,84,4,28,244,82,27,144,254,86,252,24,127,180,32,184,194,140,92,81,145,241,20,206,150,183,206,157,204,130,127,33,16,142,124,221,241,26,101,14,244,254,148,81,40,44,94,28,78,212,139,125,104,178,56,177,225,84,104,43,245,178,220,7,46,53,252,201,47,71,246,203,214,17,167,80,174,102,215,84,167,198,152,206,108,11,126,64,156,153,207,4,53,138,147,198,215,30,136,164,182,102,61,211,117,94,68,64,46,150,104,249,126,88,179,109,53,124,104,4,205,243,159,70,12,71,0,107,135,80,7,30,6,89,5,79,184,138,182,198,77,166,134,124,157,107,198,112,161,218,75,78,61,161,213,22,68,133,85,211,229,20,7,126,40,97,223,180,149,116,128,175,199,229,117,60,22,152,103,129,233,66,246,64,100,136,161,201,119,117,77,58,169,235,142,52,108,216,200,205,151,235,107,154,249,208,251,155,141,215,76,228,15,6,95,112,106,65,247,145,190,193,232,66,105,121,229,69,200,230,205,255,77,18,231,181,104,86,145,62,81,70,165,191,52,6,191,123,154,80,111,4,19,52,175,178,249,52,90,166,248,47,62,111,64,171,208,13,148,133,163,195,31,172,227,29,69,227,77,193,210,206,36,83,93,135,104,82,11,216,123,248,155,204,172,118,101,221,147,143,1,18,94,117,214,151,93,220,215,42,233,141,229,155,184,251,47,226,92,197,121,47,113,68,141,16,199,254,132,231,53,181,58,22,29,210,18,204,107,98,117,152,135,235,113,204,80,38,81,216,8,134,209,238,225,31,206,98,1,49,60,135,174,10,45,97,253,232,61,76,72,84,154,105,81,55,207,54,107,232,214,91,190,57,45,118,208,25,16,149,128,117,70,73,222,241,69,38,147,150,129,55,74,101,40,108,109,200,50,182,230,33,230,209,100,179,45,192,141,73,20,239,85,250,38,209,79,249,192,186,99,198,23,204,249,238,209,218,175,153,121,119,229,45,136,173,145,172,220,157,243,147,25,150,49,17,28,136,37,11,141,113,114,60,212,59,188,249,213,235,3,94,216,41,107,222,117,193,63,5,74,65,96,159,98,123,47,62,124,39,89,193,171,178,247,140,220,238,11,232,32,62,104,179,86,84,28,52,137,158,80,107,54,229,249,247,135,223,134,196,170,224,190,140,193,219,250,232,14,33,149,240,117,64,28,232,83,121,242,226,160,18,55,90,50,171,124,125,26,244,188,204,179,3,30,172,88,110,162,19,206,61,19,150,89,92,210,209,57,48,194,252,209,26,92,70,48,101,238,54,34,172,53,224,190,131,254,174,137,88,97,147,128,204,98,76,132,190,142,69,65,190,201,197,92,68,97,116,196,55,171,39,101,118,28,176,24,96,73,160,189,179,99,206,79,207,223,180,223,125,66,129,63,103,230,76,37,229,231,130,199,245,30,157,220,200,132,251,140,175,46,206,32,21,166,98,26,143,161,78,80,134,132,205,208,198,69,111,30,0,206,24,138,128,125,49,221,167,240,168,34,184,237,96,56,148,225,225,244,45,162,174,116,21,190,178,73,69,254,156,78,74,19,118,15,61,221,65,241,209,74,54,119,78,255,172,59,152,211,10,29,44,162,223,168,126,55,118,86,49,101,116,201,144,50,104,171,143,139,86,236,166,17,121,146,59,198,143,93,76,33,118,164,169,90,204,136,2,138,154,184,9,143,25,68,79,173,190,87,136,72,40,196,204,203,242,219,21,4,156,24,207,241,30,87,145,37,135,238,176,0,112,166,195,151,186,89,53,21,24,254,248,149,93,93,173,73,58,169,108,84,118,47,198,192,165,144,16,128,160,115,208,194,25,157,245,48,155,244,114,201,215,223,248,168,214,45,120,33,125,90,214,127,25,17,6,135,82,84,253,151,138,92,205,230,177,112,19,104,25,212,98,117,182,182,88,121,51,14,246,37,189,46,223,255,152,174,235,82,90,203,179,166,228,206,164,11,1,190,54,39,239,65,110,120,90,176,5,180,57,113,233,255,158,120,95,20,225,71,103,247,47,81,139,22,108,27,209,4,126,214,185,246,183,60,195,231,207,118,54,197,152,240,155,28,6,129,222,120,216,183,209,76,238,224,199,156,95,191,115,81,137,25,105,47,112,149,74,93,221,248,248,217,47,156,17,17,129,213,9,24,196,119,247,232,54,172,241,248,217,232,191,248,189,37,90,168,159,30,111,165,233,31,29,7,94,190,102,150,92,245,140,168,134,34,45,196,162,161,255,94,148,51,218,35,42,82,146,244,127,82,36,14,192,40,242,21,76,247,137,141,85,87,84,153,40,168,119,92,173,227,35,253,71,160,170,95,211,114,194,152,62,245,137,43,174,39,129,231,171,217,208,175,152,70,151,237,234,135,86,139,2,148,60,230,14,76,9,254,206,91,218,182,214,75,90,30,249,99,246,12,115,181,167,120,171,101,140,219,102,229,238,190,30,51,105,163,140,161,173,119,111,87,247,162,128,51,185,9,212,252,43,60,21,80,19,241,175,37,103,4,15,180,154,184,50,47,230,237,143,139,48,8,154,234,219,145,99,113,44,53,225,52,244,91,100,102,240,158,81,55,10,88,198,179,224,173,179,133,130,37,75,253,179,106,82,213,216,148,46,226,10,146,32,192,132,193,54,133,43,37,218,84,126,165,195,91,172,98,220,5,135,196,242,211,14,8,8,12,8,56,89,49,6,106,112,4,119,107,155,195,149,165,142,180,65,201,126,92,129,39,117,123,202,220,222,165,166,197,251,170,29,87,239,155,67,56,2,50,7,195,60,58,6,184,181,232,231,121,247,14,153,83,100,228,121,93,105,95,249,53,41,89,157,135,235,209,218,222,40,84,112,176,39,49,41,159,250,38,41,153,167,99,68,209,218,222,127,29,174,44,44,98,57,98,12,14,223,158,156,168,20,148,164,34,107,239,22,2,121,174,221,194,50,150,59,217,31,37,181,123,238,182,211,224,97,212,131,132,181,227,101,10,39,74,26,178,180,79,31,157,59,191,163,175,85,62,21,39,54,228,33,236,125,127,65,223,29,250,9,181,12,122,89,32,228,242,32,27,124,100,65,44,200,6,174,66,51,86,118,225,153,188,10,181,249,217,205,1,134,235,131,129,186,186,126,209,151,143,83,30,237,189,10,55,236,154,160,184,116,64,12,112,35,198,80,188,203,38,154,162,79,117,69,229,44,67,95,83,90,22,108,253,133,244,166,71,75,169,35,202,59,180,48,202,32,231,219,197,11,170,57,1,33,120,203,138,225,61,79,20,53,41,255,213,165,27,122,76,172,189,108,74,73,36,145,61,166,6,120,160,202,203,43,230,215,203,216,88,193,141,101,212,168,23,7,159,214,167,56,128,97,92,3,232,216,85,42,185,133,64,23,183,154,186,79,79,25,128,149,164,163,199,55,237,73,6,18,234,178,32,71,231,167,234,117,161,156,211,136,45,227,193,209,155,133,192,34,28,228,241,189,192,156,99,209,153,105,14,27,13,117,243,215,98,69,180,185,226,24,174,167,108,36,79,112,109,72,250,24,110,141,61,197,87,96,21,169,54,174,130,172,214,192,1,75,242,250,169,223,143,19,137,27,205,143,65,114,122,190,235,75,106,25,113,82,184,48,199,242,26,244,162,171,18,19,31,24,72,71,241,107,227,76,210,18,194,83,99,24,178,112,97,129,228,109,243,139,35,236,253,36,25,215,203,54,79,150,244,95,193,167,110,175,222,134,219,241,191,0,148,116,88,140,184,135,166,21,70,202,214,157,8,228,127,157,216,5,251,143,70,230,161,250,10,243,5,202,253,125,180,23,220,252,138,94,112,11,127,181,211,81,228,107,223,33,225,6,189,149,96,36,212,226,173,128,215,34,84,90,249,53,153,254,61,162,106,117,79,193,159,88,253,220,91,198,249,48,70,38,24,196,150,53,213,79,24,244,189,37,141,240,163,166,158,195,235,31,228,58,130,20,188,208,81,150,131,186,119,7,31,78,182,14,223,246,153,94,20,172,232,223,52,180,76,82,140,113,155,187,81,110,197,96,69,38,114,91,187,101,112,124,138,146,204,68,11,196,154,8,17,220,96,179,197,66,175,181,132,252,20,85,179,12,17,55,230,168,148,9,228,98,5,224,218,181,241,156,16,123,113,225,116,37,196,0,187,64,0,120,227,195,195,59,10,6,132,102,89,51,36,16,135,195,248,118,116,30,136,161,88,163,222,54,116,118,221,66,22,182,117,176,18,157,107,98,174,214,102,38,26,29,111,188,233,181,93,94,133,232,198,27,85,94,137,116,203,200,29,152,183,220,131,71,208,182,76,154,149,214,193,102,175,42,150,113,68,222,62,73,233,40,191,138,213,24,20,92,121,216,212,124,108,41,225,57,197,21,135,170,246,1,50,47,17,93,108,114,254,97,241,122,191,250,240,41,128,195,137,112,215,76,207,131,27,148,213,175,250,247,152,76,241,236,208,145,183,229,131,219,62,36,153,46,245,172,155,132,172,236,52,239,75,33,44,69,56,102,49,81,0,83,149,183,178,42,162,16,239,174,150,144,204,148,24,185,5,128,86,212,219,47,53,35,148,165,206,65,6,50,143,132,161,210,133,9,41,143,58,2,183,215,43,127,40,211,76,75,59,236,231,204,38,253,235,6,0,80,193,147,114,141,119,252,52,203,246,38,143,16,6,77,137,223,110,237,130,76,161,68,246,131,192,191,110,223,220,111,0,179,137,145,71,240,155,181,66,192,109,241,71,159,207,160,10,41,96,148,4,196,79,192,201,147,150,26,79,73,204,88,159,115,254,220,7,178,229,167,86,43,215,30,20,26,23,200,231,218,55,203,45,170,212,59,213,217,194,14,220,7,120,156,116,246,200,191,195,212,156,11,106,218,14,33,65,246,66,207,148,157,115,147,204,52,186,87,4,194,210,197,143,77,79,122,56,8,236,96,68,220,206,90,91,32,246,109,160,160,204,44,117,102,210,152,0,246,165,89,39,210,154,143,53,155,131,235,54,11,78,135,145,155,76,144,110,175,178,210,60,52,200,95,104,208,33,250,193,80,48,178,205,15,235,140,89,189,182,161,162,25,193,126,87,205,248,30,143,106,3,251,104,198,46,152,136,145,140,243,151,137,149,250,71,214,14,138,166,77,234,9,148,113,204,6,9,224,138,63,200,140,78,78,90,249,243,62,123,178,142,132,125,77,34,58,192,227,109,29,8,7,39,240,197,225,220,5,61,70,41,33,157,59,61,113,43,186,17,82,99,62,21,131,174,28,123,211,98,117,47,97,83,254,134,144,223,144,28,75,193,98,225,154,163,183,72,136,245,167,53,174,75,147,182,67,151,234,114,254,250,78,65,5,217,165,43,212,20,188,56,166,167,70,202,53,160,207,38,12,188,2,123,77,206,243,212,84,24,226,182,84,112,175,226,75,13,25,129,238,139,24,185,66,28,62,185,164,70,159,44,35,38,200,18,216,199,136,95,251,196,91,180,72,58,234,167,101,10,237,189,165,99,249,24,150,137,71,190,146,212,96,86,209,48,149,42,20,65,224,184,181,56,10,41,237,242,15,35,152,153,208,153,99,12,236,3,59,135,89,200,134,11,231,206,101,67,247,90,219,27,47,59,36,74,162,204,224,185,153,66,129,116,186,160,43,104,172,15,190,237,234,75,160,218,123,23,238,22,70,64,213,186,133,224,65,171,114,208,197,142,236,36,220,209,108,189,164,124,156,84,39,137,39,1,140,137,102,218,16,6,101,41,104,119,130,43,132,126,154,225,187,201,156,3,35,159,82,137,56,215,54,176,98,114,64,12,9,227,7,220,142,235,178,5,165,56,64,8,168,252,192,130,39,127,39,52,32,173,133,247,212,48,64,57,32,17,171,228,61,116,195,63,19,149,117,163,163,165,146,91,161,255,233,216,64,50,233,0,4,139,172,194,195,49,239,2,58,114,143,78,216,251,105,34,222,21,166,83,253,157,11,216,56,78,56,220,163,133,247,193,242,217,142,68,153,60,195,174,253,158,105,176,179,203,218,44,31,116,65,247,209,10,209,228,235,179,36,79,82,5,142,188,53,232,175,41,122,16,219,3,88,180,61,72,176,249,219,159,19,27,201,180,8,164,119,123,202,120,146,134,158,11,192,121,38,14,68,181,229,217,189,227,152,136,159,79,112,16,42,81,99,63,168,139,17,125,43,220,5,216,3,66,159,79,110,234,220,131,160,219,169,78,175,136,27,93,205,17,186,215,208,195,229,132,63,127,185,160,42,229,152,142,214,220,209,232,120,146,211,84,0,122,128,220,198,23,64,53,1,93,143,210,75,214,73,205,149,46,206,122,153,49,60,45,143,222,27,110,62,169,187,116,225,184,57,190,124,162,254,209,222,217,162,186,145,202,131,242,168,204,81,156,138,219,58,9,229,157,60,59,76,121,185,195,91,121,234,68,94,199,8,65,91,86,129,39,193,95,103,98,243,114,107,200,180,121,100,42,87,85,237,6,21,219,63,102,143,38,101,144,25,32,212,44,57,104,143,0,162,121,116,213,38,255,239,194,68,64,117,72,191,193,67,3,116,220,240,117,89,241,27,91,242,122,212,51,139,110,221,116,183,246,175,117,23,221,244,241,90,110,169,225,83,200,169,174,169,239,189,1,8,34,162,120,61,235,89,213,102,178,71,246,156,119,116,146,73,107,128,22,179,166,118,34,156,10,224,122,210,85,4,173,246,193,147,160,102,100,7,64,20,69,118,252,97,198,188,75,207,151,128,5,30,205,8,215,96,173,172,220,94,76,106,125,251,110,2,176,66,78,168,191,147,28,144,120,251,8,227,255,56,188,218,41,167,168,126,99,24,175,200,127,243,251,13,252,141,118,203,65,122,130,117,45,167,170,10,203,238,192,70,77,116,101,133,182,118,247,67,132,112,6,18,188,217,164,225,216,250,85,187,236,56,208,126,144,194,89,88,168,155,62,150,186,49,124,206,202,192,55,126,7,205,158,141,198,43,61,158,64,59,246,136,238,51,8,221,66,242,232,31,162,141,178,170,88,229,145,150,197,143,92,9,250,137,233,216,162,202,108,168,217,106,184,237,225,40,51,123,216,49,86,169,150,150,26,243,50,248,27,165,16,66,232,193,95,153,181,89,20,195,253,149,86,195,38,125,153,119,147,42,30,109,54,41,35,32,82,153,137,228,65,70,102,231,8,188,128,143,47,0,140,182,231,37,31,210,63,235,195,199,69,123,45,23,102,186,77,133,98,46,227,194,52,252,153,50,95,5,114,227,39,90,176,185,84,58,106,63,139,156,37,48,174,181,255,79,194,249,255,47,145,181,163,190,124,152,165,157,200,231,65,148,225,158,195,167,253,24,167,245,133,37,246,158,21,157,241,58,169,152,92,31,32,22,47,200,237,103,208,97,97,125,167,216,159,44,203,128,18,20,221,68,2,235,1,160,197,9,132,143,154,184,5,112,42,21,104,214,27,172,244,7,141,152,38,234,211,231,242,148,53,164,246,66,114,187,161,248,23,222,71,27,54,125,163,45,73,6,182,186,32,200,218,23,249,20,246,211,155,123,145,106,173,178,209,127,15,79,136,172,182,205,21,140,214,136,52,40,245,42,40,183,121,223,15,211,95,159,140,176,102,234,94,54,148,133,57,187,95,89,204,168,9,2,224,80,72,244,102,131,14,175,134,216,82,150,201,135,69,232,35,69,236,70,106,22,22,242,234,10,96,162,212,83,246,245,240,204,226,80,188,160,198,172,219,4,235,60,156,90,153,9,144,96,107,242,34,33,233,157,96,181,223,191,116,164,186,19,84,106,7,41,246,162,126,182,158,32,189,57,234,136,149,196,39,247,55,201,228,44,21,204,237,185,248,103,176,3,170,181,48,100,171,1,66,91,200,131,177,108,74,131,86,111,110,87,97,146,49,168,115,72,220,182,10,100,75,176,104,186,63,137,136,235,132,204,141,155,110,143,156,10,228,30,62,53,14,97,243,248,185,209,40,140,88,79,43,205,119,57,95,110,245,236,106,136,50,96,60,211,240,162,20,110,251,6,241,126,145,54,197,80,89,89,219,41,46,197,48,7,32,11,204,248,66,246,58,109,36,56,66,110,91,110,110,82,180,60,180,0,247,214,68,7,186,126,227,25,113,128,82,97,7,212,36,31,41,30,248,80,254,109,251,36,254,185,162,181,8,50,97,200,226,117,38,101,120,188,131,95,54,174,132,97,169,244,30,76,138,181,227,241,106,185,131,237,210,38,247,177,77,9,86,44,55,215,147,9,117,137,156,30,86,158,247,0,110,58,232,90,19,59,21,136,137,156,207,153,106,116,198,26,63,112,196,139,218,92,86,250,178,101,208,50,127,111,160,104,151,124,26,218,29,227,229,157,208,131,182,15,122,72,110,227,96,47,193,207,57,155,35,97,8,186,222,190,9,151,224,105,248,36,119,122,53,212,194,1,217,40,130,123,12,134,115,139,64,20,194,117,53,40,159,191,122,75,216,83,189,86,71,101,65,246,188,183,105,226,5,1,143,133,88,139,85,106,204,151,148,169,227,234,209,174,197,39,61,43,100,165,131,181,3,131,7,177,247,111,78,143,23,71,216,211,120,38,121,9,45,37,233,60,54,145,107,89,100,246,128,97,191,182,201,52,28,235,244,86,52,131,90,58,241,139,44,27,184,132,212,110,21,107,58,163,99,17,37,2,117,65,48,254,148,187,101,178,186,118,221,82,200,115,33,157,39,158,175,102,16,150,118,133,49,209,14,54,127,182,151,163,35,150,199,18,252,86,100,27,154,151,50,166,147,77,71,107,160,67,85,139,89,191,108,214,243,90,155,241,239,130,176,192,139,162,189,20,228,34,82,97,208,169,50,54,147,221,244,37,166,84,177,30,150,80,68,24,218,49,8,67,20,237,109,123,233,87,131,232,43,242,127,151,26,246,239,169,76,40,88,137,53,46,108,225,62,208,200,186,66,132,63,24,184,230,35,2,239,227,157,245,7,156,64,55,15,251,6,61,191,112,129,17,171,209,254,85,16,233,20,20,1,159,189,58,158,173,158,159,57,185,213,178,97,245,173,189,206,156,245,116,209,175,196,198,148,167,235,5,136,239,192,200,148,232,218,88,20,48,8,107,60,190,149,207,175,229,89,84,133,35,150,146,112,184,136,197,115,247,54,94,117,199,117,152,175,60,82,141,61,61,119,99,111,55,237,47,196,18,134,88,181,19,152,181,52,250,30,188,95,213,53,6,190,240,99,156,211,5,116,197,134,16,167,79,206,163,63,203,113,42,94,213,40,115,175,114,221,213,15,45,31,225,100,98,208,209,34,101,57,175,231,54,159,35,137,228,102,38,126,140,214,244,80,79,59,45,1,51,14,74,83,169,81,77,57,240,78,53,118,222,75,130,69,81,196,190,189,34,182,207,121,216,148,213,185,165,65,203,163,179,47,223,5,158,97,215,119,201,40,182,187,187,236,119,194,232,15,8,203,223,91,118,171,240,43,1,241,137,151,64,43,11,150,16,88,109,101,224,208,60,102,84,94,36,46,177,166,65,19,104,64,60,178,108,44,209,154,179,48,0,230,28,47,90,162,103,127,126,191,175,38,34,229,233,45,188,170,87,104,210,105,242,209,46,87,244,169,72,193,200,27,101,219,252,209,245,93,202,69,173,106,238,195,97,114,153,100,209,190,244,162,226,124,212,15,208,40,154,15,197,251,182,109,218,136,194,26,138,87,147,52,228,116,27,189,188,45,232,228,224,7,153,121,222,187,82,240,121,247,146,42,88,157,61,168,138,72,85,172,33,41,29,228,142,55,23,196,148,74,192,140,59,76,185,41,206,221,159,202,89,53,189,153,96,85,239,84,42,69,72,9,151,31,84,159,166,122,69,178,43,227,150,229,68,119,40,188,189,152,53,96,201,105,86,119,188,180,180,31,214,221,97,78,96,89,231,133,212,185,44,249,166,25,14,98,251,30,198,45,158,52,52,65,45,219,226,129,85,40,183,68,31,168,57,70,2,71,200,209,29,134,62,65,254,121,54,224,30,152,194,142,97,2,104,204,81,201,104,213,195,189,163,205,190,114,167,16,215,71,252,119,65,213,43,16,70,29,12,119,152,140,223,41,128,139,84,78,183,104,206,54,155,113,21,48,37,222,236,31,53,155,183,139,197,88,228,6,168,243,206,163,252,215,238,130,90,22,120,148,50,11,226,252,47,122,248,13,32,37,222,22,156,248,43,178,128,179,53,8,118,51,91,75,83,222,62,78,216,31,198,73,132,115,134,187,34,159,76,25,236,187,241,38,177,32,68,85,190,192,85,132,18,163,254,130,193,236,149,236,39,187,29,48,179,237,201,93,231,225,175,127,205,212,216,15,83,211,55,59,236,224,75,46,216,223,95,195,121,161,215,208,103,51,11,60,86,152,214,246,222,65,19,57,7,11,32,158,177,55,247,167,145,132,199,148,191,53,63,90,138,45,77,143,223,7,190,208,136,161,226,75,153,86,102,251,152,122,82,169,217,205,147,21,231,33,226,242,34,33,237,83,99,124,141,169,89,130,8,207,246,230,93,203,102,116,20,231,129,124,108,35,119,205,163,50,90,52,186,43,232,168,27,158,113,106,67,175,166,55,103,163,213,94,202,133,205,163,96,84,141,242,84,213,126,99,15,209,10,131,213,57,121,213,236,110,16,7,117,70,119,103,212,173,172,156,198,222,12,224,52,234,91,134,242,115,227,103,235,82,224,234,200,221,99,209,230,24,128,48,172,151,53,215,59,237,55,208,94,245,213,224,127,51,92,0,116,20,161,231,91,47,23,224,211,52,130,173,247,41,104,188,192,235,199,58,223,120,219,226,90,115,234,161,119,2,78,36,139,231,203,216,151,61,208,26,122,1,245,117,70,120,116,207,4,17,228,229,60,125,249,130,55,219,91,92,206,172,84,106,67,153,234,23,187,147,130,32,243,183,157,101,191,197,101,50,36,247,102,62,171,105,157,8,45,68,135,184,100,66,122,249,34,36,170,240,175,29,77,45,162,127,224,206,58,173,184,162,237,148,219,120,163,119,175,240,121,106,167,64,154,50,242,229,210,235,240,3,142,7,185,217,224,199,143,83,245,148,235,88,254,23,76,241,183,137,208,223,205,194,100,7,65,118,139,36,89,125,221,49,11,184,212,226,196,153,223,92,248,149,146,83,107,120,249,100,21,229,217,236,163,69,150,240,45,45,142,246,197,164,151,241,187,163,47,236,11,168,201,245,19,177,86,44,39,202,253,202,64,109,116,116,97,139,200,17,90,20,67,210,234,163,211,115,127,232,142,71,171,6,252,119,31,213,175,53,153,232,46,6,151,250,0,71,51,42,230,173,149,20,127,253,246,47,46,60,255,51,234,118,233,44,202,47,60,45,120,180,174,27,124,177,235,255,45,12,251,202,113,88,197,10,235,135,66,142,234,156,44,137,222,214,147,16,222,39,251,209,67,147,168,209,219,96,230,173,17,154,201,32,33,68,245,181,36,158,192,236,7,221,173,79,98,125,233,15,65,234,253,175,76,186,92,222,38,247,26,129,26,244,22,186,214,63,76,185,117,174,155,196,119,27,1,157,176,237,88,97,83,58,221,113,90,72,113,118,108,192,82,147,249,37,216,164,118,190,181,218,255,45,207,125,109,120,195,35,82,213,24,228,81,181,219,125,230,82,224,101,90,14,34,180,255,4,181,31,227,206,41,157,162,54,193,166,66,174,55,113,100,117,70,115,82,105,82,60,42,84,140,164,218,22,68,73,132,65,11,136,63,172,252,127,203,218,77,228,99,212,198,47,91,182,147,111,175,90,97,104,202,130,132,185,54,62,89,104,250,80,197,33,188,237,104,68,42,207,42,201,46,88,48,107,34,224,155,220,216,238,125,113,160,147,95,149,192,139,166,183,85,170,72,167,87,1,22,40,243,216,213,222,236,116,83,255,49,133,152,181,104,40,155,33,96,86,17,60,131,11,234,159,105,65,221,42,23,126,243,131,42,120,205,203,132,235,117,180,254,48,252,143,9,156,182,31,161,66,207,78,8,70,126,108,119,159,225,134,208,120,112,59,172,84,76,86,234,61,54,231,47,218,149,29,39,168,219,224,105,212,170,62,181,133,162,165,161,215,191,81,171,215,156,133,3,34,132,196,116,13,237,247,200,181,49,18,247,1,115,190,153,6,83,87,105,75,169,69,146,67,136,79,66,68,19,33,248,172,25,134,169,213,117,75,91,225,156,7,72,45,196,221,145,49,25,151,26,99,232,212,55,148,83,50,196,159,33,140,21,135,120,236,168,15,208,65,249,124,142,117,178,223,167,228,209,242,32,250,19,95,146,159,239,97,103,245,137,196,225,203,65,164,64,76,188,27,251,180,69,253,45,90,14,247,29,4,155,62,82,90,203,91,208,54,43,242,39,112,177,117,237,63,138,70,194,51,186,121,32,64,55,55,185,119,95,169,222,120,64,121,158,175,153,29,149,188,68,246,50,86,217,78,33,245,99,116,35,41,235,156,137,38,13,59,92,64,10,125,8,179,179,149,96,8,6,168,219,5,205,201,221,18,60,234,173,66,113,47,125,141,5,60,109,131,84,122,215,29,43,241,157,171,186,1,74,52,128,29,168,153,114,247,96,155,202,39,124,32,47,18,214,128,21,74,246,100,159,110,252,243,131,48,247,239,188,29,196,162,36,198,160,220,171,190,172,217,27,184,119,112,248,171,30,209,210,114,76,26,71,1,227,144,28,216,136,75,60,51,106,218,48,127,64,126,139,151,11,218,99,121,196,241,225,130,209,91,229,251,147,128,250,0,139,160,65,39,192,211,101,82,7,16,249,67,109,33,4,135,239,37,253,57,150,147,45,80,177,238,24,111,155,7,164,122,111,227,168,191,181,36,141,46,121,72,250,40,11,159,158,151,18,7,131,233,25,117,198,169,62,13,27,252,163,57,93,152,183,40,42,29,53,88,191,66,157,60,15,249,2,218,45,69,2,68,19,122,30,143,115,46,149,58,154,19,235,188,37,30,75,22,201,46,113,127,49,74,209,75,140,49,228,26,244,38,107,163,107,137,90,99,228,41,162,187,243,64,155,191,48,189,182,203,125,254,247,14,222,86,114,118,140,127,23,68,187,56,46,35,29,72,10,49,122,106,93,102,184,237,196,53,203,215,2,117,161,188,119,176,196,195,11,199,231,116,154,165,37,114,182,116,81,95,97,12,120,17,57,144,129,46,204,134,222,49,216,117,35,21,131,238,226,22,40,69,128,180,39,73,211,177,118,114,188,44,247,202,31,118,47,107,248,129,154,67,178,12,44,148,86,142,207,91,122,93,235,248,107,175,243,81,217,226,247,197,237,251,237,73,106,20,46,126,40,153,187,80,156,164,74,229,101,158,58,88,174,36,22,115,81,41,32,0,51,203,225,133,103,178,231,244,119,5,17,186,165,62,183,243,98,73,247,108,139,184,243,45,36,151,52,84,55,188,145,73,166,152,184,179,191,177,66,27,102,76,58,195,55,146,249,227,244,218,140,24,179,93,3,62,62,206,168,90,29,60,227,145,187,213,146,30,134,173,160,46,160,6,203,142,243,48,14,102,120,87,136,249,146,57,160,217,54,53,52,218,50,17,180,2,105,115,56,18,40,33,177,49,88,58,104,159,109,44,66,56,226,243,53,23,182,212,94,40,233,30,76,240,39,56,220,67,107,208,186,160,103,250,247,174,186,235,19,238,241,223,63,240,142,86,31,243,193,246,199,218,171,177,31,113,18,11,193,14,219,36,89,101,220,70,201,244,157,23,196,64,94,173,169,151,103,129,89,123,84,43,134,6,251,174,250,172,235,200,158,156,135,208,50,203,137,177,72,233,157,137,168,232,64,16,172,147,87,126,243,161,212,118,175,114,170,96,240,231,82,91,210,8,142,95,163,211,166,240,187,244,86,153,172,25,90,102,29,226,134,111,8,86,241,99,232,180,109,104,82,28,12,212,177,114,237,40,149,236,187,94,19,9,253,84,208,146,0,3,254,69,168,237,180,168,125,115,157,64,220,205,54,40,10,227,184,78,176,183,117,235,128,80,180,119,243,87,221,110,80,121,182,86,13,106,177,123,36,5,193,92,217,244,246,250,69,225,38,6,228,130,97,83,159,195,13,208,8,76,74,128,36,121,215,61,135,214,53,203,27,199,128,43,146,30,211,183,200,249,211,124,83,72,132,67,142,40,46,158,168,116,30,20,120,98,117,210,43,140,189,170,64,97,162,64,216,9,197,220,174,105,59,251,33,136,172,18,159,79,38,129,35,154,254,59,132,0,95,238,169,243,20,98,120,150,119,243,48,16,196,178,253,19,197,82,51,222,39,52,217,171,191,163,253,206,89,181,124,237,48,244,225,212,203,162,45,1,172,71,108,230,129,69,255,240,191,133,119,166,85,89,92,42,15,38,73,160,158,114,19,82,71,93,230,113,55,34,103,130,145,100,150,126,178,133,125,236,200,126,93,76,72,251,139,168,28,135,105,79,99,49,205,114,41,209,74,14,190,194,196,232,57,217,165,199,241,118,217,43,205,157,63,74,16,36,151,229,23,33,111,153,75,110,23,167,107,245,175,95,100,129,21,4,227,83,200,228,222,160,88,5,211,119,144,67,54,134,252,130,80,122,36,210,92,95,125,123,126,253,84,113,151,92,98,48,166,210,249,25,116,80,144,59,180,193,222,183,251,239,130,104,197,66,194,217,56,83,45,51,81,103,172,181,244,137,182,148,7,202,24,9,163,122,251,171,215,82,250,1,139,101,51,215,14,202,19,212,115,102,148,55,70,77,23,84,103,88,40,35,160,63,19,88,140,92,42,102,175,140,60,58,63,190,11,148,103,22,180,144,230,90,12,26,113,27,85,53,185,49,147,45,104,142,66,104,120,62,58,56,104,109,23,149,164,28,22,246,91,179,184,153,243,19,255,93,105,47,92,63,0,75,159,234,72,51,254,55,119,113,19,132,10,235,108,112,175,34,184,55,8,49,69,123,7,211,57,199,119,92,30,182,148,65,105,69,128,28,70,23,220,242,48,213,23,156,117,11,69,108,109,105,178,41,108,57,120,132,25,142,21,195,128,100,246,9,217,64,14,206,230,223,44,132,189,107,181,139,195,176,171,237,179,38,114,135,16,224,199,244,112,223,144,146,224,188,37,153,89,222,69,222,196,28,231,182,249,176,76,39,108,244,126,247,23,133,192,74,153,70,122,14,165,54,195,231,46,231,141,133,205,49,148,62,133,130,71,228,200,248,176,99,223,99,208,80,30,187,189,169,238,18,8,95,178,154,60,215,103,178,166,119,95,104,224,34,55,44,0,60,215,128,7,209,101,190,50,29,109,241,168,243,135,69,156,160,39,167,189,249,144,73,35,153,85,17,28,244,142,183,233,164,176,31,60,176,25,165,134,116,97,117,152,100,128,23,148,161,10,40,211,121,64,163,42,54,194,93,95,23,237,57,128,130,244,55,117,175,149,135,109,112,229,144,182,209,141,160,208,168,96,7,229,208,135,15,32,135,135,224,130,1,204,234,90,75,85,146,31,213,199,131,117,194,2,93,217,242,4,101,40,87,248,139,247,86,77,166,185,140,229,94,59,239,154,123,145,165,144,134,191,245,154,137,95,13,87,179,207,248,239,133,59,222,21,206,115,74,66,98,93,84,215,116,233,19,190,74,207,7,148,179,182,149,253,115,105,207,235,17,223,106,13,170,229,88,4,13,112,1,203,222,185,186,188,45,110,181,179,135,41,204,129,153,30,77,27,88,62,179,226,52,143,193,46,94,73,58,75,34,166,167,98,11,47,36,184,222,195,141,230,92,80,240,90,101,38,58,34,130,63,147,41,134,226,168,182,174,150,16,175,36,15,58,193,207,244,215,13,54,77,144,240,219,228,248,3,60,1,85,22,57,248,97,127,38,43,187,138,52,24,130,33,52,225,227,94,222,77,48,108,228,251,247,88,169,244,238,108,2,165,242,51,111,74,227,50,251,120,80,114,190,51,136,18,35,82,121,95,231,89,152,154,47,6,164,244,111,82,148,83,241,136,90,220,31,239,240,24,51,156,148,92,144,56,238,164,103,22,61,57,185,3,229,212,141,169,171,39,136,67,98,62,85,221,181,48,108,231,129,40,189,67,77,49,130,224,9,80,166,90,131,134,43,6,77,129,144,255,222,107,143,63,81,15,6,197,38,209,180,70,13,209,148,208,160,154,51,110,57,93,50,14,86,214,3,133,255,77,69,172,174,135,254,216,204,26,209,26,42,15,158,228,210,170,35,105,0,77,192,224,67,28,237,152,28,12,113,254,31,208,136,195,151,101,125,154,122,22,12,141,109,89,227,132,225,32,28,179,41,10,206,114,95,240,191,131,217,70,178,182,27,67,228,66,147,19,35,125,5,61,131,249,200,254,28,231,55,205,23,57,203,96,197,73,250,254,84,166,206,36,54,233,208,243,48,84,14,80,11,87,145,129,191,102,49,188,37,48,243,48,138,86,47,238,181,234,98,71,65,164,126,247,128,66,59,211,79,246,66,149,131,24,204,76,240,93,151,225,102,190,108,38,28,70,236,154,68,26,85,66,19,53,96,192,75,237,119,147,137,55,141,235,6,159,97,67,32,127,17,57,134,110,120,8,29,231,15,242,166,129,233,233,92,35,254,134,124,99,10,5,154,142,249,246,25,31,148,133,62,91,254,186,6,46,217,31,195,178,143,67,19,27,123,21,205,237,0,238,194,39,144,217,197,10,135,85,237,33,28,144,252,110,118,192,160,199,42,9,120,166,15,142,26,170,81,250,28,204,184,74,246,14,10,213,1,72,149,107,66,242,115,196,84,156,152,252,225,114,147,196,170,146,97,45,253,240,36,165,101,187,209,21,60,33,227,23,54,126,0,243,114,41,21,249,11,142,65,228,233,5,248,228,84,249,133,250,89,90,45,47,153,200,216,153,23,73,39,21,166,230,252,228,247,51,62,87,63,79,163,77,199,106,76,21,143,45,17,95,117,131,70,196,41,156,182,183,22,160,146,129,238,238,185,198,205,88,180,153,95,159,19,41,99,37,19,209,159,89,51,12,46,97,41,69,196,16,79,85,178,246,174,118,76,129,165,202,198,179,29,99,90,21,102,42,207,43,31,62,215,112,193,221,50,60,174,174,116,28,80,200,205,211,2,13,241,83,173,115,93,10,93,89,143,240,0,138,48,83,129,52,186,50,29,191,50,194,39,252,118,21,198,172,23,0,232,103,206,1,174,41,208,147,75,172,34,205,128,58,92,86,93,40,244,174,116,119,239,60,34,143,229,171,44,151,169,16,174,8,162,233,97,87,86,125,180,212,161,104,67,154,240,106,58,125,152,188,50,140,112,213,240,165,86,110,46,152,239,39,61,59,198,159,185,251,31,215,241,233,206,116,215,153,83,212,105,189,196,7,232,203,72,164,168,9,95,92,164,71,249,239,152,33,97,167,214,233,36,110,242,148,163,110,172,69,210,253,55,166,61,49,205,177,82,123,114,241,230,126,3,99,36,11,224,103,61,93,118,161,72,134,90,35,20,22,62,80,76,183,213,14,227,37,203,156,198,166,247,183,2,174,12,137,125,82,54,190,245,146,214,239,188,142,90,156,63,151,146,146,54,4,133,130,71,95,112,254,204,242,71,96,171,147,34,135,218,153,91,23,154,227,128,136,232,82,132,123,227,130,253,82,121,150,207,33,202,64,65,184,63,165,221,158,250,113,92,101,202,32,93,214,124,169,25,14,202,146,176,113,44,228,250,51,88,182,30,189,71,117,233,45,68,19,231,23,241,54,82,115,168,81,147,146,86,231,217,75,90,87,244,253,111,131,56,125,39,119,197,156,22,237,59,158,46,119,175,242,60,234,5,94,251,114,110,0,150,134,182,105,226,42,78,73,60,132,76,127,147,73,136,199,251,78,21,253,154,230,86,59,124,1,71,175,88,52,192,191,96,78,14,176,126,31,103,126,207,65,125,255,132,81,148,86,174,104,217,176,136,51,195,62,215,113,208,247,70,35,109,193,123,42,194,213,71,133,237,86,251,28,33,37,255,172,107,155,18,219,253,200,26,1,17,238,67,178,131,153,68,239,10,86,253,14,153,146,251,99,110,195,255,237,191,255,53,65,42,160,251,97,245,195,145,252,253,87,247,49,1,179,88,184,86,81,180,250,4,202,174,103,10,233,111,137,194,25,213,221,6,137,208,154,139,7,64,50,76,152,100,79,207,135,43,108,42,222,227,156,237,9,40,127,90,159,253,47,252,228,83,194,198,142,203,90,70,219,22,28,170,185,3,56,45,8,98,145,30,207,14,71,154,90,225,92,20,75,225,153,214,235,113,125,11,130,42,136,195,19,208,226,225,79,38,193,34,73,52,71,199,58,243,13,90,252,96,47,142,109,114,30,96,148,0,45,104,155,183,1,101,206,139,104,119,245,236,34,40,8,123,250,213,85,95,137,217,27,151,108,218,209,114,65,18,99,122,54,61,31,68,162,138,139,34,172,225,135,175,44,164,157,2,124,12,45,200,216,129,156,148,166,200,23,129,79,115,197,40,110,129,12,107,131,0,9,84,215,183,221,43,192,230,188,4,57,6,228,125,212,152,201,33,79,224,115,248,212,157,44,243,57,70,234,155,5,22,253,82,31,90,153,54,129,68,103,165,177,178,175,69,210,216,119,67,115,55,219,183,121,111,101,140,240,13,217,107,225,209,62,156,13,146,26,143,250,237,70,204,132,52,91,6,100,11,26,238,142,206,188,71,71,124,86,93,192,16,134,70,3,177,53,206,53,217,60,109,202,172,42,119,23,58,175,38,163,95,11,20,19,229,89,149,11,149,69,167,48,62,140,194,118,29,131,252,30,209,235,46,188,78,111,135,128,182,204,245,138,174,120,88,200,114,96,194,139,5,154,0,246,74,221,117,205,114,230,218,159,108,192,143,25,240,230,183,154,202,69,186,179,42,89,210,212,251,227,172,253,78,144,124,243,126,158,187,151,109,238,233,94,15,94,255,240,246,12,53,68,33,160,4,188,72,164,147,5,196,56,175,35,28,135,182,219,182,17,167,127,51,85,223,162,73,9,53,58,130,81,100,152,27,84,59,125,4,49,126,181,33,202,153,92,136,22,120,32,163,86,24,238,18,62,183,241,146,220,178,23,85,65,128,248,90,34,146,130,247,230,170,177,44,164,27,221,164,124,231,149,170,52,30,151,11,11,84,71,40,130,215,101,71,113,99,20,90,96,172,52,84,147,175,180,5,121,61,236,128,11,106,223,240,141,122,245,119,103,7,187,99,165,143,238,40,15,125,149,100,159,236,250,184,131,10,224,14,218,76,27,250,157,213,127,236,98,191,220,245,84,119,249,225,18,205,187,148,53,96,236,182,79,9,201,94,20,67,253,193,132,153,214,204,134,23,168,245,236,207,242,54,202,13,208,251,121,229,179,17,145,196,155,130,225,108,71,251,129,113,100,34,226,84,150,23,183,233,196,229,218,218,76,38,137,43,194,93,99,210,192,100,3,95,0,224,66,51,127,86,146,156,11,118,170,7,140,190,46,31,45,87,59,48,77,218,48,220,121,233,129,142,46,1,119,29,33,185,42,95,136,203,82,87,0,97,173,159,27,244,252,190,232,70,96,164,129,224,42,66,102,115,22,109,102,246,216,73,233,50,90,76,113,148,234,31,166,162,25,155,238,72,172,10,242,15,147,26,218,141,202,77,105,28,182,96,103,192,145,66,30,153,233,76,165,156,144,126,107,73,219,56,59,76,135,222,18,64,13,160,137,92,111,183,34,133,144,92,52,10,115,24,224,76,4,123,70,83,210,101,64,132,51,200,175,21,205,76,74,141,1,226,41,175,229,202,122,64,225,153,218,52,251,130,28,142,31,22,155,48,30,233,194,62,214,4,232,170,160,149,205,174,194,15,126,194,166,251,35,72,138,161,252,10,29,137,133,109,209,224,130,179,16,171,222,97,63,244,180,60,188,158,242,120,236,82,76,116,87,172,216,151,159,176,192,202,95,121,31,6,99,219,37,184,105,84,15,100,77,59,83,62,250,186,231,36,136,140,58,200,61,101,139,162,176,130,62,45,0,106,154,100,29,233,70,44,145,113,238,31,94,111,1,126,110,36,62,153,202,148,172,210,38,242,220,236,52,189,201,165,48,157,126,42,134,72,179,8,201,235,222,197,149,67,110,186,255,149,180,52,82,110,238,74,174,96,37,103,121,117,51,78,53,111,34,11,245,64,243,239,49,139,54,43,251,19,210,116,189,17,249,62,8,25,206,228,190,210,209,204,72,197,246,101,144,139,213,26,166,234,142,195,197,48,226,122,157,29,53,145,156,146,239,218,69,122,245,63,65,67,189,96,226,107,107,82,255,187,93,171,244,127,87,119,187,239,66,99,206,176,234,168,94,143,94,38,199,187,155,215,134,177,203,7,109,95,168,81,117,199,102,209,50,92,222,100,159,145,96,161,34,13,20,104,64,168,81,230,29,245,94,5,158,208,56,151,50,159,200,238,61,228,74,118,2,234,54,89,117,114,209,126,178,209,67,80,213,43,187,115,236,237,64,59,69,196,169,186,227,87,6,124,222,179,11,15,134,85,115,196,105,175,6,241,23,113,164,213,220,65,241,239,226,211,100,119,67,210,105,116,119,68,134,45,227,199,99,106,29,71,143,249,164,255,3,102,0,184,117,100,78,181,48,40,120,43,78,112,44,2,124,98,115,74,30,87,204,152,23,218,193,234,8,245,134,226,251,135,161,95,119,199,48,47,194,122,23,218,100,156,127,242,228,112,252,2,219,145,223,96,4,142,141,254,148,7,109,91,9,148,193,59,179,195,130,73,6,121,156,226,185,171,219,178,78,16,108,0,248,59,172,148,209,111,20,152,203,113,7,160,50,30,9,255,175,244,61,30,200,232,120,169,48,172,149,106,221,176,194,242,77,176,184,170,76,126,203,165,173,134,171,93,225,28,173,241,234,175,50,50,223,110,3,242,74,74,35,4,108,22,49,92,65,167,80,232,140,251,76,204,114,77,131,199,230,234,196,27,15,55,156,108,163,123,248,115,146,45,28,61,79,69,227,99,183,120,12,209,218,49,45,130,173,255,224,108,224,17,92,13,110,200,121,194,128,49,232,129,59,229,102,254,49,113,196,230,48,31,88,25,111,254,166,241,60,214,196,246,254,63,77,117,218,205,221,21,14,228,235,23,4,197,117,171,227,101,245,15,167,238,18,125,3,48,61,94,51,24,196,14,54,241,3,249,221,253,59,208,65,72,206,215,69,61,0,196,174,64,107,100,46,201,152,215,92,140,142,185,121,172,81,202,205,238,79,94,143,169,239,231,213,25,250,15,144,185,244,48,183,235,47,100,135,87,208,167,105,129,67,127,240,68,61,232,117,167,27,246,89,8,150,226,129,8,157,161,155,180,112,146,252,216,45,0,207,174,0,3,171,137,193,101,39,13,137,39,73,83,144,183,53,53,168,92,53,93,101,41,173,75,110,75,131,46,205,187,198,58,232,201,208,241,85,30,4,59,217,223,62,44,155,152,140,91,44,92,251,156,7,196,54,2,68,81,146,147,113,216,213,138,93,33,24,181,224,96,128,86,51,88,9,2,103,27,132,216,161,150,229,133,18,145,158,237,217,231,38,87,35,2,44,156,50,170,51,65,182,135,35,102,177,70,58,189,156,208,132,43,32,211,38,47,196,50,49,174,153,61,78,32,80,250,0,124,12,46,22,182,60,100,20,1,103,14,210,150,86,197,101,140,83,50,206,95,19,121,62,56,2,182,51,214,222,20,97,83,35,92,233,113,50,254,99,38,42,77,120,28,49,230,185,148,174,209,46,229,123,141,17,238,192,139,40,145,188,178,61,21,95,173,1,112,196,156,12,206,196,78,183,79,96,213,199,106,85,224,215,244,139,23,117,23,176,157,87,22,237,77,81,208,108,18,75,200,1,158,194,133,30,152,226,140,128,120,79,208,215,115,99,140,55,211,152,4,32,112,211,113,227,98,10,133,238,44,13,15,146,173,224,65,159,139,248,47,215,41,10,32,81,13,12,177,101,181,33,54,205,89,25,118,158,249,185,252,165,107,190,129,49,43,89,59,39,30,29,201,133,62,238,160,15,166,205,53,235,168,25,27,197,89,22,47,29,26,71,100,232,91,73,25,4,109,78,231,127,146,9,132,201,121,28,152,168,187,250,1,14,21,117,222,210,119,41,205,100,181,97,17,56,4,104,160,49,234,194,16,218,132,83,227,204,8,72,150,205,69,28,68,115,105,156,40,218,32,104,132,124,140,25,97,108,54,224,172,117,184,118,182,99,64,203,206,165,239,55,131,20,254,234,136,30,155,12,132,177,171,128,36,70,168,190,99,77,110,233,81,42,159,227,106,38,27,110,17,208,229,59,15,22,190,169,238,161,95,90,90,188,98,248,195,221,197,233,160,10,126,133,94,248,160,127,53,182,254,39,45,15,229,7,50,82,202,39,118,124,34,228,163,118,40,213,156,76,151,18,52,27,45,124,85,157,65,19,51,46,71,50,40,167,144,192,168,86,0,26,6,107,124,177,194,143,115,66,14,75,20,48,125,247,66,209,198,54,1,5,146,150,167,216,89,48,144,37,242,52,177,220,101,215,85,27,152,70,212,67,212,230,11,80,243,37,166,104,2,252,212,112,151,132,30,81,227,229,66,42,252,238,8,100,121,113,176,65,196,172,221,31,1,212,159,237,244,124,142,111,137,137,55,30,134,195,146,249,164,149,1,49,107,79,121,195,55,51,21,213,7,66,54,28,168,97,181,237,13,171,228,159,23,39,198,168,154,131,212,104,42,206,170,19,53,6,83,144,67,176,16,82,81,67,70,216,186,34,211,124,216,35,94,109,120,225,255,144,178,160,187,164,55,31,169,131,143,74,196,122,21,189,23,110,19,84,12,162,29,57,247,26,225,253,255,113,4,0,80,178,120,206,34,234,230,233,235,14,40,11,194,114,159,167,61,224,43,98,174,102,146,116,123,81,216,238,214,230,105,16,99,65,5,110,10,125,51,51,76,173,51,29,209,229,151,79,99,54,125,199,99,125,10,118,77,121,127,255,8,230,203,167,246,49,221,116,154,209,199,248,253,248,220,46,85,179,34,13,104,57,127,160,206,220,209,196,32,213,211,56,60,223,72,92,196,66,85,2,52,73,139,148,100,40,94,15,115,208,179,10,71,226,76,216,75,72,213,72,72,52,251,241,72,149,75,241,73,45,20,133,180,169,247,206,23,147,111,165,52,244,251,196,201,50,122,41,103,121,145,14,31,5,100,187,130,44,44,7,10,81,49,124,98,133,91,146,26,141,27,199,217,144,220,51,188,82,202,82,109,235,3,56,41,212,15,30,162,180,149,56,139,126,195,162,15,53,227,110,16,74,95,209,59,228,122,182,43,76,114,69,235,218,59,42,84,6,28,43,107,149,17,99,84,249,200,143,99,142,253,219,28,154,158,214,89,81,58,56,86,130,100,90,14,113,40,89,12,85,111,36,138,127,127,17,231,250,217,175,26,44,21,253,241,214,152,113,195,54,215,166,104,205,162,204,141,214,149,88,149,188,93,178,14,19,224,197,244,230,189,218,140,28,49,157,189,248,112,191,166,207,158,118,105,89,163,188,36,116,49,199,139,181,210,102,180,66,236,69,55,194,190,244,111,112,226,214,34,210,207,107,36,93,211,252,60,222,173,21,141,228,111,169,118,53,23,192,94,252,201,163,98,235,99,204,234,223,15,218,8,53,69,105,16,38,174,186,161,124,154,154,167,47,38,80,236,182,132,11,175,167,2,95,50,41,65,109,223,9,170,112,208,165,14,137,141,187,30,155,190,242,138,25,7,85,160,11,2,31,229,15,32,150,6,62,112,107,111,220,134,167,252,82,27,136,164,100,26,133,131,125,143,46,148,80,163,23,141,111,254,40,81,255,2,232,96,138,221,219,73,128,148,194,250,137,15,41,214,114,169,231,131,237,148,36,29,38,133,148,160,205,232,116,35,83,209,103,91,63,210,64,254,203,125,153,173,56,143,60,58,103,167,223,137,6,23,41,99,137,175,51,164,196,183,103,116,131,136,102,118,81,104,211,213,66,54,166,73,137,80,186,29,155,47,2,201,24,242,65,95,251,99,121,80,182,98,173,251,100,6,68,45,121,229,212,64,95,226,127,175,255,219,66,203,223,213,58,53,197,204,98,201,244,155,223,111,147,161,104,74,93,105,34,156,199,222,234,135,129,43,99,196,195,82,170,93,145,92,196,170,28,191,171,83,120,76,196,177,17,187,213,60,75,173,239,159,238,83,197,1,248,122,109,67,68,216,133,186,201,142,87,60,88,176,151,173,21,97,250,231,127,23,39,240,54,180,161,251,3,89,106,26,29,31,206,77,101,11,204,20,188,45,200,163,73,126,183,188,158,247,188,229,4,215,139,246,202,12,77,240,27,105,31,55,34,118,32,133,189,167,94,236,137,142,242,170,184,244,19,112,164,224,189,52,218,192,250,248,38,229,35,168,86,72,88,83,54,16,153,238,164,87,120,45,171,124,52,246,45,37,115,46,197,65,74,220,81,3,230,32,114,72,156,183,87,253,247,23,93,17,19,249,174,198,139,128,165,57,89,111,63,166,203,22,124,245,24,242,167,128,6,145,85,235,76,212,73,123,40,202,119,187,86,60,86,235,24,112,171,5,37,139,162,62,192,223,170,105,117,219,137,242,23,81,254,113,242,249,244,194,246,62,223,51,92,154,231,54,141,82,125,118,52,195,171,108,21,98,18,197,58,146,208,162,235,66,240,179,185,80,194,133,174,119,117,26,90,34,25,137,97,52,35,17,119,112,31,122,160,210,49,173,23,78,224,89,120,51,51,55,255,100,172,184,150,247,53,103,112,246,216,82,128,181,1,129,223,169,100,227,223,154,154,17,31,126,148,219,245,212,181,136,200,90,16,38,88,133,1,228,55,72,153,24,165,194,58,141,43,109,65,230,0,217,29,172,58,30,193,43,250,49,175,143,138,30,148,250,134,243,214,84,177,164,62,245,116,233,202,248,51,125,111,52,139,200,106,141,87,69,108,132,80,189,11,102,211,255,26,82,54,51,128,66,141,178,149,11,255,2,225,40,112,161,216,215,237,114,125,168,104,209,52,53,211,18,98,6,234,196,17,219,229,155,154,136,62,23,88,238,93,239,125,212,164,90,145,237,88,115,198,87,238,109,206,161,123,204,83,72,109,202,167,208,172,17,211,170,157,137,93,75,24,67,43,48,236,128,61,66,247,224,40,217,58,97,160,83,208,196,167,145,17,196,150,116,129,67,203,28,109,183,134,62,204,140,185,203,208,196,2,198,0,82,228,212,166,170,252,37,77,140,254,232,229,237,113,95,140,81,240,182,55,191,237,119,246,122,134,251,32,241,192,8,95,128,22,2,0,29,132,59,91,197,182,62,154,222,229,242,240,194,101,92,79,189,126,255,52,227,52,169,44,120,121,238,200,37,85,42,70,48,66,111,161,102,50,241,145,130,147,201,118,145,135,252,225,244,158,108,69,183,90,62,254,124,28,216,234,92,98,234,188,28,132,78,9,195,241,37,91,110,57,53,41,43,196,0,95,67,21,213,239,106,165,147,240,163,96,169,227,7,196,224,128,232,40,211,185,67,96,252,14,214,198,120,165,137,30,162,181,212,168,85,137,125,220,68,20,121,201,76,106,185,92,195,118,83,195,237,90,4,227,135,217,8,82,3,88,158,150,245,69,60,115,195,38,111,65,211,172,53,150,35,76,245,185,125,36,163,219,2,22,1,39,34,197,19,101,222,104,105,10,123,41,76,212,25,42,16,185,71,31,72,61,57,189,209,202,244,70,181,0,232,235,158,58,188,156,70,48,193,151,89,169,124,219,125,191,159,121,143,119,248,129,87,74,188,237,47,22,202,212,79,22,56,31,223,145,224,139,0,144,57,221,28,86,181,151,187,233,234,91,240,189,158,84,112,166,85,137,109,153,151,99,9,129,142,165,220,217,16,137,64,112,50,20,235,38,89,19,103,30,6,21,226,48,159,168,145,102,1,51,251,56,79,188,249,229,154,48,220,37,126,7,228,150,250,197,237,247,61,181,62,79,30,196,45,37,208,1,135,145,18,212,227,179,39,198,69,86,99,244,136,239,31,193,130,70,244,65,73,169,151,167,22,183,214,206,132,177,161,150,122,70,17,103,49,116,224,191,213,181,106,190,227,156,67,46,232,130,19,109,219,91,251,241,177,14,173,44,15,112,64,174,78,63,196,211,167,179,102,197,187,58,205,91,63,112,190,251,23,127,2,169,161,15,162,152,108,55,204,6,213,41,242,113,122,82,72,30,154,151,124,22,44,111,204,239,6,169,100,158,144,128,40,104,214,16,28,169,11,191,200,167,154,245,17,108,132,193,190,73,199,57,69,25,82,49,22,90,37,239,172,39,252,33,94,219,52,143,201,232,86,1,107,6,102,169,47,18,89,72,102,12,123,200,130,226,119,133,222,165,162,180,92,161,231,246,237,120,177,63,67,119,215,96,187,162,29,183,119,236,128,149,217,94,244,223,42,4,82,53,175,14,223,149,172,146,44,116,165,195,67,129,187,104,196,133,224,201,201,191,189,211,128,212,138,96,103,70,152,67,176,88,137,105,169,20,154,237,96,64,211,48,105,255,131,146,6,180,208,195,227,11,99,48,128,173,14,152,90,168,59,27,39,251,102,240,187,230,184,23,205,236,68,7,100,19,104,115,41,140,56,217,109,169,242,13,93,52,66,198,114,150,159,253,207,171,55,180,236,40,142,93,30,64,204,23,188,233,179,147,99,28,202,100,254,248,180,56,3,82,81,106,173,72,232,25,219,79,192,99,58,210,201,23,251,109,195,155,165,183,222,33,251,124,178,19,219,119,29,126,34,80,99,238,148,38,44,221,206,223,102,29,3,238,122,195,212,7,231,133,207,107,163,34,203,38,205,214,191,187,113,209,223,85,125,159,15,130,1,249,93,15,20,99,174,179,149,0,0,90,121,200,19,50,37,10,220,10,123,89,229,36,56,161,143,144,239,158,102,241,20,86,76,171,53,168,18,54,29,243,141,128,208,106,36,87,242,58,123,12,249,73,238,144,107,231,198,57,253,163,199,199,201,124,12,192,129,140,205,209,22,173,79,44,178,199,43,62,214,24,43,52,236,88,71,119,201,176,76,99,121,48,47,10,18,175,91,152,33,208,62,216,49,68,181,115,23,111,188,15,76,148,29,95,86,202,82,95,254,62,22,147,97,171,214,26,55,85,133,220,74,33,199,117,184,170,47,7,71,249,187,115,163,81,64,16,34,35,210,140,60,77,169,9,170,29,107,148,86,20,197,90,180,150,183,8,183,21,94,156,156,188,226,163,181,135,194,77,151,174,12,116,222,244,214,161,250,198,104,240,138,120,63,156,189,0,85,70,20,77,101,55,210,156,158,75,220,56,173,127,86,20,35,12,205,149,42,27,138,7,137,7,186,91,52,26,238,154,128,227,107,107,254,59,15,215,132,242,149,218,81,113,66,74,48,221,38,158,189,24,137,239,90,102,59,237,33,240,193,108,3,177,104,219,13,153,105,68,131,103,184,220,176,67,154,76,62,208,31,10,140,248,0,233,87,126,251,227,194,54,2,134,213,188,201,23,154,111,160,68,140,212,41,35,75,71,71,140,39,149,165,76,15,161,3,90,128,176,23,255,224,91,154,38,83,181,150,227,44,105,155,160,77,148,116,167,157,116,167,90,29,83,134,125,225,242,180,225,231,149,171,146,83,230,84,102,2,24,62,222,146,118,213,88,25,209,62,226,231,205,2,36,85,209,253,103,225,15,227,128,241,164,79,236,140,122,6,16,159,209,83,77,23,65,250,179,161,227,107,109,80,70,142,204,12,202,154,231,215,160,192,158,133,12,53,77,179,130,110,172,38,253,120,32,24,39,70,116,150,204,207,7,152,83,18,145,233,64,106,39,249,55,205,69,10,188,108,227,189,14,165,112,183,213,206,163,6,12,134,192,185,161,30,250,100,203,201,124,213,34,196,162,108,15,50,14,1,160,148,66,20,230,245,0,92,128,184,25,230,38,87,137,95,180,144,47,110,101,151,221,241,20,30,28,105,2,63,44,7,182,62,168,20,148,63,187,78,47,64,100,252,224,58,191,180,252,227,17,129,174,173,210,187,169,240,71,60,19,12,189,108,243,78,6,168,113,88,86,161,94,99,60,62,223,50,39,104,124,114,166,40,59,126,142,156,30,53,188,47,99,160,202,11,244,218,65,23,121,203,169,166,238,47,183,75,228,227,130,27,233,159,71,101,237,82,91,191,86,165,251,238,13,133,24,125,88,64,173,228,2,98,44,54,140,137,37,145,87,60,183,179,212,196,205,64,60,108,75,32,137,155,11,190,147,9,240,245,129,1,189,70,255,61,177,46,86,132,172,138,47,217,166,64,102,208,241,154,213,68,132,69,39,239,90,191,31,18,172,198,99,160,183,13,125,218,69,21,86,105,185,225,228,154,54,10,67,170,112,71,107,228,162,183,128,117,65,19,4,219,124,127,38,70,79,67,195,229,26,108,99,61,121,76,71,200,91,102,88,200,181,167,159,244,196,39,168,128,154,132,200,139,112,60,224,35,20,23,14,81,101,72,132,232,155,120,118,202,231,165,157,87,110,253,118,18,203,52,253,240,180,47,203,91,183,114,210,0,43,229,11,32,190,63,68,49,255,143,103,51,200,210,33,245,158,148,76,185,246,73,21,10,160,161,213,162,13,241,152,124,166,167,209,162,104,66,7,47,210,120,172,103,85,117,127,80,250,90,42,253,165,160,35,222,246,81,169,68,220,183,199,246,203,94,20,175,218,166,73,223,93,132,175,20,171,174,159,190,111,169,43,213,145,219,28,156,229,20,136,208,125,217,31,245,34,203,64,54,131,42,98,21,143,73,174,3,52,109,29,184,120,45,54,156,162,111,117,1,184,194,45,143,34,93,227,106,237,125,11,29,75,185,85,202,182,79,61,34,180,156,56,100,240,235,59,94,147,2,234,234,178,163,95,150,113,167,147,216,231,176,97,201,189,75,254,136,170,126,89,247,196,167,6,213,192,164,58,57,59,68,61,46,130,179,96,48,106,132,178,100,184,230,200,92,90,192,175,208,114,211,44,108,77,216,72,127,135,53,144,251,136,122,117,166,101,64,34,97,223,132,184,42,22,231,97,132,11,167,187,171,30,224,252,146,198,247,217,214,55,160,194,148,196,213,4,106,226,58,61,187,112,53,112,96,11,191,9,191,31,176,13,48,76,207,248,117,204,130,225,252,245,34,47,102,34,183,177,239,148,103,130,19,66,14,180,66,74,195,52,44,90,132,182,86,146,151,244,217,104,230,116,187,182,246,132,134,84,36,221,175,74,182,123,203,204,8,28,113,32,219,218,119,46,97,254,231,232,178,241,229,114,217,5,183,59,118,149,28,55,31,102,197,118,11,225,134,138,19,20,172,184,118,29,53,143,181,17,16,42,196,93,210,160,211,142,143,0,245,79,100,166,28,222,222,180,174,221,33,157,9,202,137,246,197,200,134,69,157,16,5,215,67,99,187,136,163,121,150,222,10,17,36,69,122,102,81,104,35,136,79,127,46,209,135,143,195,219,241,99,144,237,248,245,77,15,165,248,145,230,48,123,0,150,61,176,209,53,54,24,185,92,32,124,255,94,152,33,83,26,21,101,226,23,2,179,178,136,47,179,169,248,23,144,187,224,154,102,223,153,163,133,73,103,48,46,37,80,128,255,99,174,107,253,83,18,226,109,193,6,70,116,22,173,123,120,150,149,164,167,254,168,196,148,67,79,39,35,129,206,57,172,151,223,200,77,20,229,191,19,101,122,56,174,117,37,51,153,237,39,7,164,108,185,117,212,196,195,130,84,122,51,230,160,238,13,239,223,55,1,47,45,135,112,84,84,192,146,45,6,196,125,232,75,33,185,159,46,237,153,85,196,138,218,184,30,44,177,152,88,255,235,67,42,107,113,120,56,108,183,88,170,255,185,52,101,178,169,171,119,148,178,235,51,171,203,18,207,88,211,48,27,189,186,252,151,162,208,72,57,195,122,15,233,30,34,193,114,126,194,168,216,247,16,127,225,142,239,188,161,199,239,127,254,97,201,145,109,9,240,142,96,34,148,99,157,167,119,29,208,188,218,232,14,251,193,102,95,17,67,232,42,68,208,149,197,200,205,66,68,58,152,12,143,191,165,57,73,119,86,109,129,5,93,91,112,87,79,161,71,243,51,164,8,60,10,111,64,189,60,124,236,32,35,239,36,39,91,174,215,111,209,204,111,97,68,48,205,45,157,155,50,239,150,118,243,57,1,27,132,35,73,133,12,21,224,186,229,122,4,166,13,243,243,182,38,28,207,110,136,14,148,202,79,7,107,109,251,193,166,33,118,13,27,47,65,149,61,45,119,33,9,135,138,67,42,18,172,31,29,175,45,150,67,40,107,11,151,197,219,44,132,111,64,190,203,220,209,126,70,158,225,50,75,81,62,201,217,186,77,199,171,128,254,105,69,41,92,144,13,240,237,204,50,68,158,132,185,150,203,38,221,76,154,162,2,246,122,60,51,5,228,218,189,97,176,221,86,118,111,210,32,15,171,99,211,151,58,81,21,217,133,206,18,31,234,113,159,132,26,212,79,104,106,139,189,192,59,215,174,74,227,92,98,71,91,0,208,200,119,48,117,77,44,131,227,222,103,71,28,22,158,136,125,126,174,204,243,193,74,154,88,5,135,190,224,90,41,88,152,211,0,117,98,178,145,162,60,91,159,251,182,35,182,221,72,116,100,201,7,141,16,162,41,160,118,191,174,32,81,84,163,92,129,46,33,119,193,227,41,47,142,103,65,106,53,20,126,236,39,144,208,88,107,201,179,115,213,177,10,164,220,254,85,142,162,82,46,55,99,3,61,4,0,15,120,196,38,64,191,146,220,11,204,207,246,110,171,64,122,65,223,2,109,249,253,34,83,223,14,199,247,40,76,216,8,250,60,28,46,38,30,160,16,253,242,100,100,227,140,81,67,100,21,113,64,78,163,210,17,221,36,95,61,90,195,35,105,176,107,191,181,98,189,10,9,26,20,123,75,35,205,128,104,170,60,174,48,39,49,156,215,247,68,196,64,149,136,222,199,94,139,87,183,183,52,158,251,179,22,80,68,153,116,7,168,29,131,221,157,20,97,27,123,138,144,8,42,240,213,66,113,211,60,167,241,91,10,85,117,246,210,104,136,224,57,154,186,245,23,127,143,165,11,50,103,235,91,16,230,52,192,10,213,143,72,246,84,157,250,249,134,144,119,106,128,156,158,111,211,137,216,161,31,199,108,180,205,87,78,121,153,251,251,164,219,5,77,188,23,109,50,33,228,146,65,253,26,196,22,88,186,189,205,246,0,84,226,93,226,72,122,191,209,45,194,141,15,13,30,23,1,212,39,77,108,38,201,177,199,144,217,157,108,60,202,113,150,41,91,168,24,170,163,152,6,226,80,17,54,118,53,90,248,83,175,64,215,23,148,9,237,190,124,149,236,43,239,59,161,209,92,66,86,212,194,232,119,154,149,106,148,103,47,233,145,20,17,7,128,156,113,254,92,12,26,30,112,80,148,65,69,110,131,202,31,21,13,53,149,242,160,70,172,45,45,126,163,105,205,171,128,25,196,9,224,187,149,198,84,254,147,146,160,30,169,160,17,98,252,30,233,48,210,229,20,201,253,3,33,218,37,101,112,184,44,9,213,85,208,113,41,238,88,143,108,82,226,103,82,44,163,79,76,174,224,164,244,159,76,98,0,143,181,232,161,201,106,161,198,66,129,21,122,179,28,219,252,67,72,190,72,180,50,246,38,169,230,94,202,110,120,241,191,40,84,32,127,153,193,90,101,168,1,254,182,232,44,160,31,86,183,22,95,109,32,254,154,207,42,108,165,188,100,67,112,80,193,43,221,201,22,128,48,208,28,221,9,229,197,184,214,181,66,193,24,44,234,209,233,25,77,101,95,105,196,167,211,90,91,10,141,74,178,243,15,132,251,3,167,216,147,61,159,225,63,28,145,52,69,204,77,38,32,156,208,157,136,162,121,116,21,172,235,69,241,112,53,159,30,40,246,12,200,37,71,134,33,135,171,164,73,217,91,180,249,231,169,130,175,49,168,106,205,167,194,120,156,37,181,48,48,9,111,10,76,6,82,131,137,105,191,100,254,198,72,243,0,213,106,52,53,148,145,106,205,98,128,241,207,217,237,144,226,195,196,38,204,176,28,227,89,137,233,25,94,249,145,160,32,239,20,198,94,168,27,205,156,150,36,194,81,83,187,100,230,237,250,183,126,109,167,47,91,119,123,240,1,62,179,105,212,58,218,123,174,80,250,243,211,126,18,23,139,227,175,3,219,74,195,5,166,26,80,186,131,27,29,57,19,238,116,191,55,122,67,255,115,248,193,23,164,131,159,242,74,10,214,249,212,178,104,42,19,77,164,224,105,138,177,104,16,217,74,18,151,212,255,173,97,191,15,19,238,215,109,30,169,163,185,75,231,34,79,30,97,189,62,227,35,184,76,255,199,201,0,202,76,148,38,11,88,86,97,159,116,230,137,106,176,56,74,45,82,251,49,129,151,40,36,215,166,228,170,238,102,186,45,154,221,44,89,145,129,222,147,152,73,85,61,84,233,167,13,43,222,101,231,42,184,88,39,185,70,212,33,247,55,151,151,18,239,170,93,218,107,227,241,168,201,115,159,160,124,94,21,107,101,222,185,136,71,82,74,246,247,223,67,24,14,128,221,191,42,68,133,66,108,217,87,175,222,131,54,208,164,91,27,222,2,67,172,70,76,76,26,75,118,163,243,115,72,169,210,162,179,210,139,229,70,6,56,126,172,35,174,49,212,167,127,86,196,187,69,111,145,159,197,232,201,177,157,71,59,60,17,50,6,49,134,191,76,52,70,226,79,212,221,57,241,43,65,179,116,107,169,183,199,224,178,103,187,111,117,40,178,151,215,24,16,228,221,222,95,168,124,182,137,101,237,181,129,119,91,32,214,79,253,37,179,72,42,89,79,79,105,31,150,35,200,230,65,231,4,254,248,128,56,237,3,45,239,135,22,229,225,141,242,228,209,85,53,37,74,218,160,83,4,229,92,231,250,0,235,114,0,68,211,207,149,40,19,14,196,35,192,46,187,58,69,198,232,251,136,147,2,12,83,210,235,153,226,86,80,147,120,17,204,157,55,57,109,99,75,171,19,74,144,187,98,84,44,0,30,247,189,11,67,252,67,221,23,87,40,54,120,74,86,83,205,35,149,2,230,243,20,169,155,31,199,32,91,195,5,200,131,207,188,134,252,76,209,18,19,118,69,78,210,181,254,38,246,174,235,138,11,229,196,223,206,17,64,157,136,230,134,52,66,65,121,225,201,154,23,208,40,125,134,6,208,68,110,15,246,189,67,92,137,148,17,238,136,106,111,101,107,90,168,65,176,89,133,124,212,133,98,84,6,8,139,65,213,39,13,200,116,162,177,117,131,109,191,63,6,48,123,146,173,205,147,155,138,143,106,171,185,169,188,220,28,173,44,12,160,236,106,17,75,94,46,141,169,46,149,60,10,237,62,140,8,54,177,102,173,41,249,80,4,212,9,0,152,255,255,255,103,4,1,0,0,0,0,0,0,127,102,103,229,250,109,225,234,7,54,221,92,25,34,18,128,221,245,254,50,227,116,130,50,6,60,184,16,145,69,152,136,0,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,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,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,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,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,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,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,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,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,0,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,1,0,0,0,0,0,0,0,1,0,0,0,0,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,0,0,0,0,0,0,0,0,1,0,0,0,0,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,1,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,0,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,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,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,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,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,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,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,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,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,0,0,0,0,0,0,0,0,1,0,0,0,0,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,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,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,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,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,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,1,0,0,0,0,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,0,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,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,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,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]} \ No newline at end of file diff --git a/beacon-light-client/plonky2/circuits_executables/validator_proof.zip b/beacon-light-client/plonky2/circuits_executables/validator_proof.zip new file mode 100644 index 000000000..9736bd7f6 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/validator_proof.zip @@ -0,0 +1,5 @@ + zip warning: missing end signature--probably not a zip file (did you + zip warning: remember to use binary mode when you transferred it?) + zip warning: (if you are trying to read a damaged archive try -F) + +zip error: Zip file structure invalid (validator_proof.json) diff --git a/beacon-light-client/plonky2/circuits_executables/validator_proof.zip1 b/beacon-light-client/plonky2/circuits_executables/validator_proof.zip1 new file mode 100644 index 0000000000000000000000000000000000000000..e71b898636114e5133b260d1f9aadbf611214a8d GIT binary patch literal 197848 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ξTO<(@guAbML1V$hrpHv-53Kh5w<2q;K@;|3@nie*g>)qL$BDmAeD z>ao%@oLR=n*20v3flo%g`JI2Acu)yPLN;wS<9$GPF z0td!=PZ~!NNf4jaa7e8J%Jk->Ivy#>UGHG01+!tH-LJnC@Vj)6f`fWg3P(Cx$X6{V z`mw$?yt88Tp^ODEmAR}p878_oqbU}(G5P330zWm1(1nkZPTPRL!6OJFL_~iDR2K)+ zKu_0FG84sKT`&E;?VLqyj?;tJXou^%9YN^$`KHG{I+|CEn<}H$1%OJPns=Ae_99n) zf=e441IlMDA zVH?*>{a=qv*+A4ABNh97==67RbpQVot6|_ERO#B^*ObN;Xfh}}%g~LwOB0F~i3uCy z@H79xp-G53%w%qVCA8K-RMZ*Qj;Wt~(PwHYmJn_x)WeF62XSDS)RTP+e(jpnR?5B6 zUY;hm6bq*Zeg5bXbmy{mDpNoICr1>4Jv~7(9WWE-AnD#v z$iNgUpI=vx^q{hw{(hbA<_uhJ2Bg1W#t|Zc|37D9daO>8Nmk(dl*AAT;SCaP0?VcW z95?na9(!R*QjEur1;4|xWF6tJv_zBkQ2GyVcwl&K#sL?Y!QatH*f8udU9&h>BmrdU zHHbsb(s#vyM2-`Og>nmA*0|#!-$OlyMb*-s7v6PLL&3FJiZNTC9P=d*01^bzJeZ-T}^)l>*7OJBvs%Ty;%drSa0eT znp%%c;7mC*M$ntN(tOg|yW^IG{4Gt*voxy_>N0Gcp(6z-S(r&BtP~?&Fhe>H4S*@# z!%J(K^o!&{EDx(UIf)z5Q`4Gh=iIeVxzLlntxW8RbFZWKX%5Be%ft|@Z%vY9SN1C6 zMujuN1b4@lo21n2tq5i7TNu34A=YU6@s{1hDSc0-mQ&%KBhHo{cz8v~uS9&1H}<0; zO`(q=RC&zLOL1q?HZ_Y%vPl0xjgAjEus4Sr|Jcqg2Tnj4 z^~YA!ZhWxu)A+nUZ!V)XP+^iY;P*KoQ+D$}6j!KF62R%8ClzyxwWKQtJA0TE!HJmR z#)iy~kt(Fee1=6T_)KrIOF=MKrm?#L269>wF<4cRXRvC>t-5vev69IOvwn)>-KD+w z)@7EHsU@qJ<=hqTN;YQR*_^9Pdpq?tW}X+vrcJ?`6zoDY(fz&qd9?tUQ8MZ0lRc15 zFd9gKg}1{WpZLFk^d}FZ51cNUS~V{Fb6#iC>Sli4xR${QWT&ttk*=Kjv;>%-Vl)je zq5Yhi?z(sS6s&z7O(SI|_gNJp)G2xJ`2`H`TB{{A=*eNyXVv%<9X24g8H1*|fYt{{4 z&jbP#WqES`oY5$+p|NY}?NU?t zsJaKA>8NSEE*=|5@^luQ2APJq?CSE#!qI47f| zcSg)7!G*enah&4g!;^8BK}b|hOWWSbDTAv92?7c}TJXj1i&=JJ&Ne%FUl_0BuzSyE z5FMY$qS9@~);t`CEyIMJRG=h2F}<}aNd(PXW;gbZ4W5)0xp00 z`&8Fb|E=D?n_H?y@^bvS!{SP1C!HJ&k)0_YUHURlCg{(=VkerCoUqYi{SCp;6 zY$?EM4ws}`#C!tlU_3O8(24@4Fa4h2jmx(j{b%QH#&z)AP)9K2(w}X{1D}HOh5VPF z9SC%kle{(Dpok}k~#O-twgpVIdi zcj8`Vm1^j-7*ov0gpBzPS&8Co6vTZ=bilflK=zX+j}8)-0Pmr%I1Jm8c%=W3y1zw& z*oX&M_8U@1N$pZnWD+cBZq1p{T#3~=1CqV(?_SKR&Ye~ionP>J>ZC|vIGQ2H58ZKD znOD>udrDToU}vyNux!~Oh?CEZHiBAi1C?%4E%VqeMvUEC<=$!fbT4E z2n?$CZCf3T8gedHZ6nrtv#2o>GxIGHt5`jM!(r^ynqq~*tz5ABVAL6plbjjZRKqZr z4uhbEc?ShiF$1M4so7AGNAQME2FR)Z==}|SRMq)}Vr68~mQ)kC#L7FjCHunoBBXlE zg-Og{^xnxFx5v^y?1ALIxJ>S`&CVKBUv|#Jyrs!alA%MIn^)id5WVpzTNH*z{=$-? zb#N3S)EkevUQ#m?m_l%d@C4?B4%d*9x=}sB@~}K|6(+#mspg#2484iLMKL%sN@4Jg zaP7}d16U+Ol6Lq$toa6A*YeZIX%9~TWi%YEy#5kQxFoN1U5Xw$u(-{ngH>{pXwkMz z@}6yhg7P;5AUU_k^1ka1*a?b^)uJ6J!PY03J{U{b7IcRpVaX9KM}%}M-YPp|+{%Zh zZ?8eiVcB-($JTP+vCKip)|T zQ_>m+$XgG9fs;%(m%c1;(UX z)nUai#JOffLmYntitv6E@TU?dHgDfAS62kLyxy&364Z3n(l|OG9Wyni(tK;Yl?2Jf zChB;_K>1fr1cajHioCRNaemBwkNFUk1YO1qMvIMh>YLI+JETcnv@uryJ%U}U##N0U zG?m(Q#TRMR5;UH{z+Wlcq~j~PiV2yD11l?Fx^EIQHh&m zK9QI&+wx%&bXQb-68yMsEEqZ+Y^@ey2f>jT+VO6k(k_@u6O)D_`09qzGFXU>Z@6{$ zDdI~9A$`|bU-uk|Jaajuu5WVf{S$q?;TjL#{lN!W+sg0mG#+(4Kd@ZaNQy#-?D&Sh z7h7iZaMb3zWH&`=nIQJazKQQV+>wjKhe=0gmp&)xEE^-;N9}AP985t}=q$dOF5$oKR zJ^#QOGEp4~Rp5k<4k>PEOTcx~BD;iNa))d-z<8!!NL{33WM;>(6kk8JTcy%F2QH?7 zZRa61nd^vciW*MMjsyKQ)3>8dgqzScJlCRy(=5tOYz%ffiqxNV$84JO#QC_lBaW9$ z9_|LjPggr>ioy67&TW@B#jYQV{g`{F1^WDC)JQkJtC|`nK0W!=xO{>OPkEAu=%Z?6 zb7wd+Cn*)8&LecTTlc=EyNr@(h802_BRq}6P{ z^A4mHDA7w%8h#-qY2?ygkAyk`plBlwwe~_kp9HX-)v5Fu`!{JVsf31O6hoRmGgRaukN57Ch1xyE zRh+70yq-`cEiW1sndJB7DYy#<3_aPzB_yu>gX{Lwby^JJ;D8p?fX8zko|SR-wB1nf zmuX5ldrDGYlYNgg=`hncIl!zL-D|=HMZZPcgj!0k9&~gGk|(v`6y$Se+D7<)U>k`C z+jQ(A)~q}<4l*%`q}P??<8@QV!jfmq6t~p0s+dYBUyU?B=(ImXQ)0a4o7xmzd)A;C zd99Bo6+CWnWFfR^a(esehMM7d4b%)1#OPsGk@Tq~HyL~>3Eoy<*8u7R|DBz)->8V9 z!MIH3`Z#?6!)2C^U(PhOZLOC@9Tzfvixm%b+SvN}#t?RV4nJ9G(4%V ze=514of-boC9NKKp^tC9Fqv%nb2fd`J9CmF*Dh{IzQlk4o8!~+(Ht$jM`AA^htQER zr{kI#QRB4rD!Ot=P@@5eQ3wnO&9(|7$EpmQa~X|VHIxr+S$Tz<<|?ZLzW@8o7n@Bg zPrNzGb0>Tm3BL7b&|BOoEGi?NW=faXCZdXC-$QD2GZ~``4tAQQzEh`%IT|U%dKNw* zMxcNJZ|`WA*}^d>k2)z^tA=P+6R*b6(90V?p9ba4CKqwoD;JBJzd@c~^UY;0UIUsi zKsj_c>oJDmc>42(k6ZPEKAEuFvb76Qy0KyrHglhqS0%5Ens$T z5Hvaws{KWZMiEvb*gG~zOELloY}&sYhYTNA1oxQT6N<((ncz=Ak&2-ZpZuYp;_zkM zpDFPiPyKn{KoDPzunA_`gdT&|g-a`QQ>%ZdFhEQO(aPLD&f*X>tVM?s?hZxzOvy@C z95a@E>W(tBD1%JtJf?kIDe(IBfYNHDn{ zH{r+D%S&Kn7!b&sWFlQK6Vql$rdB&Jl0|=N3fRI$>p_t?>G(D}AqOWk58=AN?lI4a z+p1^SpW^$#J1)rA^x!5WU(`){c7+ju8{r(_UWOT=(C*TDqn$f?Ny# z=S~<*$wV2WT||Kg&R_S=eC;)-sR4f61Ho|{V+zT+#%xh5rmEK%4L-_(qe(<}`5F5O z$Pz9y2r*WX^V0JRA{A(i*;swUd>E>ryG9mKRLV|AjR2!bSCK~xLu=0am}%&=~c zIuKE>9UXwpP7W_<$M2?`cu9wPB)ANZ&TaEGVf1+$|7IlQfIJK*B>n)_0ZfdS=*B~p zM7(*d&&j9Vw=JM;+~uS75kKDWfX^h zJ#V>*bf00R!`XtrnubC#s@2cpA(bXIk)S?3PuTm|jc+b`3QB4tUvj|B56gOz%Ombq z%eY=O2|Bt(WK41(N$ELO-HfBAo%LeASM^;9x=EZZdtyizdo(raJxui$DYSayRV8qN z%pt37NI*YYG>{TgC6L_$LU=j~fVGe1aFr7wt;?1ojw)`0PM0TU)8OT zb+yDVIwjJ$1(&J3mFY;wq*FMgim7sr`9LY4Kk0gPXQN@ulVA;Tj`-ETNCK3)9iee8 zNHr^Dr6)9AX`hqY`EYDVuc2;kpzab&Pn0wdk^voG^cjBw($e7)_xGi{F_|FARf^)s z$$0g<1Zf8Etnvo-ZZs1`=h<3NsA~95<;(%v;nlJ%mrhkW^68hh9ci0Rk@_aM(-RME z;t597lBt-O9|voU14^1Ag=;v*0F~-GWFUj2!sWXGM!9S7fFk%~wZoSBJm5MlVi4MT zL)Mow-Hc3r3?(78hUI)c{9g?nM^SPZO$AYs7=SasP_E)9cg+a=K*QIeR=DYZ`$V$q zzFhlQ9-M(Y#gjrdWGb)mqE3PHJp9NWRpJij;9X^OfE{^kQ)pPNJP0Lg^fNKez}fHc zjh^;NU1RTQ?e#WoPEDsQ>1cRUb2Vu}6r(|9mk@I=wE3tih8_a{WEo=Z2sLBtYe&E| zFolivX=lf|@JrY`!RJ^%@Adiq#-RHh{a26??}~+8+D8~xAFyNxF6KmFRn)HX`gKH$ zpD8b=Jg-?pC9SACa~vwuR>s5Z_Q|0{gM&L%1FPR@A>5F%Gu|l?l)=RdU4a!HSb`;1 z41WCGX(Ir@9a~^prSa=niOS4NoTmKDz%CWbQ6I|fhZcia9hMtR1e45N<+?KzzJNyv3#RZ zJ(~}$W1MlPO<-jjHalMTz{k6@tqg-X!Wu44GNlriRaRGI0+Bh-*Q+twTO|{2HbSyh z(()-TmIvb6v^j_7xn<|duc)v0_TWi9k)R9iP}(Gx7Z_al?i_mdM!@d_qN@!~C?F79w)COo@kGUL^|`H=4$E^2frL=K8R|*U z!hkEV9QHg@G?$QRGi_@UmmkIA(|Hv#o$7UbI31F0)RiA%kd1)rTrO)u_0f@yINqDr|4ivcdotliqortsjnEalsxMRgJZ6Rb! zCOw|X$PgpLbs?uyy=F*6v6U*h(-(Zt;6xb=J5!ejsjH{)_oJEk3Lr)YIJIraF5;5i zvS|$3LTjTCH{|TW=k8kj3*=C1Az{ z-A@F{U5sCfFAsYn&XN`=!*UT+8OKL8L_l`cwk}%n1@MPLwUCl1-{4*>%CDQ1t@z1o zsi}GcL}yJ9h3;?1rael3rjV>wN_vM+Du;@W@4h1FGV!hK!Yg5E2l|YzBh_%4Kz0>= zcT!_2mZCdUVh!m0fU{DB4*J*`$rk_a)85UNi)%Evh%SPdp)bbtKu>n=V$M43`1u` zsPqw1?3AUXC`97h;fgqk!ABQyWQ5xRKW{Xfa>^=TkvX;|OsGg;N6n?5q9G1&8iuw( zZ%oC2nH_eU zBTt!;x-g4@CEUBl>+g+AMX4jLq^cMi)J|bT>fsWbxhA8FO*J) zgg=<1?xT+}EW-3{Z^5?gR7;h~-I*_=J`T~N{La9OL0_MRc!lgH&3oX^aARZ6o0}(E z10NvXM=3Ud90(gRcYiVQ4{YIapB8bB%LM=_#MQ`*9dp((sdErCf*Jx9)r z1@9mlpIDWH_saSdhsO1Cz~&nfGLbfVUYSl)Mi%aJO|D;!`v|Xi$zyu_B*)e1-Atc5 z{EvCpv*s`8<0bKJ{Zfd?!~xNQd!w)Zz|DNpvs`fd#Mq3@6~NQ6_KV9Q`yEqQslsPE z?w|c8KgTiBeipaSeCf3yyNbYL8O3=oE}R82{Xl;d0#dEFcu%+Q0~Ly^gaWSuooDy^ z8k`>)Nv5n9;S#*{a6`^y~s%Wn}?vr?)E`4e2K(Q7=l~*b%v>0QvNymL# zV}8HFqm7K>zy>Sxw||S*tkq#-hO-btwzNdy($D=%yH(9iYoGeFNr<*jNtW4!ZL%rg zZxwyvq&^>`&#-`c5LCp{lnB#wi%A8-w0_Ho6O`Cq;bV^E4cTWh1w?|h0*i}l>oW^*0%i;qyYhkb0AQLWV1aguP z=tiI-r^;X!urhgwZLfu~CujuQF%Ucqtb5R+Gn#4`{wJi_jijsU(K&2)f3qrtOvxft zc5#n$NZP~Jcyk4<_5pcZn53uCp-{#~>b7Ozti>l)4~-(R=_d9(0?3d*1#h+$yxyrb zlhVsdJSL!qqQJ&@+sD7mHpC$Vh93+S6wj_MyTrl295EPcmK+(*j)1@S*Rix@e475f z<*}{DjU&!M1-6ETrVyqop*`r~?z4N)!-6~FcQVE&=OTK(Mu!1&Z@As6x@0Ffm?l-u zhz~KoGurHe@F;E!`2JeO_Q#nz$H$4eX{LJ=R2_5vusjK=8-C~me1+q?OqE!GN9Sfp z6Q?n;k}EUoOMoV@dstk=D(fHibDRe8*;D(NHZK}s9_|z1j5t|`IRX#oJQf`%^d+79 zLUm1)w1%u@v_X!SZ|B!MfHiB)0c0Fk@p+^1_#_;z+j(`WuP|@HaM#df;Y2v%y{z-* zU`LV=kC__B*<->*9ZWQ>v*D-^5{pu)@Rg1rx469{hb0?OZpWkfI!-JR)Ax{B04BMa zYIfCUa6T=-3*dOc8>1C52k&tWWARTJ!PDZgAtV{8WSpGI2$jjT*SJ}|(G1eTI3gQ8 zbH~Edk44;H;m3mDTrD6MsEL;FF+Oe@{im?|alEIU>ti9`#7U|EWuz%H`p+40h>Vh<7j6b-a|;k`ZQHq%&3QmSyVEwaGiBH*O^zM$ z^w-QYR2u0P6}H|AIyhBZ%$T+t`vhh_Hv?|o`2#~S*3crt?9tl$k+SIR$umD%y1q7p@1-dcz6XEg?q|VVOX35A~OhH)*A{JTvh&Tz16W4i(Gflez2zK&PV`G{O7(Bv$5D z!#+EXWlA#-FU}(St9t=kE6E9JRIpX9Yp9jVn+Dq~u)F?)na#Fk)*YxBC)IU$mn<$* zEQ$BqAQfepQ)fF3pD;dx+c-}4Yf=8_cRhZx{7jgNa$_*VPFF9@cRO>5$z5Nnm^Lb_ zXh)bEr2}Uj)JgFlL)p$I#7Zua_7!;EK2gwd{LmhZPc^c}0jgW%z1x?&GzLM<3PABB zd8p7V22N8CyBfMq^j@>QvepUZIDpI#ykjr$Bd79#-~WUWMAcG$T94`=73iu1r$^)O z4q;3vd%*EHWIf!QBU*%5y%soR6p}$kaiL5lHjzoTJ6tk zvc2sXPAbED`oGG2?>aD-cQtHp(8Vw# zoL|aXytNLY?3j}&S-!C|qAq9LLTJW7{2Sowd_=n)EA|Zbg%wtvS&_XL!f-`v@di^F z8CCQ1Bv}Ydbm2%A_mzHs-#sYk`#(dc()Doy~bI#s=nnMVxd zIj5-}uoS(~1~lw#+VUGK zDK|P^_LT#S{F^$}6}?7^w+Lr%r@`M_^Fto=F0Z9ZG@$W_rb{2l;holpEmH+EG&%O( zVNo@yPQ&)){+mt`TGu5lTEcPlo(K^C!5MFHaUSjyv^B{o zOuxxO8(V&JyYnHw#&ibe1<2p@h0xbE1rd749he5sn{TvqMjrCS%Jb9Do|&-K{n?;O zScEKU00ON8o9YA1z-wd7pYnMv)9hn1-g<^RlC&;I{P0;8qQMZ>oAe&iuh&;#EAAFf zu4HakCUp%lA8fpx0%gyD0+2t^n1&Q6ylMD}BY>9~4R%OPqzFYmm}z!I)PyJ{L>%3) ztdQbE512aATwl*nPb|aC3i$%ZL0#$yLC{h?IT@1O)duk*Mh=u1XL@c{Re_fA`=o($ z4isUkWP)3ju@G7SUArzXj~z{JI`Zz6*6s27OAbcVwKySfZ)lyuvGmXyn?yToB)YjB zsrYW0rjZg6@ww5llzCv>!{Jh!9o*Si4@Y6$;~=v0oF(N<(yo%8iC^rNPg_LUam>8Ti?$&>X=2}(|;Pgl9bi0f8hRD}t)bC}&cSIFcTTJ=ZkJLCdB+vT%z z%$XLK&BAAcE_I5(9Tn_hTrIgV@sZloKL`UOPU8)rI8ERVt`{D>_zEEXzWC$^`ZT>L z@on&~$U#}LuUXWCW_n`lG`Zi0?#^#GFns5^>}uj5_~_yw>T(}#d#ReiCMae_2=Vei zQT-h90UK`RH0TUP68Bo(+ofp=fGO90<4ZP!goWeYra{QvieSuitNy%!8F@ zwhSHJwC!_%63?^h(KIz#I%0CLAoM_=kni7iu|Uij5y^Gl|h*2o2+JK2@Hy?ueH$N4LI?Tk5QjhrC)dB%Va>c-^6E-v`Vf^S-0q z4Ln5!+U_r}v8ElJLViUVC;}VtH^xd=hwrDEF1ocSHFKvDJ6}gC(S}GIa`z^!Cnro> zOGN+ofj~ElkctiFdE*od9BD!i%m5sKFO%myR{C+ijQe4pO4L=%9~P06A4ZX}xlio) z2^+a%Avog^wEB9wGFV9e4E!!eV{>R{KcL(U=4^MnEhtJu7$8s5xJg`@oLP;bEO5n8 zzUg6L#-c}M;KFYoSJF#k!Ub9IQ~Ns~W5(Mu1uBGwWz}~|Ik5W}ifFh$eX{ z<7d709_9QDDZ}0@)CREt)kGfJJ#DicFkNu-no3KT>z$n7clqW}y^0!HZ*R zv3iDF;6#Xv(s+%(NyMfzP{C19iH`bWisYKMY$O(_H%Q2MM-_2lm+~juI+&YuFlpTs z*%dKD8ECp==UBw;hCvW!1GFLW!GeXBbAupMo{VuXPW`(UQ!(|TJ*~mE+^QBDLd%N8 zE)*qC25rBZ!N!<2rdi>X$6*BatRy6;MmMi`yP|oM(*9% z@j8s3bVth0B|unh2K8&n0+eQ(W(^+y!88764j zCU&W}>qw(nu{4@MU%TQ}#UzU@5~4OZ}k z>GWduX$5NQ1S2vy8Dyd~4FgU50<;Z`Euf*HiKRIV_?`4-w)m4&zb>iFd_#~_PK1P& zld0XYk;=2i3#X-F1$>f`gDT_F+8ZaIBj_ti%I5HS{Z(pGJiIol=JA;d)T5U1Fu?)l zX6aDRjSOo}Au}8;fsL*+*kDGXV^`6GEY7=StWIyq1>J~OYS)hpKM0evx#!Zm4yoLf zQ)8xaM!y6LP4l7$Pc!~#6cfYT>;i7aFhaYYyXzS{H%3akt9IzQodH5p7h_8^1vG&! znJe^?PH%O+=1NGRJiD>zYzi&UBf`e!1-`OM12qn+arAUZ;}=?#%}g{JKj~y6-3b18 zne;{zKVIK~hK^Q$E1c#V$rmW4L(Y!{F8$^b$y|~Mj;H{TTztqAR@g^{!XAGtFy*d# z0FE~gHr8d+gpUlMZHgUw>NqIES`H+=GSOgPG8LJqH2j8h>h(c*+4sLv11A66PIGUS z46KdJR*1biGOx8ehCfcsseYJ-AYoL!{vbf7STY$ognAGANga9#KfvBI!m1d_k@BJf zsp!QYA1xIdreZURW9M}Th<|NRE)(L7-FOZkD!^x@n2vCo#WryoS80h)8j(VhSRzF+ zCp{o~1-tylgr0{M^?T?RMmkPKb$9o%9+C_V&J^nkBuq>lWK3t2JFyM)gOS0APA%p^ zg`G8@pF`n*;EoA)6v@g0hp6Kk0>s0lr|~k)kgld@b*s)G%c}^0BD1LE8(*xXTp}tR zeRS1~ulEiJ=e5JqV$@dBa24;=H_tqDPy;vMFy?sxyc6@@I7C{@ZkgBgLm(6B`0B*H zVG-8TQ-G>{jxDuGsB%SKy_NbAZ!v1gZ>w7N~giQdpH? zDjNqCQ>dMV!NCMnS0+!Z!=2m&K{vCZ`c8r-5#KbV)BHC(psm=Yy0vEcyrl@=AkGOY z{iS(WvHO&9(O=KWo(QL8+Yy!zdes+&#fzJ!7O$lBqiF`-^lDEY#!V0Je)(f{0Kw>o zHkF%VG5z}Q!gr`(3WrZ}_E~RLv%K*umdgl!jzb*XhhfwYi92Ri<1q`S8&Yx_z3wdP z!lA$dDvKVo-|X3nZntz}+M%JJ1SA+yHZ6E~mku5djHHV(Q;pcfoNLPnFS_Iml7V8R zcYr8g3x~U9KaE0Pge_8$X?G?xgyq>P;b$5N(wa)e`v`^Se9M0RLt5<#d@!6eq<_>*%N9{)l!Bs%eqjD4I zK&=ldOGo>_gH;GLEbbG-Q_m=)VK zz`<(tEi+}s?Y&;_^NmLhB`wU%`LxkWKCh_0?1Wn3&BY4q)k~`Bc?&VIKp+hc7tBK< zPM**Di4o~XtG-`00NwNoxh6GWn&Fc|6dJ-o=7noW276v{uofOg#ERg#w%>rWbj6yC zST@whP3tNFAI*C#!B!31qp{tjxE@9RLtJ6+SCm2H-G_{(*bhbqw=AN~nZ<%&eyEmO zH;QlBLZFX1F*wLn`ph#%gna|?>W{^(twB_Rje0Tj+$%rt@k))OJJ4Ef`o*$?6P}8V zzJDNJfnTg}j5JPNfu5WT>&#TR2p5+}P{~ju0s^ZwC%s(O=Q4wo83f-w7BG}|1DuyG z&S1DsE7o*A$zE$y#};;PnU*R2ZuQg;{UB+*NcR1t9yfwQaa9a%KM0?1hKEFdIQY;DVxe zL$YAqcEVabyX839A>^XKK@5DvS+-^kGQQ`xCwR*7z!;YOn*4G zLu0CGqwnx29j12uXqz{soZ)64YgpssR4QI_FOYTrXvVxVX>!YP2R@vsCSUIi`5h2) zvu_W9LT^x%$cLw6$~6DP1gGUzhg30os$n1dk?<5vUme**CWl>U_ZERCBf#i$2j`DL zINeZJ^#Wa%>-=PLbOLF`xH7_|&iZBTRNWD3ceVsww%7E0yp_=@qB&Uz*jbDWV9>Ou z;LZ}yr@M#B<~9OQVXDh4M(}OU*Zc_v^YbwkU=t+qKx*0Spv>jnrWQo=y}JdcwOi^G z(kAe<-;l`x?=ybD7JCA-5P8IpE}lI_GI+1(2V{wh!4u_D{R7b#kgpR|lA8Q5GjKD2 zT}#}k8wTUzWNgo$WtTB=S>wWy4oymm;X*2ip)N#PV>hbq6?LM8X_Pcsg`#S zRmLI>`RtuA#Gep6LTxmOaG<+Af-SJD&wRtEX%Wza42Rsej*VtJ4JNc-TSg~0J^qOM zeq15b+|g4r7!rJ0JH?KDrSZSfLzx~vtZZ9y*)eE2VRi>q<#o>5Q11%}f7AMJ@ZaN1$|1Npr+H%DjDwbT04VPr8PR4brC7)uY1 z?=qMQGdGD5T*AiBbbdVmOhB{0Yy?;|@KCTQQ72Q<_>P$3j3Grci!teO(096){^6r~ zIN|VT?n!j*g+Z^Ec+c2$f_M~+=TM-i>cW&X-S+4xNNJUDn9j;ICK4);LRj-s_T>uR zt9WD0moYdCjN(o`d&>6C)RtOJRhuu}@-D*JtIL)A z!5rCmFt++5`0unhsKPBe={#)XNACp<1TPc*lQDY@Jr!HH?^mjwtS4od)Q`irN2DA-ZOu$ZbNK>jIbpbhi^^rzc}fs zGDGxC{$X@nMh0z}>s#*Ok^!$0?`})U3e0a1?C>n4?X&!R6rVbI)k)| z(m@m^yl@OM3@-tAo;C-GZou>%aja#A)Cf8k><|qX3ch}E#;9AZ!}caqnb7$kPuByg zwQ+V3KRMeU1)r{Y@jKjIq5ay-)s|fg(!w|ri+I6PZEr>9kr1r@NkAcu+j|K zo-U0RMOP%5js`KcP*P{cB^cg2mw6yF0XB}@cpS0iFbP)rT?bQ{0uUN4a!n&>3D9w4 ztSSYlzGU7=%F!1oAopn(gfq+zzG(|Yig>QOcUF{jn^`BbE{ySJdn^AKnGc%to~9lO z#Bhyp6k3cWea?@tptMbiOqnW^h7-uh$|{-h5w%8@R1?0j&|Hn#Y>xth@)G=;_|YMD zs(;dFZ(%yeR2HyeVjuYQx1B%>0#`cU7BJJcSvbdWTMX6Z?FZybg5+?9Kqo=OkoiVW z9F$eR=o)kn&6$f*kd^y1j`2-zHS7L$TXt8B% zF|g#Ss*-1hLW*#V`cBIpXpxY|c9W4NlD%T0s&PV7G+)&In^|?VqU=GN=M6L~I+*Et z8a{DkH1YqE3htoRLr<<8pveK=sgU7bg(Sswm^Kmw?rEeK2SzNhMu)Q5R(byv>z7Q9 zE5{LLP-20lUiN+*3-kGRU!s5aCHi+?qJQ@#`gdQV|1W%r0vaGa0qst4%O)t$(^Uwz zXK6;>3?{cuXC|VS5#aKI$*&9X3SR*Ep>!~g8FUeX0YBRhy*GEgzIir7!$mtxCj@r$ z_!7#_BTeOG+akYT+9&S5F-HQfuQGV=skp0Q5Wzkgq}eVS#|g!F+lC(sZVP8puw#5Y zgR+3<5|Qu&&)xpyXfBk(>bzsMRMi_>vy`I^v^1W|R^pL+b=@_R)UF_Y#%vxeaM5&Q zmaQkaLdxxQ$vOb)$5dGaB|MPEN8uY`C#wooK=hbMJy@k?zIldNGtC^B`6RE8!DtW1h7Ch{mse#FCLkz8 zqH>Ggn23+CrDnkQms!SIP~7alJ!Ua_I(B$brMQiYH8uMw?wMD;~wj zbmLe=3whBef!4|8sR}yI4ufR6%#C8O=>9_@UDD8+0%q-HSs@T_Z2z~wvKfaV+E&q9 zl|tX2+Go~inLh;F8oUiWSz1%xGPbPsk&(%3y+KCK3!>nOgJcJQq_5rYDW{|U`6E^- z3^%z*!Gu!MI+eB*!t#m&CyD3xXGU@82xvlnN#_hE(!#q?;Bkb|SgI6Yr+eW7mNWqCUpX3<1)O}wZG}J(=-2+-FpA zizUDf_RyHGT>ivg>NO)UU=9Q}k}k^{TFB{GQ(>khO$>Sb#8ZnWCG?K+pP$h)YO~-f zCO@k%3#=L~KYB1W7cHuz3DIt5-h=qyv62SBE2h*am%;1hM0On%3{qy&_N0o3Fv?3Ec{BJ(lY`^X_<=>gAVkaL!ocmM zbzlop>H{^gKd;r$L%p^Yw>IUJ72V(liaJF4onw_3evxx0OjT4jHhsWiw6eN~_cU6S z?jfoy#pvB@y2LN4Iq)!gD_Oej&%VOLVMt6c$a7J9^O*-^r2fhLkj*Nox*$IBRnCXt zpQz%4mk$Z&V3bO_$&}&=&Fdg}c?gB9fjiUzv!@i~h_SWDEs-UMps@G9~jPJjhWv#i=z?4Y;3ttvOFK6+4h zg<+327mxPyN1agSE2|*t3@m6D6$cQ_c8*{$W8UyrBrj$jOz~$xL+N++7!%c5K%=Vk zj!2pygY%eG5_M7r_1bIRI+Zr;dCaxi_SnofWW8;u27PhR(5E#me#R?h%Qko^sDBVU zt_VaPBKN$Fm6ME!8rzKvoDvAmX%LKi@>+paobiGQYoQc51 z%iPX~wr;Ptgqp8gY2?0uX^n6_9EivD^(fjmo?v+4pFh&{aoLQfKqehdNz;M3GsjPB z5bhi?Xj+TH!wJze3h78ki#2xWX10;l8T4C!F;iQqEhxvny zuRB=-D@k4~y!!L#HWfqZxXn-;wMH!z)0&g0ygKQ_W&fbOZ_&F4Hm+Z`z09z{eIC*^ zHMVGj<;4lz*3TesAOjrn{--%Z{n0F?#}H_M&FTw2(T`-Pfvf_GQyzX zV>i96l9qGX7kKuzn5{L6YIVEJRF)DzPV6Wi+R}RQF)1#JtPz6hiXLTxgNJZE1{K2^ z_fc~61j-cg8_XpfEDR>1A!-Z`c1)@0lTL7m8#-m&u%fDvFucinW?o6r+HDfsi~SyP zL96)#pVbx_8Y~BO<=Sj;JyvWB9@nk;xyfc0(f^O_tfECPm{wJPMhljoi>jcI4w4fHGWA%_q} z&Ohi=m$E9-bc^O0vs-ufR~x1TFH%_ItXwDCQG3&$K^jWm_> zfQk2$T!XaO;#RVpAA9bnzPW@Uw|*Q(qST2)y5SIZVCxS(R?Cx#cL7Aj_UP5D*%^Nh zKc^Efz#O@}!DA}7xm~D*HD2y`9LJ=g2I>&-$}%o-hfj&uS;Z(Pq_vg}_4YX|zr5HO zt{+WHM*Xe%xs6B9$g)n0Y3;zQS|g*WShIsU#aR|0drzfXOx1LdTl)9Z4D{mlV27UXh*j*L7xywa@j99eRk^hmDAErnamdwcMIopd8Q*?=aK;MmK{AKW-y zhlkI>ix3?Xt2>0hQTnKq z>3Q?aC&Abgm37e7^guD!7YWGLZ}TWc#gwooJ+S6{w!&m6hSlHA2$(pTJY{z4G=1I* zw~(=DXnS-R?-Z)wCR>Pk9FJB8zyUK{!3LMVwBZJ;bqQNs+7?`vGZm=CmYqioGnT;s z()9{1#6CbQyANBXnU3Cx8n&dD$YV!wq_5GrcS|o*y4?YtU#1!>g)FxO0yfWt_p`bVnc&1~h zVPWj}DJ3OwTuVj|e=5~zyQ#8Q5;5kRrCywUnAW7GD|Tqbmk$O?Tp9bNNk8#@x*Q(3 z{p(3@hYVGQXn$+~m(Gy<;))q}NVIKsHPT;4Ljp*K!Bva{6Z;CAj+Fimpp+^h^8vqEM7IjsrW;pKu~n3XVLzIjJ>6AM}N}g)g%(akp9>i4`T#0 z_PQWdNeU$su<~O?%j!wexNKgI@7dJh^v)@zOrX$du{ytOttQEJp{Y^ zAQz|-uuQ%v9y8CBb)TVB=beGyc?}w19dT0L@?F+3WO<;)(>PAo-5}Uwc5~)hWpCAtE@mOby7cku0Qy=;S zbv^a*0)osMv&w;cgW+=*4{-$FRR#kf2bwNaULg&Yv|Lf=gF z31+QlywshlpR8W*E#wuGQ=q|GiEEYeMtjBZHa;NENAkB~(wd5TU7=!uXxwC^O~B(L zSVcMq>7mqeUP|Ls*L!1V!eXe^HlaX_P;ub+MJB=&>|y`oaPe+|IH*2)?ISmsFOBES z6d?wD)R0v^pewz;mQ;^Nm*$f3mk#~Fq~XoU*nNc~&TECb+cx4+x7ElfugIOc11xR$ zMtLRQE!4M1)3s%^0n^kL%6HtLrf|9OW!dv=S9@D|=S9X%q*2!F`MV632cg^AfDkPS zK4G{?11apF&ocGo3g^4!5d&3aFp7Rifuo7yu38V1qKa>3dBuB+hhX!#UkS^^6?^QT zg`)G=f)vBS<_M(Axq!qY&$OLs3~lNfk6{5~m$VC?B(L<1WGGORmBapw7E8N}?dp1H zV4@HVuhUTIQXz3+ZNb=TB2AR<1GPm(EiebLV(>*SE1`(G-w(eCQqQ+4wXeQ0b_)>gD!11pLex(-y1i-8mL6be$w z0F^2`yHN3G3DqDEA_0kj`xMNOC7aRG;+_bK|=c|JOh&zLmK zt|tY2ZG!O*Y>|ZvJ%r+T^KtEA>;Z|6t5);Pu7QSs7BbmPJ7P3<4gIuk!)b=Nig(3u z`lVVN{rCvMNZ3U3B6ZkCtD;?@VAB1b>ez@_&Q)+Joy!{YdFIBBTBc0r zzEl1TXP54Kb1qcxfJYFGUh0q$x?X>*_a=57p`985fb?|U#zwz&duqyy2{bO}iNw^s z31Y*X>d_FvnE{9X2p_hiZ?^J_`-l)+L}fE~=BrhbK(MCX*0yQt{=pIDP2h|;l&(yr z0vfGJOuTL)#c>v((~-P2BjK_n+dJjwCQ^B?MyHqArkfM_XY!?QI#3tZl)>=GjX_a zhHPWd{<~oy+o?K>5Kgw`T#Ng-_1v(=qO(8ay>xMNS6cANYU21~r^BMDF8<4E|GOI+ z#O@|;`=)h!(=qL3|L5!cSRXyAsmTL-axj&%gpXIeiLF!>L*4I2c}T97465CeNmhO3 zcNMR8a}Q{cP~qa7_#VKmt_1kA^d6Wj3mIU2CiXoOD5e4d8Vb{3n_}9pfK=ylOvjB| zJvRigmXmr_;P=n*oaQ=TzQ2LH;^*7@KJjtW@zJFtA*t_zP|Sr-*f_4m|`n$+bh(1J#&O5ykiuFOWWujot;w^3F8ud&SY^dP0Iif4{Tv_dBN2^4DmBbMib2ZZ-M?+!4W<{^K zoVXIuOCD3);FU~q=1gdEuBy=Ex*vHM~DNngF$y%p^WE6UO%h3sa) z7;FR%MUI*RCt@2Ge%!);C4x@wb4-t)_M0m04uB@$Gb*{h_myJ@}!ps!_aVHWS*N3?o;zC#=*RHeb8f z5yd-gFn{ZxX;WmPc%dw^#QQ%|yJC{yP6R6Q{>`Z^;c8!F0@%x&;T5Zs{Spu3BwddC zQZ&>tz&S!ucsKOpe)bqbww5N*jqv&$*BxqvD?`v($&&h3+}H1_VW=D-gCCvqJv0&x zVCvnOk^>MIR#>;===PVrkbZ{H92vdncH)uQI$f2^ zc}j%)Y`8wun+hfI@ z8s(cYG)L)+7b_vQPU!sf)=Ks=-!`L~?{-}h3^oVhyf0_<8|z0UIe$UCHvsr(pkoKs zQH}`{H5feRH8J>%sTJg-nrx%_146`Nd4Y&18DzfOAT3$btk-J~YiW0cKv%ByMI-JAYco9W2JG zZ~sJz-Cb2RUS5ee6}r<9Y(&5VLgAf(8DWVN7_o)2PX<8z;;F4!CNnD~sekEGX2o`p ziI{p(sSCVv?c2jbVUAv9;vN&Z5T6{LDDg227WH2At9L)eSWZY|WE;I!&=b{%H54N$ zW8Qu;J?hSJo))>j*;z;M)MM6DMB=2DmOHwGj;U_ttfMY>xL!^@u|aTe=TH72b^S`F zP4!NQhtTfZz#Nv@PA;SWj=x%{n3~p-h3_;8pzw8vzL|coUppW}Y7F+IT;+P(o6b%k^YLKc*h99^ zovU~KAs{QROQ+riI*t%nf@q^rehg`R`H@1GOkw3^QHqrM_gO~kTGB%pf8Fog86Pe#N z9O_g$yZlt|Lq$n9M;l#hVd4-wzFQ1Fu8)WwwUOwuBfIM#%=>3tO>>7rs3BCSDTcBp zpDu8|$(UDpk1}ry9~vbgDpfO0mHrgLEmKYW_%X7mwIO~c7GfoQUyJF5*%-72?GrKE ziV4xG53d*}Md9;<(zBkcGb3eAeMi9hMGiKGc?f>eY1HxQcD7~fB&K1ym~AFv1R+4R zv4L>}1`Z;B0=T6OEJckhpA>8V%rgOUG9@P_x$*CI8Fng! z5S+W$pYfHjhW;F$@~E=ZJghy?S^+^gPj+(>Y)@R8RW3l9lky$dBsERznt)@}8`wNw z8zC7-b$AFDqaR8md#ASaAev!lE?6lL>#6dHRxeWv<|`4VGn^t6f&`|Nl3{2(QffYU zoAUs8>cYT7S+%U^FAus9*bBz+yLP%FopBAU+olrKXX#xlt#c7b{}3K^StbX^?r4-D z6eHzh9Vm0B06^ak+GOh0zMv9E+A;)MAKnQKXt7cFz85HwBjyXkV5MTAFkh(kQW@PD zD;yz`9aPEZZK9DcjBm7TvJ@XiT^L_M!k=!EN%9lcLFmaCl}Bb1P7i{_?=aU-mK;yPS%$9FF+^6=nYZ=EOSvL*`Z?5Vnh7N7 zz+ak!*hw;X{naVnFX%0;AKe3=i<0!vidL;z%T=dc;$OZ7E3m<6=KbVECsrS^&;NQA zp+_tISA5YL>)nO=?C9L=LYrB>^*^;3Uki6lrZ^Gf(GttKa@{^n`srrV<>XGFbwMSK z7U=NY#8fX{pk=nfeb&2WUQ=u*L$|trZp2DlLMDM9J4;LpssQI(71#58hdALI9QWWz z7&_jzhC@z$-G<#IBAqyO<=cSX+%SJX_VN@`%ih#vZe+uu=G362fBrk%zEiP_IKF1_ z^!n=6YeE5Y-HY7q>7`R;$2y=Juu=GsW_^5M+3~zRbm`5na@*e0J#=XgQl! zy@R2$Oum{5M;7}4Aq(4p$lgE_h?wx+l3{q&1alluH*T^1{$m+4!VEvBXL11CkA&M^ z?Z`4+o=jUO6O}7>U}2FD97fYP`uwW_nJ0r_BNEE!K1$I#UZ0lXH@Pzo2vK`!4J@mh zdrl9&Ci&T@=L@R+q@l$^Ud#+@ilm;XgRbnMi*er6K~-)Y(nFd@Rgb1ABp_qAOvd@V zga`|Te2w!Q>dL-m7^L$t+#=agWz82(yCZX`?H4@;jEIG~=9&@e#iWtfXWeSLmaiOS|75S5 zLVI#ELjxCa4EdHxMHA*&%|nfsVHdALe~ZR+dkH#p{?>VGPW*o9GotaFT*P2l4EjVk zu#xRtyvSHbV26w-(kW9}8ajH7IUy+R&_6LBMhs=Bb)+t9E#Afqe!EdX6f8?r=D;}v zahNw%V`00qYjRX1dlmN#Fog2WuSOsq1_5J{UlViJSraowLp{25LbIYkRA@dK&2&6z z8f!t}u=&j`$KX(}7(S1)9k~=yj;T3RBEOHiGtvS&h&6AF}fhv%dxAgmrWywh< zsK#}o|I80nLMa-u7;MB{(*V@8F1)+^CFP}OH!a%$#+%e^U}70zV0fsIfe}A6>#=s>r_KO2CJkcx_P~9 ztI*xWLZrly#S#A|0FE&vHkyeZ-`+&{qnp~OUG*YKagZO_mKGZVKtq5LxcR`>$$nNu?2CIYuU`af>v4M_xV3;<2q{(!R;~!FK3_MMzCd6cM zb5?ylw$`~_Wy9GtgyXa&fAE@*QPQYb4Ncp!+~ZA2xhQt1E)KDhCR?stRJI@aRZR#+ z0+6P`8o~k^5Zyx{lY`66zp+ma`(p3~_w8cHpGG3H%-N1mre@6gvQeX=85VuWfZH!f zG|9F#>^UAqi(yp^E-|D|7%OX}#`T*l{vo=%F`2bqxr9+SIih+$jb<%;TE?A+)Erri z`UZoCdGnm3_7EcPkb<52lGj>)1Ce3h(l|~`N9BZA%t8CIzrGq^_`u4{pcrz$3MpX7|sTq@42Ok!6NKHghHHnUcah7CYs_ec1*`Xl`EHSie#p%+Q(aET^BioG_ z7)Bd~y}^K@F<6ZCfXg>4pKT0{hS=T&lrXAk=7C>rG6e;IxxNtBHwqnRVK?$(STbtp zj&ddGFs}V|T^m!Abcj^xoMfnu^Y>&=G+&+Wt|Ia|SCY#z9hf&*N#pFaAHIR3a&E=& zhBoK@`o2{xW}%##2RH)yf%OANf&r$g@=uS zCO-0JL_~j)(98UYuAawH9{|aUt+8C6AX;)$?o&1-t$*f72Xtgha(uKJlO1$!B>PX# z*t9yPCeCxC3cu}Y#0CtL<@lNTOpF;x(%6h?LJDz4QuUC*%WFW*H&}*gi=mv{8DXTC zxp78zv=3W0sVkwj%m_LjRIj0NnrjJ3m4 z9=bs-U&9VIyM?b4h@qJ@SxhXE-^{lwjcBvJT|^)R*T`Y*OpIl2LT^svS4d<-i;>#l zbR5R-Fw|^X(liMAna$EsjA1x!?N4xRbx;wbj7)1Zi%!oOqgX(>F(f)~C{8@@&Ygck z^N9H?QU}YgiWOr!Dp#u40u(7#h7CD3_ounULQ%?JfO#H zC0Vy08ZCc0V~S7=+*q8aGf>7x!ulh1{veL%%ateRS~PbuPYpk=8GKyVOL?99eX*V< zvHDI<$f-}zgZ=Y91voS3l{?}rt4GZ^-8h$!2432}km0i{mF3lP+e%%w`@c~sh_BQF zn}k;6BQ$%a`htcwlW^{U@7MLv3V@mZrNWC?Hqw#$qBbct@E9ckodp6i+!c40rNhST zDG6VbXP@{y-EbHCIr-q56+uG^Zl}S!LoSCQvbkDpE{_;a4}(85(QxgQc29!@)L2xR{D&FS zjYUuQTkaX|Aq@V4&!Y$XzL;3gT@3&(eGVq<7!`vJL6{`Zpyfgz-1KGaddwqlwoSFV zVc15iHD}z>7FVZ^SzwP%{x)z8H61HH$U*NLr{9{w9c=$9B0EB*X;N<-a@TB-VLY>z zomku{BBg;xfWWzLtvdsk!I*hx z@Fo3+j8p~<&7@?7Jk?Z=&Pj&<6F+o3($_#FcNPd<)|S zV}J_l&s0ss%WxeexoN4SzI=De{r<_`Q-m;ay?HtfwonDIx4kQl#Wj03>5Y&kU!JzwWpms$Q_-&8F8rRD%>QCR>*d(H* zfDU)@|91%s6|3s^MJ$f~e*O$EP>WB+`xpA1uhhD6=9q7FIdv|Qvu2QZFs3p(##}{w zu`^ZP3fy~q0nFYY-5%x|;+M|+sc?!CewUOdJ_nUDb!tSV5lIE{7?jtN;d*0yLb+j* zJpb2l14kE3s%)~WzMpbGEyO7=6SxlN@`iB@vG+RQ`ws!Z#I-wFYM4)kDa~;47^9+~ zGgsllgp@C-ivqJ6WB@XaMM&Ko6HQ~31Mt+tMSGc!Z+iL`?us+XkqBj1AL7ZerTUkICF21dKH0$Y&eGA63Wh4*sl5r_f6 z_R&KR7kFR2h;GmbpKI>vP$z=lV7cz^3&@-?-I9dUa`C+wJ*=Rc^JW=D&0i1Eec(uN zm2MhX`I&6u2i!RejVFQHU5(S_S{mAB88)=%=VD=&1{+?+z)XH;A5+qMg&Y8A`BxhWF7eYK2C9D z17?p*EOwcgF+)w-GEMz^jJ7dHOq3C{HTO;v)q)#>i>2Wp^O5{@K^kXr=K#79Ezw`} z>uF#f3{VqhZPr@sSi4Ol>dB*0MyyLd5&M}QMbCsQnoegi`sidi&Yn31RhsZbRk&Cq zxr9pLcQi-CX>^TA_s)>zczs3;6>Btu&Yb8F(fD450jDW9XS(<)Hz^#g?6xVo2M65u z4jwT8%~uq8R%&?M(Lz6Id{d8n)?vx~Lypn!5VtAHT(EY_L73B=38yt6O>uwmz91;c zZEtLx?1SRFqx6xmvjc#ziFQ8-O&jw8+<3jF+CJBH7Cqlb*Q)}J_=R`@%YKz_vs03_ zF@CX!P0!ZVQZFc|WoCeGVRm2(XIkRAcWnBxxQN7?bkNA8*lzygoS`VT(7=SkN z9-5GLnO1?H;)A%X>b(sf;8CMgzY{(Pv8MtT7P zPf{Gr?APX1K~l-k*e?I&k!2+pg$(qZtwnSi0?|VBMIpBLE6&a4;EZlc0$@b|f9dSM zSG;&9+}}EvMwOuvA1$Xw=;N*p{g4cPkXOr4qEN5-LtAAOb4lw$^Vnn&$V^Op)i&rh z(Qy9y^n}J~G@(*)a(q8`oLr0HoYT;NWL5_nRqJH2z*AkhJbEvhj>QUg6T5t5U@qn+ z1+^T2{2Ob)oiS+47`tk3`0-a?)WJ#J^*^^LgNPB#VCuGHRK#}XkY;qv%`14Tz}#%n z#7k;bI4Vu)h@`nsl^JK~Vs_^q?f5}=6FRy1BaM2lya}5kvU4ATjp*A%aJSgg9Pkv2 z<3^7S%Vb%6@zgbjPKik5?(0UFpeJ!r*k%emHPtdq^Lk!!GMvGCVbhF&jizW=MH?d@Cy|Pl5kvCC{|5VDJHnGup1~8pZ87&;9A~$^ zS@?~UW$De19SLmyC8_uF_NZ+s2K!dJonvt%#A78S3*zp?N}G7%ChfjF1w^$T8j@98 z{qZ=-<~;jpb=j(Kx`iTLyU4P@*L!{84(@!89Zb}WybQpJF3Y{BV;|C!(4kziwqr>6 zS6?i}aX7+m3akbJ6O~TCX0aqQkss4X zuqGL;>-xv9gKM=OL{dkwQ0>2?Z>uinLe0Hs;xA&vRIjY`)TqT~V46nKesJ5vBQY7s zQAU}zj2hTv%!lW*+}}USWqFFk-5&S0XZE`KcO?ZJf|*ut8{Z~_(kP&YpK@ch-ktm6 z%VYw|ET(be9BdrX$=^dGS-(GsBa3;o+rDr95p^+L291JF!DeK|{gEeHc$u1>!Pv3O zMgL|oq_!8I;vVby0LFyY-syM7G}d zHf9DNiJ~=grnAjRq;W4}}<jjIG)(sHGKAn89Cj6#5N%$Scykbgq(lK9-#{!mbEbzZ z^5T9Vj;CZ}w~Y-k$H<~*u@N2G{;x1+%B-k~8P-O6w3IIZ5!WV`v;}r8`~mf6y?Y?$ za@-0l`x#3PJKA-R;2da4LT~J?zgKsTzf4zbTDY6nSQG^3W?&I0#ikRofNXp#i`e_E zykf#Q?;6}}PXsz?sQdmvJx|Dm*oG4)+{m^|%KK$!bl~e8Huf>Y5Hr=9TOV|2C#?-3 zP9HJg-|T~jzC?yDZ@t30NzmuORrs~49D5Fx=2F^r6_H)K?G;P-lPRcrs$^?+tH9bU zff!LYvnhq%ngtl(Tobxzh^IlMrzi5QiMu%~H`0sw1`p(5oZ7e*nA7cFG+l<779eke zjN`~N!?;1_oZ|%qM;U}7?dm4*Z}L_%UGy|<5oq2KzHSAo`cDyud~dkm4t}Svr>J=u zqkoST7o+$1-e2oCej^vMyl|6LtNxRx)skSyK*AnYA!B?-#vzYrI^yo)?OBmu&uzgD zP1$Q-ZV-dQjm~FP9Y(IkG=SWSc8^12%YWxYGKGKy2tY_|-lsYck$GSFFmX<*=Zkkf zfOMt3Fu6WGs!f62WD$NDb3kJu8b;k;Ei+5}O#ckI4?15#1IL}xab>+gl743i3(tc) zBCP#xBI6gGWcI!nVd-vXIEI9!{jFDg07|semXU$yRpm!au;2jbI^T)QVlM6yCQk7Q z+_*roI7dpFD5a6~>-O3h)M}!5cFIQxeYA6IdI2h?oM4beyb@O*_mkn%_6}*b>;Wa; zRK1z_gm($st$u;-DyA@Ft}V5eXyTFbiP#OH%lYLXm1|K~8GrCtfFIcL!3~S+Zi^d~ zDaLCx3Ry7+*Fp5KtG+iC_TS4rv{D-WK%A68e|M_@CW)inCoqjSE=I7a+a^=_LA#lY z*PFB{mZZm}nGp7_#r`5bIKcFW>nc}U-H~TSVLIHSMdhuelvBHl{3|(bkp=xRH^v-LYk|H9t} zQ0ItO_=^LmXEIFuZY51D1`?R7RrYV>cny%vGSmPDLMvJtA2ajG==mNa(IVj#WasU^ zi$VDncWML|z{c^^X;ETzymE{-dIALvU>V_ZNzO|@8AQ@p(RYD+6G;*xlh#E&e=(?R zj2bMGroJzZWwu6f&BSguiX`54iXFwI_E5?#8zyTlr`0U3YS7j3y)6jLHl&bv-PAxf zWpLq--yQ)kEYl`xyQwvHrWfW3x_&2{$H=!5G?Jl+WT0HYzQ&TR`+nDja?>334NBvY z4RV)7e}mpW8toh-mN52q!x_a1v8!UhvngWZH128HL0=uk<<%4QBweV(!DDVFkVrt| zJuIAYo&)-=O)?Y{M{e#Yn}J}T^!WxPZ{5P_I2ZH z8%F9Qq5F#VkY`Wu3+R~8mvK3;7%u6-C-d0rw=6bFaoCrPwm45@*{l+4d%;x)Y2<)h zGlf`|k?xt{zTt+!rPrtR?gEZFxLWf{%T>hOm`x%E3LQ(O{NxAkXtK)IA-R&uj1mXg zcWg0d)H)Opa8O&!dM|+w1LD+#-q5KHu4{!d9(yS6l$6is?0D)UPI=f8$X)*Y?5?CE z7zpBHPyd;jn5A+>`Fm61T~CN0Dl%=ofAmDVnp5B3j5}OInr$*b(gOyLAXAcV0M~ZY z7i+Uteip6zTf>&~lEyPBvRF9@#A=Dwn(pnJu>h#ElL|3YRUgd{_1n!T1-Bgry~Ua$ z{0R8me?6Eh=&C1eT<7#;s;3s5{J(V4L++Je3>nqPPO_4BT!AR~jS#F`hjyMaY$Bh(&0$9t&jS z76`j`Moq-!zGz5?_OCwy*!QGpw8w7zdvE6Al~hNmRyM+s6u3yd6t_$3_;V;M=oEaR+ z;s7@p?b$QLs60wY6nQgLE}ZX&%7GHYpr6J1Cw(g=hc_NAdhQ2pH6mF}@eAwPFwrXx z8@0DIkPI16$5Ig|?RTqnnOgTseVJ}J*32DE*czm-`rtw7cO3lWhZA$~e@RT`r(_L6 zBi7{=6~qX!R^LQoadoe#%RK>a1}8Txc=}c@yT4-6;%*9KGc(jiJM>nu_1@I42j#g) z`Hiz#H&Dx^&Hm#Qk6{Mm(RcKXCDY+avv>Ao@g&*9ZqC-A$wkvb6%ZLqFAR+Sn<)aT zduaYU6FH$>V3fW zZD=h6=4FwSA@t3_%c&P+{R~hi7M!7RP-M7Ng*tBR9O2R3WN{e-FJT&orNK>ACkFs7 zqcM|57VdXS<9v)Hig(rJ9xFL_Mc2o!~slW`>Hn+)Yi zd_riY8<7Rvw@bF^oE~Z{K?bAJm|Ug*(2-}9+Near@}d$wiC=Z)?TQma+Txam(cfY@ zTF-2t31H0Ev6^Sv(N3ogpaAVS@F^Y5MWeC+6n^;K(=M zRUc!Vd7CRRoTfu8^znBtW_x{K)IdMq!H)Et-haUSJ4kQkaEk2IKQtf#y;X$e|dc_zPbsK)CgsNlo`#Qc}w{B9m`H|btp z%Ew~ojgxB=nfv{rDa61iX+X$;-Odh77uprlt4cE30;GMbC=EHzoOymnkqARYd07^0 zaz$cBpkr(nl{!kDVgxtG3nL#>9ZB+SHnU8p$o4AJYP%rxq{bg&!<1$mg;b1J5_Pph zOiK{jGmY=qOy8Bf;7A_qOpI^M>1*qmCl(Y>ikTAr;*(TA^&9x*gG6=1sj=7qOnFv3 z2nU(`zBa0UB^vl9)=sKTXFea<`* zy7ikU40c~ywSqlE@QB|u{1S&Zx(5!0=y2n8&s9c_S}zzqggz^C^>NSv|TLmp;1|GlpDo1fDAdi6-bswWhNQrSxG6b>th^!e{1+nlu@Zd z?3}XnIn6{7SmVpUj`%A~Quy5ID0#et)BCaU#4g1<4J%#gF9Ha7Q;j{7@ieAqhMqmw z-ki#Y`<$nztF$={smN6(vWR};BpJjHq55_keYN27sKgrQXcv@Vx#H(u+r%j@FnK}A zr#}yghW(cusFQpo#=F+~adTV%>+wB!{(^drR(uiH#=Np)EiUchhA13%(x0aNY-hs| zLV=iuq^cJUaz|CteayTHpHI4H4T+l%nK(`o{>+OnC~7JnfRa^|wf4@eIOyXz-#bd} zZ-}ALswcIH!+nomK6iME7E|U{UpF3;P=t+4?FP8Kc+k6n@h-Ry=i{c6He$^jI38*# zku3$mdK5rlMn4mSY`w-1*rkY&S!4G3)j5FEyN?G-Z8;hNbAsQsyE|j?GnZrl;u9J_ z!e&;=B;nYH^W=e4?BeTJZfnxPGr$ltpWFuH9F9qeY87EL)3xtF`|eU0;MB0jy)m#W zc5>;^P}n(YMspnB-W5>ssptCaUv#Vz$0bczZ*b9?+KxcmmS|RSQb!ZoLbzAwqo9Dz zQi-|x515T$p_<1geFrB=P{Pq--IeP1@Sqsh_KpiDVwgDlR8#f!-uA(R5%UNI>VBX4 z3S**g$mqGt#GW1wED&8q4n2zHwH@+pugdDW-O2Jv?uF}*^P@s0(Ls2^f?5aEdWwZ9 zDJ$14WV_`Am$x30?9EABEDDvHP5tCmPq*Lf^sh4GxTqh!ELuOM;>A3A`wJ6YNCsuJ zRQBBXH|ubpiN~cgUO1>`TSwxLDuxH=M}+4LOlEdkZHn|VoOE)j|9e2UO}QP@0DW

r8EHCQZlc)4aX-;x6puR1C!lcg=E(xSj(;_IBBY*Ai$Be5aDB+Dj%*ph@Nn z9LAo}(tg!OU%0sN0Vf#Rog=?`WyMk5Bgj>oF*efG;RLKeWrZhTgtyaMGSkU705d?$ zzan^B<}9tFlH)Xg4=MU&XXa~B9w86FR=jMTcTp5KiD4)+?j_G1>BLxKQzvTADbAiE zln`q^h*|U)Iv~ajoDvJ6zeBj`VTGz;cBvFoGOHTMW=^`!A&>IJ6NL31Gg6gcRt@Ex z(pH_gO$8QAWH-z78;&3r=BnUY%pz8la)TD3rR&RGc*C5*nv-cveO649+50~P1c8)J z-`(Y}oh7DeqeJz@?oa7ll^hYy)qZ-l>4Y2h;xIXlB_rS_kNM8NFyl8jrvLBjzA(sx zZZAy0wObY%K|EobI?uexG4ivdv001I{c|d|sgQwH3Jb%*A{a1dQ z*s^|%D8S)d^u}aj2n*9<%=8YOO%TW#j-SA9il1)bp}!8II&S!LP<0@;-+_4VNbfv< z4&&(^yWg1W^PeZ;vvXkAgEB9|ExunxCReI}usQD36D=1m>bGa?_YZo=@0?%yIwr+J z3)5wzKM@{9M$Di^?Rw_DU^_2BK?}1rlf|9D)x029z~h<2qIMSK){(p+}^ops6rjQLaO zo{jZKL_ ziEW3^4lQA}5e833-f5z4NQBvYmVbajP#Sy5RzK5zSA@8BQpWCa{|sZ`S8Wqunm^ch zG_7D_suPGqa z^O3e@N5y>$;#OE6A*g(y?FCHIgUaUbqwQ`bzXK=YL$Pi zSB(Lv_Xoibqra_B^GC`PWg^pFJuQ~Cs`&l7H%~D9$3q?Eh;Q=(37OHykqsXEpN)^+ zDCvk9Hm6OCYT-WV+k6bJnH8U1Jhc5Sd~)6u6X%@rPkb1QJQzR<{k4P3s(2{xEbQD= zSMKwW=|tBDWUH_h)*6?S|L+1~_0vN~-ueEzT9Td|Vy5v^I?}Zp-LY*7^a{h<%4oS| z)+*KR%;MGaD@0d1_hZ2r`1<1fy*$o;Q#0_I3rWYLOYFQ4+)=4Fp zNNEKG)9$|glZ-z7DKUK4M+l5lEvTNE`P)rVNUk-Wl`4O5`5zU5BPDVLChDr=@NUG@ zQ-596byBZou*LSlr6AeltSdIw&CRbfowg}(xO5ZCAWAo-Bmfm1fHls6b)Po;jFceF zN9Di`YC4zx{F#H>!4)VZT_vrzu-fcUNtZ(irkjPI0lmN^Oy7Z;r?eObS;#N zh?Fb5BbNUiJ)Qr2v{%lh2FXmSMl=o79GFQ#krd>mnP^gDEVn3Nb(7^??sVL?nMJEiw|-U7h(FT zHxub-Qr}EmPkg*bRii~1#w-(>P63yT!>ow11ki8ZVFEe^E0J!j+=v{FLv??EJkDS@ zsSj_Od+F-wR+BWq2vrQ~=XXfxAWk?yiRU6i# z`sD?l$DMv``Xo9#{VuA`8jzFFpz!Bhe}wjr8t=NcUYo@q8A^Cp`8f^-{<^GLBi~`- zSMwPY18t8xb!~UFza=@q40lyc)#_YCxJ9Ax&`LaT(W0V>r5kUMDQ+`PpgSZGiV_|q zK}BUgpr`eiy2#jDHG}w8m#2o$`fx!`r!`DnV`#JA}rKJ>k{`hcXzn$?=%D(jhcV=DtB($a$hmFjMbEr(B*&vrb9;JvQUUP9AH;vxd5o)#--dUXqxz8Nc@rovK=sdO-N72J3h$JLU%8&)u|A8 zy}FCi39cvFs;F%Amqei2!65qNC)~z|ABnDsD1~Kay(YyY-7lQbR3rl>7Vx;EDV5P+ zEHmOFLko$V^3oJIaN-7G>@zXgQESEByY)s2uF85fyVjRMG9i-l7aS znOhebMT_B;>hTt{vSKKV!4IxS+09_|wB-zV5qV6|@CvTPE2eqh7fBt~lvt3IM09Yi zb$DsRuuGG*Rqs{q_84_e(KOXi)BO`36-Afa3X|GxMkp~jVk#6h=kXj&Pg7XVUq_p; zu|d2Q#J#qVxjE*p_eG~1Kh9m`4Wc)N9&sKOO>`B_?q!O+8#O}^VrY_+g!mtgeqFz4*pcQ^K#A~r=3~P zM49vbzj$PbqG!0q3GoH4)A!wJ;#8!O9HTf+6^;Cr&r1tvJO!>mnljO?(}0ZRY2Lxe zJPJ)nT_wMUEhx#`o2k0x7Rb zCv}5|r=YNhzd+=Y%eO^E_ZX`zFLC3tuX_AdS*ZdcOb_5lLz1sdxKfV0NHfEZB*v-! z0%_iHe$cK4Ikk};w~ac*IaT)1SQj?H;HNVAx2^;kHbLz1xF5$K;CiK9HNNzLaw@1A zh@%UWQJkgjDsbsqFQLAzs)h*7h8Q8lIpwJEe8iN6bM-~I&03cFBBWu7hQSQt~mlc9`5u{O(R$}g>%l= zA&z%i) zu|u5gD)1Y1ZTIA*{*13v2Nx+#2X?4=8H`Om*Z?YLC|>ng!cghoNX&qJ0S3jXGvV9w{Q&vEtAUNF#+t_Py^^lInlsOsdmb^18~Mp1IPmU%0x- zLulz4zK+8}=aA0G0W@bibyr=JdX?@T^)Ca1(nQpOzKt9(#ckVoibZ8NAwsuXkw-%4 zP*ZyFgtY8)3k!>tZj+WlvFQGzmG3cHOae1`bI~(Wp>?QZ#y)`Zkp#(OZ>l?J4C9!_ zWxCP+X2#N2>AiDh^hZ3SreuB5QZI^UBn;=5ntcSPRuyaI^$^U#B_0mijY4_D(9T4GuUf3_X6`FYhr}5ISn@`43(Rj zYOZs?mI_ugejB|?3>0qWd!rCn?uzyn@AP+XIjCqFHMk&>-z^@G9h>XcsrlQ2#K57tXTy;12hF5CMJai~=qeK*xu5Q@6*19bWfPa$G^Mf2ZTsaA;(l~4dA3ba z%r#5A_U4_p_8Vk+lX!QogE$`8a2!z|Yyzs3ki=EI)20>|izU@bpqsVi`UpDOv z=BwAt?m6pO9J(?Ah`ZQGejZ7#8r+kJ^wDnsp`^h6fir?%X%h6zVpIuPFgl=rZ zn9_LrqcQOb3Bquo8##{U1w~z!xqk9VxT*R$Agxzvpa?@XE8BlBifH@eDO;4u&5Th| z;Vh4+E7K~HRM=4pahh*;{gwU2K;bd>OLiFSm{*+efB$ynbvzS>AJ0UHa+xYj^3Jdn z&!~RBO^CrgGvN*0V^XJm)FI1Ec@C_aAuW-v$*(VlBF=a=UbY$C8~tS5^oTI3qf28j zdy#Z`g+lE#KpofRah5W|ES9+1Bdg-@E4i={w5=ok0T@n6jxf)U*aS=+FDNO}m$Hbg zOnlL&g3?f;HE0aC30w5UNYTCZ1{cO)V9f6A<9?_zTQB-1P0S!_x3lw*cL=@iI@+ZZ zYSJssUa!1;(EMweVz=9qA4@15M0tNdjV#|SnX6jcJ5c__)1c1*ZS`g)E7sq%lKD$i zUX0Z{PFXOb*oM*CALgagcRaT9n4#Iv88VD2GKMolP5Pyp7T=LpkJkQKJ_l0HPm1D+YQdjTF zWAL$aamx5kLw9i~jZP?joAcnl74yS3inwtWSw(!!rxd{WJtqkVR3Ed+*pPFxwaQlH z;jSe`k53_{Ve6GvG{V`FvRNlU9Wgf1C3OMH|!Dtt6JLp6T=(B`TxAsMhua=v6Hy2hjg_g{<(rFUdaS zBP!oW@kK&W5MWG0fxaRdFcQ(A39EB(aDcbQp*V&86bEbu2WRl5IYn%+s8TwK3y1XK zr9D*{jr*TJFgbYjX?0VoSKg>-=bTx?dVBT4jyvy$V=khY=F4pv?6!kL99#NkLtPhu4}OBtb^9gaB)-I4zm-?ZO)9qK_dB_Y|@>zH@>2k8`$yNJh(p%%eeHD z0b^5uqCv_#b6ti7wnAoiFQh~3z)Cg>unN0jKoWdv(r$toa*?-a` z+k$M`ksHf_E6phP(ZwYOqNQFmE_{#1cg%=leB^NHk_cJ7q%xkM^glt@v|BR)k1>r) zjZl^FJIw1SxQLJLg8qZEPV=lT62U_!-)Elj*Ps17=IF_NlDhiQ`4W(uq>JGMfBvDA zQHoUOv719K#`a{uehcnE%IF}Ojj9?6rl6SkrOjC)fn^FpD~!Jnx|q#PIn<>V(5?k1 zIMWfX%8|&^`ht~-H*Z|0Hw6*YFx>;Advhm?)*N%C=j z)xMf3PL;(+H5`SPmP*TT>yqyEjN!k{d-hH7aZsicDoxXBkXv;gt=+cx!l(3j&BrFc zbclv!eapHWI>ws`3ikkS>&hD|L+_Qkik7!$HBz$+K5MK$S9_FRjr zQA5on-8*Ylm9c!LD&nRmZqXimcCJO(Da9vxMM%_zme1fafDYh7@Wzh6v}Bd$Ghug3 z0HJBY^Cyu+Fya5Wjjjua)EIyAeEL9}8nz7%r~>NDjb?qi(WE zFUQA?Uf^;)Rr58z+Hkp)cNK#ZwH&YEftw7@UJ#VF39ufuVJeC_K^@P-_5EqrpmE(F zil?J>l>2PXWky{!UUhm`&Xw6RIE@XEfZn>Yo<6`g=6hmeP;)ebDtKP`d|{`R8{ggY zHwiga7V_}P*vJX>ShZqSVyHnjYMCBfO-cQtlF1KPnXLEObz|3s^DydZzHqSd%aWp? zK)a&fIF193;&aw`N~g>4YRGfk=AEuS5kj%QNQg=xuVz$Jn{Dful(c+kT^HT}?bF;= zRo+yi>OBj+ANz1OpTSFLewnVLIHZ@4$;7^BT$L9$A*A!on-)Ba7P9p-UM<5%1yw@< z=2PtoxBX@zaEOei4295F>5^y6DxdFx#Zj{b6LMnR@V!xibC}WgUS!FEc*ycY%cmSG zaIWcv?qmr%ChYZ@;dlp`6ZDyl>9zB$mXMW+dJzuaIHegGxRWQsqH755j?k5o9FeF; zU#vX(iAtl3Fm1USb)1t8c}-erMvet>Eoy^I*>!aTvVL{1i1sY!6QibC9I>DHMi^ti zVe^psS&WgO(IT{yyM0;|s5-1jt((q=umZ+d0V{lq5s7YrsaROJW%)ZVrsiqp067cO(K%fPE)5}w7|C#-Oa?}A=*5^C+A{Gt$5e%F>iCv-<~5e`_`@^sE^b{KYkZ3t8DcbX zw7&(hNU&ZxDk|cq&btZ{!InkObw_BrlLR#rs5z?P1dM;gF)ZM&35)EsZIiheQ>H^# zGL5a=$^d(Z-6cXBHue4#E$ijM3u`~@sMK5r|`JKbU4goYkEkR8?L#>>uW zrZX-RdG|E!;7@n!rqyX~%NT?Sgkht1K) z8!tPA6?a8K#Rm?JuIi~P-ncuXOq-d8(XcPW6*uG68k)i)3oyglik|=SXT}(&=a3QI z!~m+?$oWyr+2PtxzH`uc?ekJlV=_|Z(k*l!8`ovfA^(n}>7p=CGQ0j`Jd0^3<_e9^ zT)-X;Efgn4S!3%rX)<-EPz2mh)eqKiw?sc@*bzN?JS|20kF_NtI8DF&tkDc`qedou zPLk!NGQ4UmTc&cSG07>J=JOu3ah6^`HNf!nOe%`L+ftkxVX8VygaOLo7t#i6{-3LQ zb7(fgPYfMp1^bpFet@BzHz9ZGV>>@@O4%a+=xuvb{S`x(*4W5Jfjch*i1nyOkQY2| zw#SXU-qeTu;x8d^1v^!*xVev5CPAmSX|9O_?GFw%i^c^F< zmI2WR4be%wG@J2TsK6KX{qh%bhiyoAJP4mm@(1W%PfKpR#pf0N%d>T$42uI>IA6`& z3o%U)vd-JG*QBf$-Bhv9*7!MCohOp0**s((K`{w5?=#5`1%<(E8pMP?#!`OK?uL1( z=?D_c9#L!z6^?|v!Q_bJqf3e?nkyD?k!Aev>Ez;oYpFBSIvUIUQy=A|!L!H+a+)(} zfNkMl5=uYQiCo|3XCLDNpW53^3*tD;q^d`s z5RChY(G`Drk*mVSPsq~>GjK=g+Y+8ePc7lF%1=c}t|2OJO-vObO#7RPW`VyE_|~)( zj%Fgw6|4{)o=n=JZ8v#uhk(ElW1mZ{ki;eR0LUn`EY9j!_v*_ZjJ-lyB1LsrK8}oe zL5+U&{Tg|^>+jS-gr&-|*k)c@`YB^#&40Sjn`FIsf8NTu`Ls2~8ha^^pJ-4*YgWZ* zc8i_NHZS-NjGg=bE(f?HZ81$;%6y;U$xiqF_D40hwN?E`ai)G3_fW z6slxo$dJhe1wPiZY`)_b+$yfzMdsq`s`~hvCy9K~eY^ zm1dnkbqJv7ab6B{_}Q{9!YWpS0x|(4#dxop0fQvCo+P2npRcSM%o@n9Xk%e3%A!Od zhNes}PpJt!Zw}-T&fZ8my$rqIXw*_cq3id^=pTt(Tb}Qw%Nuw1_qHbi_C7qkMR}C# z-Mpl_o(H;RypjPJ**fGjt2t;8_9}Yyq%`in{J_T~p2(KM)_jB#M@t&r$<;WpV&u4Z z9O!Gl4*5ILuY>#%1I&x__WR730Im8M2=P+&p~_yXOU*&8NzoU|9)c51>XApdR(oX~WRFt<@n<9(gIch@Phbr_hFv}Gdav3<&Z^CgZRg^Dnvv+)%AesN6+TrB z_jE-|N#sXvz=@q7a)1W^D~6bSIXk+)K^pPh?%Vgv%6UAX@~09!8haixZTvy#SoXHz z`LA5N!+t%wgP^P*Q_^Dp?Pu2&wyvB!bKQyDTeQG;rzRW$PaJnS$*p3QmqWA4lhSwc z+BdX20Jz_)zi~*W7oea`Owxd~inD7Ytu7fN&eOGiDz){#Vn$)yBHihMJHw+_e3F+srHcRM z)@P%dX83Gs+x^G+YPdW@vnC?F3Ei!T$d`G<{t-oE|6OvZs>3t z4$iRFEFKgEk1f7RyeT!Jdxfc~xy1dn!169$F6E;0K9l!=4M1jZ_=$NbT?2g61z)P8 zMPWo{`~ebh!g~l7Z=;{{jBM9c2@0m}NUg++J_7Q7d?AZ0$dJ3=ZA)X)Fn{qb$}~Eg z34)Hcrlgpen2Ex*xKN^1GRiKQ8)Z_=lLb;vrdEGt?8;y}71}ouvVV&fIL@dxsS^#}^FZr)f%2J{lNc;U|MI@6T(<8E_o!3o;&-RbkI|g+vlZJs( zIx}tz0gW|{0gn+b-?c?L?PM_CcUt=lv7XFnzE`ZHw4KGr$`E?A8tby##9=-JMele| zMdm?ES9MS_=2qE8Gelia?p(j1iulLH$3A`DgWGEE8b701)Wn|S|9Ec85rT@8zQ5*` z!?){FHoA_nkw}N>`^ncjqbd-b{6&=~AO5>WCdKiJ3G*)L3C9x?G^O!;yTk*RcX5D)s!9C3$) zoz>##?vA1l?j+VX51|>pnLyEV9xs^wW9OyO$IH?T@Lzd>Tw6Bo{s+Q+UCxiU1!sN` z+gA9=P3VaEileJ$RM%42*`7BbYAdmcGc|rg9_To}EDJw%xO zV-N53#cIWh?CcCX*X}suGVlE*=}}hk63qIP^807^CuMm>5u1s}InoKgfO8mw_9nKf zFe+i$3=awA$Eiu|l91sTY)z$0vgWo+Q536XQq=QOb-h4zNEduL|$ zd5#g4L1v_m*(=9FJ)~Qcv*OH`PM!GMiqf)|pQp4ECvwhXV^*^%4(v1U!Rox;m>79S z7(Vk6L6171Q#A2&ja--}ZWQliOw`|oQMt=PJDn_?cwY2=-=Wg|ko*#zxPHyf!?DaP z81Zru(Iu-=kv&QaSY1QgIrbsc|1HyPOOUqKJu2!w#D9E(nr*Kf9mQQ$j7uqeHL` zE2!@b2z7S&C!CWuj=>ixnW~(Pp+b!yk=HFPoN-c>u*ez%US$z(tRD&Pon+z>NWdGF z{*FwTYVVc;R|9)tq~ma>f+*5H|GY53Ps;PILNbxb$6ThHN+Y==cs=4G5EEmPTkmH% z>SJUst$v@)5q<&;YX_g%v z{h1MZK^6;&cl<;`5zym*Xe0bZ23SOww&0iSYy1rTgsZSDGLw^hM4&mBP0v-aeiAn0Y zW}tYhhvZ=$-PcF@t?RUrl$h*(rSMW2wA>+H9FWP z5!9;mc~VhX<;Uj+$0&6~ z_Ej1oUB?j$F#&y&>3h@TbF(`gL+iZc-XpaDCDh5dIv%>A#i{J9zoq~|i`)A!RNq7H z2#vSw51w3C7ar}0#F!o(2p~wO4>qfqy2QKjsS*XQ6^<-e)(WB@UK_X+-vP zkD^s?m_<-DbDcN(YslsS16^+Dir`!+`sMEIzzStK_xj55*oX*|2eO7l#psZ^o8_p#x=y3^9BI8ZWm;k2 z_dU(}qTGNqseC7c$Rqv1PlMYq;<7mN8OviC{D-yg`|3z&>?XI!NsR6}E45X9I^;nW z0cYi?z5%thVS`kyw}w(*H*T3260$z&hZ7&(8cusCh9&^$9?FnV6H?FLKamx}tI&jM z;u_omTRJAhVUz{!PrH?7o7H|%bf4xFBo#HpWvg_=oRwsVbBZ#B$gmqjbDM;k`Js$< z^X_LV88ZAc`f>5l+++1osp}gToKs23YNV7!)>=pd&jECy7&A0jfMat5EF4iR==(?)bfK;nZ}n%G9;+`zFH6OpQlX8$VOLYT$k1!NB26oIQ3*UMHW z!;3f@*@RophCDzt>oF-J)!8XNGMbqkD3&YXSs#Q$3q?Mzj%iImZJC3aoj#zc{3mxy zrzQKNmAM4C^>6t-oWmsV9pMej(B1h40kZ=zq@xv-15OUyxbz=bxj&)xo{ zYa$1*5v>v{sSe}yRPtS4tL9qjXk}?CY)0n0u26)<;#BYV76Vk-qf(&kw>bga1h+@3 z?ebMKltX~reU2|>Ig+OWrfK7Z+6Ne=Ur68Ivx>9L)m*r^Bh^0{3b>;I@vpkx# z&{j{f`S6>@?kes8Wro;av zy!?BZ>Pv`&0?w)SpHRt1)inUVq}xV6l=wE5J1yHlD1kUUE}du;a8Av?RFTl}ZTDBQ zZkV1!IR2my^ZE0SmUw}kHM+ioU$@uHx%sYU@Z8_8NgG$xoA>q0Vf#zP7+D}qIr4Uy zZ-x532)0t!0ox*o10gq#kO1*FjlWY554Q7J3?e)H`I8^viYX#6hYD6;tYaY`7XO`C zZK0egH#tr)QPTYUJ@SY3?jHZ7qgMAWF)x{+Wp7|}(veWleBr~N&NH`n5auI@+t}gR zezcAKV+_RDNsqM^7Gj?nPL{*6r7c-ie*tz(DCF3ZHR4=$9kGyu#BqbU;J~tPj z=SoaS_NKnsLSpMhjHhe48ot|e8jhUHP%&MFhir}u3c9@nRt-^AB1GJ_v_%hZ#O~P)AOfh`R(}UIoVS!Jb%R-781Al9p9% z+@0q(Zt$dY^K_UiSE6URYUL)@q~YNnieKM$oy1K+LgkQm_SOWjTFkmkotu^snMW!mGhIm<@B2_`fZ0R?)I1V@u6MWX{u9>D*lh} zou>P{s)#|1y&L&b1bq!KBZEnT$!;+R7koKN27JYz4ESZ!YMmsxvEJ(`j&p1^`xAIj z`Yt^j$7f{xHtTVZ;J=MjBqV4twdK*%tufs4o}5a5x9==zrd5uUOBsGJcs+Q}?S z#GV-H2JGs4L~>T95LEKHeW@5wc9bHTo zUd<8ER6MzoW~a7cvnZ;rwrvf*Zw?_S+i8^y$Mg>D(FByo8zcg0@ultRDlzniS0?Mu zbUCJ@(MHFWGu^~YJp}xY=uu8d!?jjUMfJMIA?pWL)ah<>gfkG}ny5E9M#qnzvdM`F zgRXy`18~9aNV-CdApxi67Ft{}a)wW=2;O1D5aDQq8nnKw7K^{vzKY_mD%>A^H;$K& z+-MKia+DN z!f_tIG2HK03ETpM_P$tnLKK1!i9Z18hs$a?Tp3(8xh5*J8wL_)L~5YO3t4{V#m=s4 zaMK5Xzle5tpwP+u*WL8rOd{u(9V}a=8(tsZ`xA%UB&YV8r)iD<-^o{4eY>r@lDJc= zUpCQ4Y8jOMAL{}6y@sdENUm=Q*(c2tWz5tgA#8go>)L-B`WxC3b8?@dnQWBO6SYNK zb2DU=^QR_gpgORvX@j9rl&L`R9 z3@UcX)?7U^$g&$JmNDXsocNc-VPn%n(u6+9dEHRB1kt5A!#tQw8=2sr1;44>i}_t1 z+-8BMdZ=6wNKyq2lxTvxX+fF0U`pUnjwii-D zYH7a~L~%}t{^-6iCiMAqL7hf%fo|i@jQHJ}-{{44`v+Mu)FD@|!wk>QpgBJv>YC;n zV+dP%6H9qBlei3`4(1pgBvOhHUe&v5c-jKW&ra5D68=ILJIPwkZbeZA3OPCaww zR#@U)*9ri{7Ys2Owb3n3y8A&eGDtIpCEe`Lt{Xx7E^?{^!8hc98KPr;an-8X-XdfZ zM?J7etrR%M#XW1dvRD{o|EP@!X(!*dX->nZcG1~+XpzwO!iyyZYIkW^*HDs;z-H9Qv-d~7!@nr zoKcUHxuF`GNC`!R8*fu)%QOZY=YRub)sGK&O{vPf<)LQBU@=&jRJcs)TwWRyG!t1i z72xekHy|(VB?vQf$2`T}J|=8w+OCx{_P~O{gIaN;Hx&aVXg5T4nRGJmOZZCQ_zh3P z1f((e{^GoNiE#0;nB&_Fs;N|@8!p5$l(5oo0iKAcy1So%79Vz$`CTKb{Km(nDSKu{v;yMIm;H&N@&$2WEL zEiB+bLNcT2k6)*sH%1tIp53T87np^G{fXJ(VsbFOAxC(U_4CHIcm2_%hKYhiSWQs* z8X37~{94dASs!eROqeYIIPp-z)#55jY*bYT^P#(IY3<%q9QSwJT5 z1bLVt9cD;>^{BZs!x1!|kNYPMtKXM(yOQjDbU4NrIN`i($yV3ax<}1>=-067hOGXd zjyn3up+xB~s>4fZ9=42FOgKt4eiv)!j6d4iTY+FM;}RXytW0g{h>gJ*I&7s8;Vf6l z9f7KVrxT|6z$a$Uj{c zmzhJv`2Mm^+<@-#1jAh{Kywfsu(5bPOeLVV=_OOvgk8OAm4|=DRnIcKGSDZY>#a(r z{ortSq+ANBDIH+~`F#Ycq?(DEZDt}R1C*Z1SC(W=QmS+qK^GAOElD{3ftgt63})lM znl(m+Saiu)-WjJzTqkPI*dH#ysu}RS0sEEAAsHo4rBcmLWSL5gT+z>wu<7^(1&nYx*ppK-HTG%SSD+# z2A~Cb>im2kK7iyrhiAhvN0H|9M_?aAlO$nOoJ8?iG*8P342E%k(=peck%e9~=3pkE zMHO~~B1^Vi9Dg@bR!)D5v|)d;nXp(ow8qUqSA2wU#2Bo+RD`>;*pKD~oPU#{-Y9OH zni6?=xgn_u`qa^P+tW$J$D`dLj0kZvPGv0{&=48l`w=d>HbFPIqR(UK^cP=^@@=7!*tzwtq=*XtoFTAwJ>KYJ<7#s+R;%kj zOsy#jztLnGKFiK+X@$%_G(<0DE@V5#CP^Tn?eZpxC{#P` zsen>diD`nfY=>ZVQgnGX2bn^x5`cz8=#7@f@+*3{0ZcgDIZyArq_e5o7GnYx{J;oq zBy1jmwe=>=FD`FMjA2szV@$L|dpBMkc^!YLdYK7NV^qd{#7zNDJpq|!#IWd zFEDN`i=g=OCNfHMMdJB>0$2Rw9+ExS>tm85s-X(Ue=!F5UZ+rZub(QzAfhT(S9;6Jb2ry^l<^<)+oOobmJ29fuqALZmu^ z?zhTV1sgqo&-l@g*~s6gDq0S0%;%l`5R!e+CbMAH~OH!NZc^6hXl!9ioz3X;t7Ds`b!48>`Q_ zTDs05XPb)W`pW5CL~Wd(Ol(G3+r-7`$OSveB$X;tULy$BhNPueO`yf}R;uFSb=EvP zr<=XbnZ05ZCc$Tfo+J*;I4gF@i9tC`35Gj4E#{7{q|tFbO#M{WDO#sk%{9gC=Yi@) zGgWwNQ;3`@_lA><`Ca|Be?~Yq(wdH1_?}u-VC^Fy+Ks{^K9|{KKtsC4;mzqOGf5Xr zYYMf3Ri$w?61hbBe!oGN@e1xq>r#A0*ZKTR#H;F*Vnab~bHL0+iCbzSLWC<{k^aec zXzPiZngPoZO%o^Y3WUvNINqV9hK~6bw^Xr#Sn*ouV2S2uNm;o2XLy@}ooIZLIN7un zGlLiHjdbb$Aw4_i7xrB!!VXeuD(&xi`0C~MdnwwV^4_`9u2#W|G6(zxGKCZgEj+3+ zTRhV^!%d(W2_YpT*pVxN?P{p6%tyhK6}#g<1A9J~%ucx&8VZ-S6-^f(-@eFpx%D

48Z4ml)kaez)oT0NJR6cd9os63G2iAgnf-=@;N?uSDe z#%J4S-jxx4+rCuM!Gz1CS7G)9UXSnT>EJ(afaRxxSG7Am)!H@h8wH|G16w5zEnbmf z7gO|_7Zwu56odNkUe)Gu{_>wj-j+2HAxv$D{Yi413P~6vOo2oCWgpKhztAxEma!Z= zQkoX~q9}4sv5F=a(VVqbKAV1zPWT*{qr zI~DKU07pQ$zol3$h63?+M(`%fjcedZd|QJ8<-`gSq+}-zW=R7JpCEg5?ymkzM2BF% zuOlGV)bh*~6x7hS*A;Ud<^Vf%4yvbIFH64bFnP2fpn_ zw;JFu4@5n$+}x3&H3ia_<%+ zl@D+=---G2H_h1FcO+Vqaj-djlkm@ta(>Zht~`1FNwkcjiw=ThvBo)89ySa275zfp zVmp9Vb(Qi(UXK{sWfj?rr0a#Xuzg=4>DGzBNDq&Tw1iL{fjxK)S}LOIPv1UY)J%0> zg9>TCvf`^$c4irlr}#_=4~M^zVim9|CF7)WSxon~e(vr5ug^!zmb8PJl-|1O#r5E9 z&Y}BxtjA`Pb&}F}p0$FUb{4i_9J!qwtMC=f^~>@rC|(yjqav!zO(qHjxXAXiTREG&MhGc-wL^x3$yyIz``*9&r^j|i4it%}7>>z3|?cqWKJUjQWf}yuRguii*t}z+z9KrOoy=DefmJv;B z$T58MYL5NW$Oqpg+zvgmXLoR-B@KI1R#mE2Y;iqm)r+-TkC-LnVxL))rvfNM|FIu3 z@eGON<#6BBFtRe*i}syeG^a6s7h>lI4sj*))n}@Xh0dT@Z{YWq!;aYVvC|7E^&rk} z)a1(??Tr&0Mus-@cc%>&r=1n;T&BIpZ15ry7OdE*;WONKDfZmFxX2U@#XCGh`j*qm zUtqqtp4$9E0bNi4qo4G}+JDDVel9#05eTWebabyS23Y;y{D>VYwNm?jpb-3 zx?v92{XCcz@jg=5&=2VRQ&Ux0%zQ!)E;)f1JN-D#GH7u0HElLIv`NLnG|3XyQMfT8t8ln5>Z3ZA6|-lZ-%SjTW|(idrM_xKsz<2DYO^$U0p zWx~3?-WuhWyOpqLoq(Pn20IQezO!z-Kc8rE`ag`OG2NDiGUntY3I8GGM(h_a9kgqE z7D{jwF1JVUU;cjK%OiWttHq7!?iivUW31bd6)xr`wRvS!m%ocDy300a-jeRZq{-#> zf0In~sbT(X(Q8b(W|vw23#41JI;z_+0@SL?cj zu?$pQ>g(}cPNqk*$5V^BUZX}#!en`1`&!uR@EJ5aAPtW#e)i&D=@!{ zZl9@OcQRqe0?)UxgF&u*@OJG?wp%L2X&=?19fo_8knLD=QRVKe-s4*O3O4nstQAA< zd;<5k?4fIvw$6#DzVcRdA%T>z@DHW;i&%-|Zx4TNh}sd4eZj(;EN%4HFc-6lJ?`c5~kOVZmr_@_87=TDhqHU7eOYuW)RJ@$TF#oK=I z(t}un=J0hfWauLURtNNy<_*A4Q^g*nXC={5XjAZr&Z%wQW;_&!l$)3h8VLZw)x6h?t)GmF++D6P`5o>OJ7cxz4Olyc z$FcS%@b}xt#le4KrZiaykX9YA3(9kEhZmDs5{8$hWxR^fUDgXZ?MDFW{fW%6dul2>Rk=ybZqARE37?$(&VKx{4f#06tA7GyfG^Fz%zFGw zWeWQ<#A41un`1QMjjB9@5z?nddnj;jQhS~9_7;6SHIWfsc;i8wo^*n>7*|BemQXy1 z6F9sxg&JbP_tD**S&Thq=8LOQBhhr8wK~wT%v_EE0f|w^UDujO0pxh1%o$uEiVOS5 zG~FvAur@b*H^FX)Lyq7hM>hPJ18AHM#DKbRRU2=wmontsox>&0Y!tz&+T$)C@gK2s zl>j=)+p77q#6L7#()zG?cEd<#Y)BQTf0e=yFL! zHxU1UC*LFmoF&o8H=sqm8Kw_eoE0F}77Kv}I2r?PTKVfJzMD)*n(7yI>n;GCjiZACpx_>wy#R0P$V?w`EdG$;6|mQFR12yPjN>L zS|L5oj6ZLp-@4M3WzN(+TJ8Ts~;PTXj; zj0naLwmDg^u$pg;e-3{j+o$4gc@@_ahN^BBLQNi8i4-iroKLv5~kWEH;^ND{LCmg zBe-k*VmI|{H#7t8hC^{(-%z<7(*t4e;)5(xHncVc4!3?@sz8eIt11_PaPj$7y~Sm@ z-|@zqfNNr48sae8jE)|3z>Dk>(Ui)RM|0o1E*hPo%GX=FMOAk0} z=0ybf>i%sSL2A>voTyYzimzVSRz>7mj$wiEe_wGg}5G&loODj>F6H-A&`Kl<@6LBvK$}G(GP3P*VwM7(Lkfv5Se`dK_IY4{Wdu ze{gT3i9*%=n!GC7hdQl0vm@hug7;bMBco zWlgCaT3`d4jLVi(e{c7y)iki@#{`ERCikyzR?-2Zry6;A#48+QX#UJQ8z2Bi(ww-D zj*IOH8#ZFgh~l#f5&=^~!WSc0UQ&?K2gKFLaX~2PIjnl&(Ey}+C56`*$=8tFSLeP7 zzZa&g4-}9M%a0k$OY2#}$MB6hJkgzX#kILczArnlqR@VrJ!a6~kJ+Kt@k&%Fbn#Lg zH9?sj;Uo@Y908k$?8if__GV)!yYE`bl0fD7?v&R%WeR;9lz%R~t`ezYzoT36`!$Oh zBuvFBMC^*}x*O7+XChB}iCZ+h)5)QxGjM#tB4w;Ub6uSSRd&)Z3Wv(Ex#hvr6q3-r z#EMG1SVsFbJKFwB#NnEtc!tW)5|VO7ZwZ-ekBbgxID=1T?z)%8)Xo34Lv@UDk!K;+%;$NbS9+lSY# zNxT_$6273N)gVM^YOSZv`g!bx2UvQC6<;XB~VX>h-=(dQ9or81mF-g~GAg&iA*bBa8EWwJ*(T{S@*;SBx@Z77s3byvSR)k-8 zyDQ3__Pc}M3Zmr|5*dBoVzm@aPWdy2Ahdoi%ENtm|E%V=4Tg)-le%g=|Hqwpk%=($ zaF3v4>(&GqHxM5le%8cruYkoBjCxa~GkW(d(h0>r{g-3xvy)--M7Pum?3PaAr?L8 zVW`oS+x4iWf$_$ckOc-Go*)nRE8EOpgMA^qwEX+My+1{|KCnu6Of-a2?CJ)HeF5mp zp{=y+JakeadVwn7&gpn(_s*b^)&ER6h~1>2W%W11oqUcvb9(-CX1SASG0I9DkhyqQ z4Ts5SN_UP6uTQo?nUT+jcB{iHe55QT4x=FKu^~7JrFr;!ggn>$e!CZYz+&RV)c6V4 z=f1qYDxTY2;d{|o)YE<*%^tik=uFRG(SSLx!DJ+d{;>+{R6}1R+ze5{EaXSeq{j%U z50?89;4{*2aICsFqeVdVInA9vSA2zYd?A!)YDDusXb$M^+uhC7oI*EjfbDQvHKpFM zsB)Iv4Sy-eDbr%IzARw4n8tn~a)qj}uZKUWn0GY0bOY*QHMG#HWu9GV)pq%Fev0Lw zA4e>Ipuh8O)cVpHfaJpz8r#@R(CRneUcH#{v<`!pL-a_M($tVJ**9TkhlX|i(u?OC zgc2DLkJO);GDitXH}GAG%*1%rObkE9lMEOjWw55<{68K7sy5tdP|1fD^SHaaR)h7o zQjuIxT*!Qnl@t3TfUtSmcDJL=cq((rDoW%FPH-Z^A513kh&@qYs=u70|;^ zvAxOoY>w5UCu-mTRlV#uctoF9Q*>h3m0OZd&)e?HoKp>s+}23DD(h`;Ekq8&WM3n3 zW`axMKg4;lS#2jDa!ON9e{Bt;`S(RR(H}yk zI>C)2o}TzTBo=h1e_Br?`6qV#JyMrxnbC^KL+Q&5y}eX*GHisCGMG=DU>a7Z%|pDv z0xp$2p^(`}_Gsd_3;vJyVl2~L-u|f~W@*{F1b2dK!gut(VhTFRdephXDk?+k1425C zWlVH0jcCf2{v4q{U4A##^71uhcGt+X*~wf{P{Mwn_I$7&E~X$n`shwMl=^NpJR)2!lMbR8vtal*TI~dJ-0VL3c=6sfhi*P?b-!|e z+p<*c*hBPJ1D_;BJ|6h98@N$a=oP%Ez4PuW>=;`qlY#Kep(xf}JLEG$d9nf6#9% zI5@V0B-Cem0wzt-ibko2K6SZBVnc;3gJnbfN&!H=?vrH!1aj2hW3o>cTeKY6RU@pg zFp;ElP|IfQQM^zroC*sPH-0KOf=r> z!DACrXq;WuPP6T|Ow`I(FY?xmfFnOB++-d!ehkP^J0YM=oI<=FO}uS7YzS^9=TJ45#OQW2x9Q8i&YT{r#^; z3ky5mr~Z_s!?=)%B;-hent6yD=0%J-4=q~u^P-tgz=3EnvqG)YFnPF)q@1xUPDm9 zO%qd%!T7%$3ct6JViM3LuKR-ghBniwZ$nlyXM$Rja5l^+AdIn$KjVV;%tUw7Emr$; z3a-$lxtu->q@sz?6Pj$dngH;K>8*@=ufhi^6Al1jmMwf@}T=!mPxKbEN9dhn3KX26cg7IrwXRs^db4FXr3EULL8X zlkMP=xzvPlu-G{5Odh6{XnKEEF$$;t))113zybJv-JM3Z%q)6fWv0%V>~a?LR=JSOTZK%_O2 zx2_mhjMqIFh=s7(k|Led7FRj19I;nU=T>1KC@S208zTttiUM)Q7}yS?5gL5umV}!$jG~d^6G*4%Xv^_`8OH}`!W}xiDifgJ=DaOCTt>3or`v)Q@;f0CQY$!`4=2Qbr*TcT+sYt%Zdlr1wg^fG5GPy{=^Oo!^V=Eu^Q@j%rI|4xv+r zs+-fes8a(6sDR!2hGws<@*z6%IG`m7wvb*V(<}FHHFO+CU`gUYVDN#T^G&OSw zOLOv%nZL2T7>=BK>}Pt;i2*tgsx1Vhi|I@NK__LTVQE2*bB|sd?D|844!nwNSy-ZlH=@~i-TWn2+?r@61#P2xS{XX}5f9xU?**bgI$*g&b z78<4{=qH#+ZUvK$_)3n+1Z)$kp;l=UFM0_a$fUadFLSNtTiPzbV*}@FRV;my_K$u( z3a9Rtz;b(PY1@%EqztbD5pSF^`>8y`pDRVC!~=0OGf!_jz0`**JDv8VlSz?Su|?he zr8l6kAQkeOi`bbWRC-pCXf3Y_lWpTP*=FpXmZ=a356&~Nf-|rJ510c(C(<;I2w~DN zF!fj7@hQl)Qy!_JoD!zRqz{?;_lTLp=5?Y2j9Ogus2GzN&XbScy zN@<`dPcjodCD$$4q2Jq}sCp&zCR~9HGO~AJha5U`b44RUD@K?qgX)9Z&z#kboy*hv z1c94ujSz~5mPZ|`R$vB}HybY5Vl1Rl@+qju1VUj^oT);K1|ztUgieZ0!hnVjArtx% z7W~kjLKLQGv8pqthX*r-SMeZzm1AIKnv1s+*GB^&%G*l3-r#sN%yQCB0;|Ie6m>us zj#rC@VeLew{3?U2aaAWZxA%lT#?4fc9Ur=emf05zNX&&jRgw}&^a>nU#3bXPWUG1S z;fv5;&jPrMrkFYloDem{-qA~if+M30Tuuf+2c+ZlZ(>s2f+}_J#kntK#MWfenJF`e zT)8xqMG?>g7xOq^)W=91W6SM>QxuHbPLs)#hW9ZVv zDl_L9_;*K|`Qhpekqw<~P#h?pW)F@F7vQ!9Q?r+I4bnudj8+!~jp)gAI$RBd7Q% z&)pX}78^l6pLQlhOA;w9o+uo#YdT5DXt^R>*QresOCL~Xx`3`bXNy~=wd>wACFD4r z;VG?3SHG3gR8iiJ{4>&P+Rxzzn1TKr1BFjZn)#i724>We0p2lxAB;ddte=w@3{J>t zDj8+Ug^=8uv|mYwaLc4EL<3YsZIqZ?pXl=<;Q1(ghN!u}KwQHBs* zElPQ~ETvWWJ7XQjoI1woLUsd8y-l0wv9<;yDoHf=Qxs4Lx<6N|p>bmtc=?WgAl4Ak&=w!AtO@yD_!T~@VeTjSwHNnk`7 zcyb;Fmo1efk;HO>MXxaw*|?vYpQU==I21zM;d1B9)Sp*_1Y?T7bTD=5ha%Qvv!-iB zgd0xef*7}31M-qjB!4&litcF1Alvw*r{V!Fo&vRSg~(Q?P>avyM!~qaR=ekJ9j-Q+ zv}9DlGCTyUlos>pC*kJE?Oq3mK2kzRBi$3PzLY9#ERB^-OtS;Iwm|tSh4V#NHtbQ< zOC)O`xXv`kir(+!7Wz6Dm@Wio0(m($O%>4AdpY5hrS#0*SgNF11!EXOCY@OnTBr<* zHzD-IlKvXK&;VVuYr^{aOAI)RvYKeyOpW*SxCl|5^E;j&aC9$KecOqih*}_KdnRa9 zfS?@SGSLuT|{H*BEg8p(oP` zvBSmp*#jrmT?+(DC8nv%&T;j}mu*C!-!N88-U7h$xOl7`H*tO)G4Xe6=cRRsmWuND zV(X7=;~@qYp2Er_hAlvO33^=?k3#HPJ-rARbiEey9Mv2qRpSG4k+6d$5chrj0ja~1 z+bKXYn#vBy+2oz(1r~gkP@Z;>#qs8T6f^2YFJ?7#-&+x+InDRIxdI*uEMa39R_Vde zq+cG$ z=cy-?lmi#Ac&2X5IL{PPBd@`QRbJRv#5mCj1Z}U!m%ofbjvsARgaf9|H!lYqM@}tQ z8k}l+rmD@zaX3a|cU8uzK=}Si4T^b8`-e!}41NQ~4`t~_lxFUgJhrofpHd#4MmUwZ zaV(*QOG7)`oM|ju?L-Rr!{V-)>+!f^{(+iaq{9cwvM7o_^@_mna@&(Du^s7jhLAw= zZbUi=X*<(TL0ZQ=hKGe&DTUj;zBq$)IIb7|fe1S4Cgp__6Y-Rho2i5i80yYlQvGB8 zG7%h*3~r8frh#PwPm(EE;n6=`6%j?W^JRT;wGGrtC4vXl5}&Sox=fyFCHhPWZkYKy z3x>Bd=v2s1RprF030?(RCK;bBGJCV=b0ZZ`U(LJp+C z4K(Psmfq|t+Oe+V6BTn$)ZxwCJ{AG=qoQ}rL?hHZ#x1P0x)<*}&c9@4Te24Sb3<$~ zO7r3Vrp7VdMWC@i%bRClNvS3{d`E&Iu@QYjXL%iH7@wW3F}8uB3Y**Uo=PDGHK|Z8=jPG_k2_$LHaC@9~vPBMv-^O zrukj2F0S}m!%$o;Oedpu5+*O=n)2q2@2Eat9y%896SeB3pganJ?vjq|;JgWv zNr)^ANxsB@1j(@r`zgy1nh|-}F%Qek-GH$+vsDDXr@V;U=*5-g5gKR`rZ5Zk4!OBu zyxdcuaw3dP^A!8U#*1jDrgU{`CM6g%hGK{9X7Qkh+q7a%0FPn8TL!{l*fc$Sk;tD(Z%|W) z!UmAjV$46?RNtdEwILMtAu-O|))CUlLkb~Ualjn>er=zgZIL#7cid3RpV{zD$)D!b z#q@-=W&ccKN0|s$!{Np~9{naCFCOfzg}x%FP5X5TW6n2(b1r-m^YPt@nnw{JM5;pF zi3(Bi7@DEQYaOQ)Jdik32B6tnAZNvPdKpf26Z)XdDFkGs#yK%H9@$zJF?N2hPTvb( zLQFOEb4-&}35h@JM}~Fl{?*8_fm(@XW5C4iM8B_t2QPHyam@HbuaUqtQ#QX>NFK8q zsG}Tz#w2)8uLm`(M21NrA64-1{*4o7yhx|NIcZ#^o2begVe$nPwfnVRa)WZAd@T!b zaZ^sbOzkjLtbUP#hZSq_-C*lHo{F(MU^Z1kMbh#j#f?$*K$IN#{}AC*ee;y`e;-#n zlV17QGM#5>O!&bvI|)o2tP?=AVLXbMucL6ub9khb3*Ub>ZE`bC_wrZlA5mc^@D#qZ zsaJ2YyoPL+7Ed$;@X-G5k8u(dn48YqV zrP2#*IO}|{r?2XY62fH15KGytn(lJFn{(ats; zXk7p{em6NU)fr~(KlDY@?1!sFA!~CvFC7V`Jhxwpge+E6twY&vhRTF`lCI)%D0JD$ z%^~VIzdy*OANG=NYNG*X1D_7+mWQ`hpDt_DBPopr5y@T$ zLE=OW8edJ*!?u6B=QaPNdFmLD#knJ_@?b$*`Az;LMTl1q501vnmN|s`w^QENkrzty z3tRQ*qD<0NVCQ5@3v6E6jZ69r3n(2-b1XBFp?nqFVNTR%l9L3I0@OthUi-7D&HGPQ z1$d>)+9$miSBm9XX8#nC+`Q~FR&_*spC~8-CnI@6G~Mijfl6UlDsYGI6~~6v%+} z3?goCH#W0Wo4$6UCI?l+b~e$V-ZNu~gRy3?$5~JM5Z|dp?t}<54yt3&LE#H))0tY=HBDE1VqUb2YINQ*b!XlCv!0$@%Q=;*v4+uvU@B(l zcCKy|GA>rN8KQ1&h7ENmM-4^LUrQIVzi0ii)B7~gbH@~;lZmmA+I2K>eT0?QVNiXV$I0=5270nlbIF1CI*goaV^PaCgQ4gbz?7A9fLv z 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 G0002ict5EC literal 0 HcmV?d00001 diff --git a/beacon-light-client/plonky2/circuits_executables/validator_proof_base64.json b/beacon-light-client/plonky2/circuits_executables/validator_proof_base64.json new file mode 100644 index 000000000..bcdab47b8 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/validator_proof_base64.json @@ -0,0 +1 @@ +{"needsChange":false,"poseidonHash":[6184175224641829464,1972563968430291565,4818342377349794099,12882709980410840761],"sha256Hash":[0,0,1,1,1,0,1,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,1,0,1,1,0,0,1,1,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,1,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,0,1,0,1,1,0,0,1,0,0,0,0,0,1,1,0,0,1,0,1,1,0,0,1,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,0,1,1,0,0,0,0,1,0,1,1,1,0,1,0,0,1,0,0,0,0,1,1,1,0,1,0,1,1,0,1,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,1,1,1,1,0,1,1,1,0],"proof":"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AAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAA"} \ No newline at end of file diff --git a/libs/typescript/relay-utils/proof-storage.ts b/libs/typescript/relay-utils/proof-storage.ts new file mode 100644 index 000000000..448f525a4 --- /dev/null +++ b/libs/typescript/relay-utils/proof-storage.ts @@ -0,0 +1,4 @@ +interface ProofStorage { + getProof(slot: number, merkleTreeIndex: number, formatVersion: number): Promise; + setProof(slot: number, merkleTreeIndex: number, formatVersion: number, proof: Buffer): Promise; +} diff --git a/relay/implementations/redis.ts b/relay/implementations/redis.ts index c95f1f861..dc18b9649 100644 --- a/relay/implementations/redis.ts +++ b/relay/implementations/redis.ts @@ -163,7 +163,7 @@ export class Redis implements IRedis { index: bigint, proof: ValidatorProof = { needsChange: true, - proof: [], + proofIndex: '', poseidonHash: [], sha256Hash: [], }, @@ -185,7 +185,7 @@ export class Redis implements IRedis { needsChange: true, rangeTotalValue: '0', validatorsCommitment: [], - proof: [], + proofIndex: '', balancesHash: [], withdrawalCredentials: '0', }, diff --git a/relay/types/types.ts b/relay/types/types.ts index d646e87f9..b8385cb99 100644 --- a/relay/types/types.ts +++ b/relay/types/types.ts @@ -165,7 +165,7 @@ export interface Validator { export interface ValidatorProof { needsChange: boolean; - proof: number[]; + proofIndex: string; poseidonHash: number[]; sha256Hash: number[]; } @@ -174,7 +174,7 @@ export interface BalanceProof { needsChange: boolean; rangeTotalValue: string; validatorsCommitment: number[]; - proof: number[]; + proofIndex: string; balancesHash: number[]; withdrawalCredentials: string; } From 9b1920255f1192860c5499122af15ac3f0117dd3 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Wed, 10 Jan 2024 16:10:09 +0200 Subject: [PATCH 32/59] build(yarn): Install `colors` --- package.json | 2 ++ yarn-project.nix | 2 +- yarn.lock | 13 ++++++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a96f25599..0a49cbf3b 100644 --- a/package.json +++ b/package.json @@ -67,9 +67,11 @@ "@nomiclabs/hardhat-ethers": "^2.1.1", "@nomiclabs/hardhat-etherscan": "^3.1.0", "@nomiclabs/hardhat-waffle": "^2.0.3", + "@types/colors": "^1.2.1", "bullmq": "^3.7.1", "circom_tester": "^0.0.14", "circomlibjs": "^0.1.7", + "colors": "^1.4.0", "crypto-js": "^4.1.1", "dotenv": "^16.0.2", "ethers": "^5.7.0", diff --git a/yarn-project.nix b/yarn-project.nix index 054cdccd3..13a04739d 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -52,7 +52,7 @@ let rm $out/.gitignore ''; outputHashMode = "recursive"; - outputHash = "sha512-YU2dbXFg1rDVCA2216Be9Tdr213BsT53h2ZOgUZ68Y1x/fTiqYaoN1tLKp8049b0hbDh+8YKxUF3X5NIlO851g=="; + outputHash = "sha512-b+JAK5YhB2AP3j7+BXM2hrQhEkheijQoaBJxJOWnBpo4abDoqxB+aLTUExYR7/6tJmX5WHEa2HOvAdyqTVc3bA=="; }; # Create a derivation that builds a module in isolation. diff --git a/yarn.lock b/yarn.lock index 641da4847..0ad6f380c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3066,6 +3066,15 @@ __metadata: languageName: node linkType: hard +"@types/colors@npm:^1.2.1": + version: 1.2.1 + resolution: "@types/colors@npm:1.2.1" + dependencies: + colors: "npm:*" + checksum: 10/6602c4805242bd9197de50559883980ec7c58f440ceb6b74d5fc8e85a0992b5fc765e208ce94b3455789f00e33f75d8f8000ac8e597295e2f1bf86de2c161b94 + languageName: node + linkType: hard + "@types/concat-stream@npm:^1.6.0": version: 1.6.1 resolution: "@types/concat-stream@npm:1.6.1" @@ -3399,12 +3408,14 @@ __metadata: "@nomiclabs/hardhat-ethers": "npm:^2.1.1" "@nomiclabs/hardhat-etherscan": "npm:^3.1.0" "@nomiclabs/hardhat-waffle": "npm:^2.0.3" + "@types/colors": "npm:^1.2.1" "@types/glob": "npm:^7.2.0" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^18.0.0" bullmq: "npm:^3.7.1" circom_tester: "npm:^0.0.14" circomlibjs: "npm:^0.1.7" + colors: "npm:^1.4.0" crypto-js: "npm:^4.1.1" dotenv: "npm:^16.0.2" ethers: "npm:^5.7.0" @@ -5164,7 +5175,7 @@ __metadata: languageName: node linkType: hard -"colors@npm:1.4.0, colors@npm:^1.1.2": +"colors@npm:*, colors@npm:1.4.0, colors@npm:^1.1.2, colors@npm:^1.4.0": version: 1.4.0 resolution: "colors@npm:1.4.0" checksum: 10/90b2d5465159813a3983ea72ca8cff75f784824ad70f2cc2b32c233e95bcfbcda101ebc6d6766bc50f57263792629bfb4f1f8a4dfbd1d240f229fc7f69b785fc From 75941472ec0fa567a8b6774290181b704be873d6 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Wed, 10 Jan 2024 16:09:28 +0200 Subject: [PATCH 33/59] fix(get_changed_validators): Validate mock beacon state binary size --- .../get_changed_validators.ts | 46 ++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index 5730166e4..dff08e367 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -13,6 +13,9 @@ const { WorkQueue, Item, } = require('@mevitae/redis-work-queue/dist/WorkQueue'); + +import colors from 'colors/safe'; + import { BeaconApi } from '../../../relay/implementations/beacon-api'; import validator_commitment_constants from '../constants/validator_commitment_constants.json'; @@ -127,9 +130,10 @@ let MOCK: boolean; ); await work_queue.addItem(db, new Item(buffer)); - - if (i % 10 === 0 && i !== 0) - console.log('Added zeros tasks'); + + if (i % 10 === 0 && i !== 0) { + console.log('Added zeros tasks'); + } } } @@ -138,17 +142,35 @@ let MOCK: boolean; let prevValidators = await redis.getValidatorsBatched(ssz); console.log('Loaded all batches'); - const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') - ? '../mock_data/beaconState.bin' - : 'mock_data/beaconState.bin'; while (true) { const timeBefore = Date.now(); - const validators = MOCK - ? ssz.capella.BeaconState.deserialize(fs.readFileSync(beaconState_bin)) - .validators - : (await beaconApi.getValidators()).slice(0, TAKE); + let validators: Validator[]; + + if (MOCK) { + const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') + ? '../mock_data/beaconState.bin' + : 'mock_data/beaconState.bin'; + + const serializedState = fs.readFileSync(beaconState_bin); + + if (serializedState.byteLength < 1000) { + console.error( + colors.red( + 'Error: Unexpectedly small beacon state file.\n' + + 'Please ensure Git LFS is enabled and run the following:\n' + + colors.bold('git lfs fetch; git lfs checkout'), + ), + ); + process.exit(1); + } + + validators = + ssz.capella.BeaconState.deserialize(serializedState).validators; + } else { + validators = (await beaconApi.getValidators()).slice(0, TAKE); + } if (prevValidators.length === 0) { console.log('prev validators are empty. Saving to redis'); @@ -220,7 +242,9 @@ let MOCK: boolean; } if (i % GRANULITY == 0) { - console.log(`Saved ${GRANULITY} batches and added first level of proofs`); + console.log( + `Saved ${GRANULITY} batches and added first level of proofs`, + ); } } From 587a282785a497161883da55d7c395e853952b56 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Wed, 10 Jan 2024 16:12:44 +0200 Subject: [PATCH 34/59] build(nix): Add `rust-src` and `rust-analyzer` components to the rust-nightly package --- shell.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shell.nix b/shell.nix index fe5db427c..b708ac9dc 100644 --- a/shell.nix +++ b/shell.nix @@ -9,7 +9,9 @@ inherit (inputs'.mcl-blockchain.legacyPackages) pkgs-with-rust-overlay rust-stable; inherit (pkgs-with-rust-overlay) rust-bin; - rust-nightly = rust-bin.nightly."2023-06-12".default; + rust-nightly = rust-bin.nightly."2023-06-12".default.override { + extensions = ["rust-src" "rust-analyzer"]; + }; in { devShells.default = with pkgs; let shell-pkgs = import ./libs/nix/common-shell-pkgs.nix {inherit pkgs rust-stable;}; From 63a5437075c6eddb74979746be9d3c3bb8856f92 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Mon, 19 Feb 2024 14:38:12 +0200 Subject: [PATCH 35/59] build(beacon-light-client/solidity/yarn): Add dotenv --- beacon-light-client/solidity/package.json | 3 +++ yarn-project.nix | 2 +- yarn.lock | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/beacon-light-client/solidity/package.json b/beacon-light-client/solidity/package.json index 12659500f..6589022e6 100644 --- a/beacon-light-client/solidity/package.json +++ b/beacon-light-client/solidity/package.json @@ -30,5 +30,8 @@ "r1csfile": "^0.0.40", "snarkjs": "^0.4.24", "ts-node": "^10.9.1" + }, + "devDependencies": { + "dotenv": "^16.4.4" } } diff --git a/yarn-project.nix b/yarn-project.nix index 13a04739d..be7d83c3b 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -52,7 +52,7 @@ let rm $out/.gitignore ''; outputHashMode = "recursive"; - outputHash = "sha512-b+JAK5YhB2AP3j7+BXM2hrQhEkheijQoaBJxJOWnBpo4abDoqxB+aLTUExYR7/6tJmX5WHEa2HOvAdyqTVc3bA=="; + outputHash = "sha512-3DIffUBl22OozlbQGFzv4SdprTNXR98gT8vkxfUhAJhBr2hM5QXB2LynnKELTYQ5MNflTp9AtDkQaP2R77F0Wg=="; }; # Create a derivation that builds a module in isolation. diff --git a/yarn.lock b/yarn.lock index 0ad6f380c..002b774b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3381,6 +3381,7 @@ __metadata: chai: "npm:^4.3.6" circom_tester: "npm:^0.0.14" crypto-js: "npm:^4.1.1" + dotenv: "npm:^16.4.4" ethers: "npm:^5.6.9" hardhat: "npm:2.10.2" hardhat-gas-reporter: "npm:^1.0.8" @@ -5808,6 +5809,13 @@ __metadata: languageName: node linkType: hard +"dotenv@npm:^16.4.4": + version: 16.4.5 + resolution: "dotenv@npm:16.4.5" + checksum: 10/55a3134601115194ae0f924e54473459ed0d9fc340ae610b676e248cca45aa7c680d86365318ea964e6da4e2ea80c4514c1adab5adb43d6867fb57ff068f95c8 + languageName: node + linkType: hard + "ecc-jsbn@npm:~0.1.1": version: 0.1.2 resolution: "ecc-jsbn@npm:0.1.2" From e6f6d216138a42dbfb4eca3f34dffe902090b8f8 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Mon, 19 Feb 2024 14:46:03 +0200 Subject: [PATCH 36/59] config(prettier): Add more ignored files and dirs --- .prettierignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.prettierignore b/.prettierignore index c32632881..03ca76e0a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,11 @@ .direnv node_modules +.yarn +.pnp.cjs +.pnp.loader.mjs vendor *.json *.yml + +# Rust files +casper-finality-proofs/target/ From c154e7294de1fa3ff3a873e79f3efa27d70aaf2b Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Mon, 19 Feb 2024 18:29:37 +0200 Subject: [PATCH 37/59] config(yarn/format:check): Exclude `yarn-project.nix` file --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0a49cbf3b..708af09f1 100644 --- a/package.json +++ b/package.json @@ -47,8 +47,8 @@ "clean:normal": "yarn clean:jest && EXCL_NM='-e node_modules' yarn clean:untracked_artifacts", "clean:jest": "jest --clear-cache", "clean:untracked_artifacts": "git clean -fdx -e .env -e .direnv -e .yarn -e .vscode $EXCL_NM -- $(git rev-parse --show-toplevel)", - "format:check": "prettier --check . && alejandra -q --exclude ./node_modules --check .", - "format:write": "prettier --write . && alejandra -q --exclude ./node_modules .", + "format:check": "prettier --check . && alejandra --exclude ./node_modules --exclude ./yarn-project.nix --check .", + "format:write": "prettier --write . && alejandra --exclude ./node_modules --exclude ./yarn-project.nix .", "test": "jest --verbose --silent -i", "test-emcc": "USE_EMCC=1 jest --verbose --silent", "build-plonky-2": "tsc -p beacon-light-client/plonky2/tsconfig.json" From eaa9cd7738d7425a5d0fdb5007197840b50bbec6 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Mon, 19 Feb 2024 14:46:37 +0200 Subject: [PATCH 38/59] style: Run `yarn format:write` --- .../get_balances_input/get_balances_input.ts | 24 +++-- docker-compose.yaml | 88 +++++++++---------- libs/typescript/relay-utils/proof-storage.ts | 13 ++- 3 files changed, 70 insertions(+), 55 deletions(-) diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts index 11e6262fa..ab4009eb5 100755 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -57,7 +57,7 @@ let TAKE; describe: 'Runs the tool without doing actual calculations', type: 'boolean', default: false, - description: 'Runs the tool without doing actual calculations.' + description: 'Runs the tool without doing actual calculations.', }).argv; const redis = new RedisLocal(options['redis-host'], options['redis-port']); @@ -92,8 +92,16 @@ let TAKE; const beaconApi = new BeaconApi([options['beacon-node']]); - const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') ? '../mock_data/beaconState.bin' : 'mock_data/beaconState.bin'; - const { beaconState } = MOCK ? {beaconState: ssz.capella.BeaconState.deserialize(fs.readFileSync(beaconState_bin))} : await beaconApi.getBeaconState(6953401); + const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') + ? '../mock_data/beaconState.bin' + : 'mock_data/beaconState.bin'; + const { beaconState } = MOCK + ? { + beaconState: ssz.capella.BeaconState.deserialize( + fs.readFileSync(beaconState_bin), + ), + } + : await beaconApi.getBeaconState(6953401); const validators = beaconState.validators.slice(0, TAKE); TAKE = validators.length; @@ -170,8 +178,7 @@ let TAKE; await queues[i + 1].addItem(db, new Item(buffer)); - if (i % (GRANULITY/10) === 0 && i !== 0) - console.log('Added zeros tasks'); + if (i % (GRANULITY / 10) === 0 && i !== 0) console.log('Added zeros tasks'); } const batchSize = 100; @@ -218,8 +225,7 @@ let TAKE; await redis.saveValidatorBalancesInput(batch); - if (i % GRANULITY === 0 && i !== 0) - console.log('saved batch', i); + if (i % GRANULITY === 0 && i !== 0) console.log('saved batch', i); } for (let i = 0; i < TAKE / CIRCUIT_SIZE; i++) { @@ -228,7 +234,7 @@ let TAKE; view.setBigUint64(0, BigInt(i * CIRCUIT_SIZE), false); await queues[0].addItem(db, new Item(buffer)); - if (i % (GRANULITY*100) === 0 && i !== 0) + if (i % (GRANULITY * 100) === 0 && i !== 0) console.log(`added ${i * CIRCUIT_SIZE}`); } @@ -254,7 +260,7 @@ let TAKE; BigInt(i * CIRCUIT_SIZE), BigInt(j), ); - if (i % (GRANULITY*100) === 0 && i !== 0) + if (i % (GRANULITY * 100) === 0 && i !== 0) console.log(`added ${j}:${first}:${second}`); view.setBigUint64(0, BigInt(j - 1), false); diff --git a/docker-compose.yaml b/docker-compose.yaml index 718358748..6bea88e61 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,11 +3,11 @@ services: image: redis environment: - COMPOSE_PROJECT_NAME - command: redis-server --appendonly yes --port 6379 + command: redis-server --appendonly yes --port 6379 ports: - - "6379" + - '6379' healthcheck: - test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + test: ['CMD-SHELL', 'redis-cli ping | grep PONG'] interval: 1s timeout: 3s retries: 5 @@ -17,7 +17,7 @@ services: - COMPOSE_PROJECT_NAME command: get-changed-validators --redis-host redis --redis-port 6379 --mock ports: - - "6379" + - '6379' depends_on: redis: condition: service_healthy @@ -31,7 +31,7 @@ services: redis: condition: service_healthy ports: - - "6379" + - '6379' get_balances_input: image: get_balances_input environment: @@ -41,7 +41,7 @@ services: redis: condition: service_healthy ports: - - "6379" + - '6379' balance_verifier_level_0: image: balance-verifier-for-level-0 environment: @@ -58,7 +58,7 @@ services: commitment_mapper: condition: service_started ports: - - "6379" + - '6379' balance_verifier_level_1: image: balance-verifier-for-level-1 environment: @@ -77,7 +77,7 @@ services: balance_verifier_level_0: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_2: image: balance-verifier-for-level-2 environment: @@ -96,7 +96,7 @@ services: balance_verifier_level_1: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_3: image: balance-verifier-for-level-3 environment: @@ -115,7 +115,7 @@ services: balance_verifier_level_2: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_4: image: balance-verifier-for-level-4 environment: @@ -134,7 +134,7 @@ services: balance_verifier_level_3: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_5: image: balance-verifier-for-level-5 environment: @@ -153,7 +153,7 @@ services: balance_verifier_level_4: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_6: image: balance-verifier-for-level-6 environment: @@ -172,7 +172,7 @@ services: balance_verifier_level_5: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_7: image: balance-verifier-for-level-7 environment: @@ -191,7 +191,7 @@ services: balance_verifier_level_6: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_8: image: balance-verifier-for-level-8 environment: @@ -210,7 +210,7 @@ services: balance_verifier_level_7: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_9: image: balance-verifier-for-level-9 environment: @@ -229,7 +229,7 @@ services: balance_verifier_level_8: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_10: image: balance-verifier-for-level-10 environment: @@ -248,7 +248,7 @@ services: balance_verifier_level_9: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_11: image: balance-verifier-for-level-11 environment: @@ -267,7 +267,7 @@ services: balance_verifier_level_10: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_12: image: balance-verifier-for-level-12 environment: @@ -286,7 +286,7 @@ services: balance_verifier_level_11: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_13: image: balance-verifier-for-level-13 environment: @@ -305,7 +305,7 @@ services: balance_verifier_level_12: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_14: image: balance-verifier-for-level-14 environment: @@ -324,7 +324,7 @@ services: balance_verifier_level_13: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_15: image: balance-verifier-for-level-15 environment: @@ -343,7 +343,7 @@ services: balance_verifier_level_14: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_16: image: balance-verifier-for-level-16 environment: @@ -362,7 +362,7 @@ services: balance_verifier_level_15: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_17: image: balance-verifier-for-level-17 environment: @@ -381,7 +381,7 @@ services: balance_verifier_level_16: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_18: image: balance-verifier-for-level-18 environment: @@ -400,7 +400,7 @@ services: balance_verifier_level_17: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_19: image: balance-verifier-for-level-19 environment: @@ -419,7 +419,7 @@ services: balance_verifier_level_18: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_20: image: balance-verifier-for-level-20 environment: @@ -438,7 +438,7 @@ services: balance_verifier_level_19: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_21: image: balance-verifier-for-level-21 environment: @@ -457,7 +457,7 @@ services: balance_verifier_level_20: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_22: image: balance-verifier-for-level-22 environment: @@ -476,7 +476,7 @@ services: balance_verifier_level_21: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_23: image: balance-verifier-for-level-23 environment: @@ -495,7 +495,7 @@ services: balance_verifier_level_22: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_24: image: balance-verifier-for-level-24 environment: @@ -514,7 +514,7 @@ services: balance_verifier_level_23: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_25: image: balance-verifier-for-level-25 environment: @@ -533,7 +533,7 @@ services: balance_verifier_level_24: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_26: image: balance-verifier-for-level-26 environment: @@ -552,7 +552,7 @@ services: balance_verifier_level_25: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_27: image: balance-verifier-for-level-27 environment: @@ -571,7 +571,7 @@ services: balance_verifier_level_26: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_28: image: balance-verifier-for-level-21 environment: @@ -590,7 +590,7 @@ services: balance_verifier_level_27: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_29: image: balance-verifier-for-level-29 environment: @@ -609,7 +609,7 @@ services: balance_verifier_level_28: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_30: image: balance-verifier-for-level-30 environment: @@ -628,7 +628,7 @@ services: balance_verifier_level_29: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_31: image: balance-verifier-for-level-31 environment: @@ -647,7 +647,7 @@ services: balance_verifier_level_30: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_32: image: balance-verifier-for-level-32 environment: @@ -666,7 +666,7 @@ services: balance_verifier_level_31: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_33: image: balance-verifier-for-level-31 environment: @@ -685,7 +685,7 @@ services: balance_verifier_level_32: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_34: image: balance-verifier-for-level-34 environment: @@ -704,7 +704,7 @@ services: balance_verifier_level_33: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_35: image: balance-verifier-for-level-35 environment: @@ -723,7 +723,7 @@ services: balance_verifier_level_34: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_36: image: balance-verifier-for-level-36 environment: @@ -742,7 +742,7 @@ services: balance_verifier_level_35: condition: service_completed_successfully ports: - - "6379" + - '6379' balance_verifier_level_37: image: balance-verifier-for-level-37 environment: @@ -761,4 +761,4 @@ services: balance_verifier_level_36: condition: service_completed_successfully ports: - - "6379" \ No newline at end of file + - '6379' diff --git a/libs/typescript/relay-utils/proof-storage.ts b/libs/typescript/relay-utils/proof-storage.ts index 448f525a4..d29d4b5fa 100644 --- a/libs/typescript/relay-utils/proof-storage.ts +++ b/libs/typescript/relay-utils/proof-storage.ts @@ -1,4 +1,13 @@ interface ProofStorage { - getProof(slot: number, merkleTreeIndex: number, formatVersion: number): Promise; - setProof(slot: number, merkleTreeIndex: number, formatVersion: number, proof: Buffer): Promise; + getProof( + slot: number, + merkleTreeIndex: number, + formatVersion: number, + ): Promise; + setProof( + slot: number, + merkleTreeIndex: number, + formatVersion: number, + proof: Buffer, + ): Promise; } From b1453fb1beb63f05391d550af1ab7a96142ebc0b Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Mon, 19 Feb 2024 18:46:18 +0200 Subject: [PATCH 39/59] ci(gh-actions): rm `magic-nix-cache-action` and update `nix-installer-action` and `cachix-action` --- .github/actions/setup/action.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 6d6a564b2..99019baa7 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -8,10 +8,8 @@ runs: using: 'composite' steps: - name: Install Nix - uses: DeterminateSystems/nix-installer-action@v4 - - name: Run the Magic Nix Cache - uses: DeterminateSystems/magic-nix-cache-action@v1 - - uses: cachix/cachix-action@v12 + uses: DeterminateSystems/nix-installer-action@v9 + - uses: cachix/cachix-action@v14 with: name: mcl-blockchain-packages authToken: '${{ inputs.cachix_auth_token }}' From 707a1e458dbcfb4a37a332a4a2e66292e22976ad Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Mon, 19 Feb 2024 19:36:37 +0200 Subject: [PATCH 40/59] fix(beacon-light-client/circom/test): Don't assume that `ts-node` in the $PATH --- beacon-light-client/circom/test/run_snarkit2_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon-light-client/circom/test/run_snarkit2_tests.sh b/beacon-light-client/circom/test/run_snarkit2_tests.sh index 3c1ed7bec..cc42a2290 100755 --- a/beacon-light-client/circom/test/run_snarkit2_tests.sh +++ b/beacon-light-client/circom/test/run_snarkit2_tests.sh @@ -10,7 +10,7 @@ else fi # generate the ssz_num test cases -ts-node gen_ssz_num_positive_tests.ts +yarn ts-node gen_ssz_num_positive_tests.ts # Get the list of all directories one level deep inside the "test" folder folders=$(find ${DENDRETH_DIR}/beacon-light-client/circom/test/* -maxdepth 0 -type d) From e0c1923aa4c201b5dc89450480158bac109bab7e Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Mon, 19 Feb 2024 19:37:49 +0200 Subject: [PATCH 41/59] build(beacon-light-client/solidity): Add missing `@lodestar/types` dep --- beacon-light-client/solidity/package.json | 1 + yarn.lock | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/beacon-light-client/solidity/package.json b/beacon-light-client/solidity/package.json index 6589022e6..8e9b05c4d 100644 --- a/beacon-light-client/solidity/package.json +++ b/beacon-light-client/solidity/package.json @@ -16,6 +16,7 @@ "@chainsafe/lodestar-types": "^0.34.4", "@chainsafe/ssz": "^0.9.2", "@iden3/binfileutils": "^0.0.11", + "@lodestar/types": "^1.15.1", "@noble/bls12-381": "^1.3.0", "@nomiclabs/hardhat-ethers": "^2.2.2", "@nomiclabs/hardhat-etherscan": "^3.1.7", diff --git a/yarn.lock b/yarn.lock index 002b774b1..ba3758cf9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1970,7 +1970,7 @@ __metadata: languageName: node linkType: hard -"@lodestar/types@npm:^1.11.3": +"@lodestar/types@npm:^1.11.3, @lodestar/types@npm:^1.15.1": version: 1.15.1 resolution: "@lodestar/types@npm:1.15.1" dependencies: @@ -3373,6 +3373,7 @@ __metadata: "@chainsafe/lodestar-types": "npm:^0.34.4" "@chainsafe/ssz": "npm:^0.9.2" "@iden3/binfileutils": "npm:^0.0.11" + "@lodestar/types": "npm:^1.15.1" "@noble/bls12-381": "npm:^1.3.0" "@nomiclabs/hardhat-ethers": "npm:^2.2.2" "@nomiclabs/hardhat-etherscan": "npm:^3.1.7" From 33e3354b2d8c1001a9b2d82b91a97dec8113d732 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Wed, 28 Feb 2024 10:42:43 +0200 Subject: [PATCH 42/59] build(yarn): Upgrade `@chainsafe/ssz` and `@lodestar/types` https://github.com/ChainSafe/ssz/releases/ https://github.com/ChainSafe/lodestar/releases/tag/v1.16.0 --- beacon-light-client/circom/package.json | 4 +- beacon-light-client/solidity/package.json | 4 +- package.json | 6 +- relay/package.json | 4 +- yarn-project.nix | 2 +- yarn.lock | 122 ++++++++++++---------- 6 files changed, 79 insertions(+), 63 deletions(-) diff --git a/beacon-light-client/circom/package.json b/beacon-light-client/circom/package.json index f9b6fc834..2da4f50b9 100644 --- a/beacon-light-client/circom/package.json +++ b/beacon-light-client/circom/package.json @@ -3,8 +3,8 @@ "type": "commonjs", "dependencies": { "@chainsafe/lodestar-types": "^0.39.0", - "@chainsafe/ssz": "^0.9.2", - "@lodestar/types": "^1.4.1", + "@chainsafe/ssz": "^0.14.3", + "@lodestar/types": "^1.16.0", "@nomiclabs/hardhat-ethers": "^2.0.5", "@nomiclabs/hardhat-waffle": "^2.0.3", "@types/js-yaml": "^4.0.5", diff --git a/beacon-light-client/solidity/package.json b/beacon-light-client/solidity/package.json index 8e9b05c4d..c7a013257 100644 --- a/beacon-light-client/solidity/package.json +++ b/beacon-light-client/solidity/package.json @@ -14,9 +14,9 @@ "@chainsafe/bls": "^6.0.3", "@chainsafe/blst": "0.2.4", "@chainsafe/lodestar-types": "^0.34.4", - "@chainsafe/ssz": "^0.9.2", + "@chainsafe/ssz": "^0.14.3", "@iden3/binfileutils": "^0.0.11", - "@lodestar/types": "^1.15.1", + "@lodestar/types": "^1.16.0", "@noble/bls12-381": "^1.3.0", "@nomiclabs/hardhat-ethers": "^2.2.2", "@nomiclabs/hardhat-etherscan": "^3.1.7", diff --git a/package.json b/package.json index 708af09f1..82e22b0c2 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "light-client-sync" ], "devDependencies": { - "@chainsafe/ssz": "^0.9.2", + "@chainsafe/ssz": "^0.14.3", "@noble/bls12-381": "^1.3.0", "@types/glob": "^7.2.0", "@types/jest": "^29.5.12", @@ -57,12 +57,12 @@ "@chainsafe/bls": "^6.0.3", "@chainsafe/blst": "^0.2.4", "@chainsafe/persistent-merkle-tree": "^0.6.1", - "@chainsafe/ssz": "^0.9.2", + "@chainsafe/ssz": "^0.14.3", "@cosmjs/cosmwasm-stargate": "^0.30.0", "@cosmjs/proto-signing": "^0.30.0", "@cosmjs/stargate": "^0.30.0", "@iden3/binfileutils": "^0.0.11", - "@lodestar/types": "1.4.1", + "@lodestar/types": "^1.16.0", "@mevitae/redis-work-queue": "^0.0.4", "@nomiclabs/hardhat-ethers": "^2.1.1", "@nomiclabs/hardhat-etherscan": "^3.1.0", diff --git a/relay/package.json b/relay/package.json index e7c1efd56..09550371a 100644 --- a/relay/package.json +++ b/relay/package.json @@ -12,9 +12,9 @@ "license": "ISC", "dependencies": { "@chainsafe/persistent-merkle-tree": "^0.6.1", - "@chainsafe/ssz": "^0.14.0", + "@chainsafe/ssz": "^0.14.3", "@effect/schema": "^0.33.0", - "@lodestar/types": "^1.11.3", + "@lodestar/types": "^1.16.0", "discord.js": "^14.12.1", "redis": "^4.6.10", "ts-node": "^10.9.1", diff --git a/yarn-project.nix b/yarn-project.nix index be7d83c3b..3ab7b290f 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -52,7 +52,7 @@ let rm $out/.gitignore ''; outputHashMode = "recursive"; - outputHash = "sha512-3DIffUBl22OozlbQGFzv4SdprTNXR98gT8vkxfUhAJhBr2hM5QXB2LynnKELTYQ5MNflTp9AtDkQaP2R77F0Wg=="; + outputHash = "sha512-386ulbjewVLTGAo/GJNrW7bH0teDUFYx+AjSqhq7AkwMOpByCXfPJKdQMwaZDA6jjZb6AF9f6Iq2ug0ZKPUh5Q=="; }; # Create a derivation that builds a module in isolation. diff --git a/yarn.lock b/yarn.lock index ba3758cf9..ac422ea99 100644 --- a/yarn.lock +++ b/yarn.lock @@ -567,7 +567,7 @@ __metadata: languageName: node linkType: hard -"@chainsafe/ssz@npm:^0.14.0": +"@chainsafe/ssz@npm:^0.14.0, @chainsafe/ssz@npm:^0.14.3": version: 0.14.3 resolution: "@chainsafe/ssz@npm:0.14.3" dependencies: @@ -1939,54 +1939,21 @@ __metadata: languageName: node linkType: hard -"@lodestar/params@npm:^1.15.1": - version: 1.15.1 - resolution: "@lodestar/params@npm:1.15.1" - checksum: 10/ed0b70878de069830fc42f5968ac6660cf9cd433ecb311d963d99ed676db1c1fbf3e2391d0fa4f96a6d78d8bfbeeea6130fd1b5c52eadd097924560a9473789f +"@lodestar/params@npm:^1.16.0": + version: 1.16.0 + resolution: "@lodestar/params@npm:1.16.0" + checksum: 10/e564cca2325474078e3f0a6036cfc28d81b93f8063edf85ceb6935de6bbba1f78831389a0155f33ed30659fd08e70b8cde250ca11ed8daefd3953ad937afeb71 languageName: node linkType: hard -"@lodestar/params@npm:^1.4.1": - version: 1.11.3 - resolution: "@lodestar/params@npm:1.11.3" - checksum: 10/ba5cb729a235c678b15e7e82d284b309e4e1c2ac5539cac0c9c1076cd027a8df5d602e6a6835957321e14912eb9eaa858e958960da6be84c80ea10d4f605e818 - languageName: node - linkType: hard - -"@lodestar/params@npm:^1.4.3": - version: 1.4.3 - resolution: "@lodestar/params@npm:1.4.3" - checksum: 10/579bc3778a59194984bab99c479ba63a259bbca41ce5a2d2ab56f3a01f9784eb3aa6e1e8fe44aa495f9c68b6347e5f6d6cc959000da3c5240db316e743775ed0 - languageName: node - linkType: hard - -"@lodestar/types@npm:1.4.1": - version: 1.4.1 - resolution: "@lodestar/types@npm:1.4.1" - dependencies: - "@chainsafe/ssz": "npm:^0.9.2" - "@lodestar/params": "npm:^1.4.1" - checksum: 10/eff689779cf9a93215fb6dc7075b65f860b4147461d57c64aabd2582f1334ee632f1cd3a911d6560b0f0eea8c74c4c52444e2dddb99f8ecfe364cb87c192b726 - languageName: node - linkType: hard - -"@lodestar/types@npm:^1.11.3, @lodestar/types@npm:^1.15.1": - version: 1.15.1 - resolution: "@lodestar/types@npm:1.15.1" +"@lodestar/types@npm:^1.16.0": + version: 1.16.0 + resolution: "@lodestar/types@npm:1.16.0" dependencies: "@chainsafe/ssz": "npm:^0.14.0" - "@lodestar/params": "npm:^1.15.1" - checksum: 10/c58e74e7f65bae7f47102ebca70d93c5130301f22e9ec7a58bb2184c4e7ec58c35603ec755cc9156ae38759ddfa198481e3219a2389fe9bfe2c4b8bbd52ea9c5 - languageName: node - linkType: hard - -"@lodestar/types@npm:^1.4.1": - version: 1.4.3 - resolution: "@lodestar/types@npm:1.4.3" - dependencies: - "@chainsafe/ssz": "npm:^0.9.2" - "@lodestar/params": "npm:^1.4.3" - checksum: 10/c90fca37d54a8bd6fda67a5deff2c9cba2242d2beade4a7f25d2c94bc7a67d2399d1a03372561ebe8bb40c867d2fe0adece415275ec99d7e0da6289a53e86731 + "@lodestar/params": "npm:^1.16.0" + ethereum-cryptography: "npm:^2.0.0" + checksum: 10/663dbbeca901d8e284eb93994389e08bc1f31ace18c505b17cff11bcb809929392d76346279923307318510c215c3a96c343a6465d5fec73927c60ffdb6906e9 languageName: node linkType: hard @@ -2100,6 +2067,15 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:1.3.0, @noble/curves@npm:~1.3.0": + version: 1.3.0 + resolution: "@noble/curves@npm:1.3.0" + dependencies: + "@noble/hashes": "npm:1.3.3" + checksum: 10/f3cbdd1af00179e30146eac5539e6df290228fb857a7a8ba36d1a772cbe59288a2ca83d06f175d3446ef00db3a80d7fd8b8347f7de9c2d4d5bf3865d8bb78252 + languageName: node + linkType: hard + "@noble/hashes@npm:1.2.0, @noble/hashes@npm:^1, @noble/hashes@npm:^1.0.0, @noble/hashes@npm:~1.2.0": version: 1.2.0 resolution: "@noble/hashes@npm:1.2.0" @@ -2107,7 +2083,7 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:^1.3.0": +"@noble/hashes@npm:1.3.3, @noble/hashes@npm:^1.3.0, @noble/hashes@npm:~1.3.2": version: 1.3.3 resolution: "@noble/hashes@npm:1.3.3" checksum: 10/1025ddde4d24630e95c0818e63d2d54ee131b980fe113312d17ed7468bc18f54486ac86c907685759f8a7e13c2f9b9e83ec7b67d1cc20836f36b5e4a65bb102d @@ -2740,6 +2716,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:~1.1.4": + version: 1.1.5 + resolution: "@scure/base@npm:1.1.5" + checksum: 10/543fa9991c6378b6a0d5ab7f1e27b30bb9c1e860d3ac81119b4213cfdf0ad7b61be004e06506e89de7ce0cec9391c17f5c082bb34c3b617a2ee6a04129f52481 + languageName: node + linkType: hard + "@scure/bip32@npm:1.1.5": version: 1.1.5 resolution: "@scure/bip32@npm:1.1.5" @@ -2751,6 +2734,17 @@ __metadata: languageName: node linkType: hard +"@scure/bip32@npm:1.3.3": + version: 1.3.3 + resolution: "@scure/bip32@npm:1.3.3" + dependencies: + "@noble/curves": "npm:~1.3.0" + "@noble/hashes": "npm:~1.3.2" + "@scure/base": "npm:~1.1.4" + checksum: 10/4b8b75567866ff7d6b3ba154538add02d2951e9433e8dd7f0014331ac500cda5a88fe3d39b408fcc36e86b633682013f172b967af022c2e4e4ab07336801d688 + languageName: node + linkType: hard + "@scure/bip39@npm:1.1.1": version: 1.1.1 resolution: "@scure/bip39@npm:1.1.1" @@ -2761,6 +2755,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.2.2": + version: 1.2.2 + resolution: "@scure/bip39@npm:1.2.2" + dependencies: + "@noble/hashes": "npm:~1.3.2" + "@scure/base": "npm:~1.1.4" + checksum: 10/f71aceda10a7937bf3779fd2b4c4156c95ec9813269470ddca464cb8ab610d2451b173037f4b1e6dac45414e406e7adc7b5814c51279f4474d5d38140bbee542 + languageName: node + linkType: hard + "@sentry/core@npm:5.30.0": version: 5.30.0 resolution: "@sentry/core@npm:5.30.0" @@ -3371,9 +3375,9 @@ __metadata: "@chainsafe/bls": "npm:^6.0.3" "@chainsafe/blst": "npm:0.2.4" "@chainsafe/lodestar-types": "npm:^0.34.4" - "@chainsafe/ssz": "npm:^0.9.2" + "@chainsafe/ssz": "npm:^0.14.3" "@iden3/binfileutils": "npm:^0.0.11" - "@lodestar/types": "npm:^1.15.1" + "@lodestar/types": "npm:^1.16.0" "@noble/bls12-381": "npm:^1.3.0" "@nomiclabs/hardhat-ethers": "npm:^2.2.2" "@nomiclabs/hardhat-etherscan": "npm:^3.1.7" @@ -3399,12 +3403,12 @@ __metadata: "@chainsafe/bls": "npm:^6.0.3" "@chainsafe/blst": "npm:^0.2.4" "@chainsafe/persistent-merkle-tree": "npm:^0.6.1" - "@chainsafe/ssz": "npm:^0.9.2" + "@chainsafe/ssz": "npm:^0.14.3" "@cosmjs/cosmwasm-stargate": "npm:^0.30.0" "@cosmjs/proto-signing": "npm:^0.30.0" "@cosmjs/stargate": "npm:^0.30.0" "@iden3/binfileutils": "npm:^0.0.11" - "@lodestar/types": "npm:1.4.1" + "@lodestar/types": "npm:^1.16.0" "@mevitae/redis-work-queue": "npm:^0.0.4" "@noble/bls12-381": "npm:^1.3.0" "@nomiclabs/hardhat-ethers": "npm:^2.1.1" @@ -3452,9 +3456,9 @@ __metadata: resolution: "Relay@workspace:relay" dependencies: "@chainsafe/persistent-merkle-tree": "npm:^0.6.1" - "@chainsafe/ssz": "npm:^0.14.0" + "@chainsafe/ssz": "npm:^0.14.3" "@effect/schema": "npm:^0.33.0" - "@lodestar/types": "npm:^1.11.3" + "@lodestar/types": "npm:^1.16.0" discord.js: "npm:^14.12.1" redis: "npm:^4.6.10" ts-node: "npm:^10.9.1" @@ -4872,8 +4876,8 @@ __metadata: resolution: "circom@workspace:beacon-light-client/circom" dependencies: "@chainsafe/lodestar-types": "npm:^0.39.0" - "@chainsafe/ssz": "npm:^0.9.2" - "@lodestar/types": "npm:^1.4.1" + "@chainsafe/ssz": "npm:^0.14.3" + "@lodestar/types": "npm:^1.16.0" "@nomiclabs/hardhat-ethers": "npm:^2.0.5" "@nomiclabs/hardhat-waffle": "npm:^2.0.3" "@types/js-yaml": "npm:^4.0.5" @@ -6284,6 +6288,18 @@ __metadata: languageName: node linkType: hard +"ethereum-cryptography@npm:^2.0.0": + version: 2.1.3 + resolution: "ethereum-cryptography@npm:2.1.3" + dependencies: + "@noble/curves": "npm:1.3.0" + "@noble/hashes": "npm:1.3.3" + "@scure/bip32": "npm:1.3.3" + "@scure/bip39": "npm:1.2.2" + checksum: 10/cc5aa9a4368dc1dd7680ba921957c098ced7b3d7dbb1666334013ab2f8d4cd25a785ad84e66fd9f5c5a9b6de337930ea24ff8c722938f36a9c00cec597ca16b5 + languageName: node + linkType: hard + "ethereum-waffle@npm:^4.0.7": version: 4.0.10 resolution: "ethereum-waffle@npm:4.0.10" From 4d05d7ff8ebc99aabbd90458dec0fa6a0ce3a436 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Wed, 28 Feb 2024 12:13:48 +0200 Subject: [PATCH 43/59] build(yarn): Add `build:{tsc,sol}` scripts to workspaces --- beacon-light-client/circom/package.json | 3 +++ beacon-light-client/solidity/package.json | 2 ++ relay/package.json | 1 + 3 files changed, 6 insertions(+) diff --git a/beacon-light-client/circom/package.json b/beacon-light-client/circom/package.json index 2da4f50b9..7062c0fa9 100644 --- a/beacon-light-client/circom/package.json +++ b/beacon-light-client/circom/package.json @@ -1,6 +1,9 @@ { "name": "circom", "type": "commonjs", + "scripts": { + "build:tsc": "tsc -p ./tsconfig.json" + }, "dependencies": { "@chainsafe/lodestar-types": "^0.39.0", "@chainsafe/ssz": "^0.14.3", diff --git a/beacon-light-client/solidity/package.json b/beacon-light-client/solidity/package.json index c7a013257..13db224d2 100644 --- a/beacon-light-client/solidity/package.json +++ b/beacon-light-client/solidity/package.json @@ -4,6 +4,8 @@ "description": "", "main": "index.js", "scripts": { + "build:tsc": "tsc -p ./tsconfig.json", + "build:sol": "hardhat compile", "test": "yarn hardhat test", "gas": "yarn hardhat run test/utils/gas-reporter/src/index.ts" }, diff --git a/relay/package.json b/relay/package.json index 09550371a..59cab7a1b 100644 --- a/relay/package.json +++ b/relay/package.json @@ -4,6 +4,7 @@ "description": "", "main": "index.js", "scripts": { + "build:tsc": "tsc -p ./tsconfig.json", "pollUpdatesWorker": "yarn ts-node workers/poll-updates/poll-updates-worker.ts", "proofGenerationWorker": "yarn ts-node workers/prover/prover-worker.ts" }, From 992176dfa3bc9bd2dd7a564cb020ae58f2e94e02 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Thu, 29 Feb 2024 00:13:27 +0200 Subject: [PATCH 44/59] refactor(beacon-light-client): Delete unfinished typescript prototype --- beacon-light-client/typescript/.eslintrc.js | 8 - beacon-light-client/typescript/.gitignore | 2 - beacon-light-client/typescript/.prettierrc.js | 7 - beacon-light-client/typescript/README.md | 61 -- beacon-light-client/typescript/package.json | 35 - .../typescript/scripts/.gitignore | 1 - .../typescript/scripts/compile.js | 33 - .../typescript/scripts/originate.js | 18 - .../typescript/scripts/test.js | 33 - .../typescript/scripts/utils/utils.js | 20 - .../src/main/BeaconLightClient.contract.ts | 217 ------ .../typescript/src/types/basic-types.ts | 28 - .../typescript/src/types/interfaces.ts | 61 -- .../src/utils/Constants.contract.ts | 58 -- .../typescript/src/utils/Helpers.contract.ts | 78 --- .../typescript/src/utils/Utils.contract.ts | 202 ------ .../test/implementation/environment.js | 72 -- .../typescript/test/implementation/index.js | 472 ------------- beacon-light-client/typescript/test/test.js | 621 ------------------ beacon-light-client/typescript/tsconfig.json | 24 - 20 files changed, 2051 deletions(-) delete mode 100644 beacon-light-client/typescript/.eslintrc.js delete mode 100644 beacon-light-client/typescript/.gitignore delete mode 100644 beacon-light-client/typescript/.prettierrc.js delete mode 100644 beacon-light-client/typescript/README.md delete mode 100644 beacon-light-client/typescript/package.json delete mode 100644 beacon-light-client/typescript/scripts/.gitignore delete mode 100644 beacon-light-client/typescript/scripts/compile.js delete mode 100644 beacon-light-client/typescript/scripts/originate.js delete mode 100644 beacon-light-client/typescript/scripts/test.js delete mode 100644 beacon-light-client/typescript/scripts/utils/utils.js delete mode 100644 beacon-light-client/typescript/src/main/BeaconLightClient.contract.ts delete mode 100644 beacon-light-client/typescript/src/types/basic-types.ts delete mode 100644 beacon-light-client/typescript/src/types/interfaces.ts delete mode 100644 beacon-light-client/typescript/src/utils/Constants.contract.ts delete mode 100644 beacon-light-client/typescript/src/utils/Helpers.contract.ts delete mode 100644 beacon-light-client/typescript/src/utils/Utils.contract.ts delete mode 100644 beacon-light-client/typescript/test/implementation/environment.js delete mode 100644 beacon-light-client/typescript/test/implementation/index.js delete mode 100644 beacon-light-client/typescript/test/test.js delete mode 100644 beacon-light-client/typescript/tsconfig.json diff --git a/beacon-light-client/typescript/.eslintrc.js b/beacon-light-client/typescript/.eslintrc.js deleted file mode 100644 index 409b65a05..000000000 --- a/beacon-light-client/typescript/.eslintrc.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaVersion: 2020, - sourceType: 'module', - }, - extends: ['plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'], -}; diff --git a/beacon-light-client/typescript/.gitignore b/beacon-light-client/typescript/.gitignore deleted file mode 100644 index 16d8d68f4..000000000 --- a/beacon-light-client/typescript/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -build/ -node_modules/ \ No newline at end of file diff --git a/beacon-light-client/typescript/.prettierrc.js b/beacon-light-client/typescript/.prettierrc.js deleted file mode 100644 index c8c6a5496..000000000 --- a/beacon-light-client/typescript/.prettierrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - semi: true, - trailingComma: 'all', - singleQuote: true, - printWidth: 120, - tabWidth: 4, -}; diff --git a/beacon-light-client/typescript/README.md b/beacon-light-client/typescript/README.md deleted file mode 100644 index 99467f637..000000000 --- a/beacon-light-client/typescript/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# Information - -Add/Edit your contract files a `./src` - -### Directory structure - -```shell - -│ -├── build # Artifacts (compilations and tests) -│ │ -│ ├── compilation -│ │ │ -│ │ ├── Template.contract # Contract compilation folder -│ │ └── ... -│ │ -│ └── test -│ │ -│ ├── Template.contract # Contract testing folder -│ └── ... -│ -├── src # Location for contract files (*.contract.ts) -| | -│ ├── SubModule.ts # Sub module example (it is imported into Template.contract.ts) -│ └── Template.contract.ts # Template contract -│ -├── templates # Various contract templates templates -| | -│ ├── FA1_2.contract.ts # FA1.2 template -│ └── FA2.contract.ts # FA template -| -├── .eslintrc.js # eslint configuration -├── .prettierrc.js # prettier configuration -├── package.json -└── tsconfig.json # It should not be modified. -``` - -### Running compilations - -The command below will iterate over all files in the `src` directory with postfix `*.contract.ts` and run all compilation targets. - -```shell -npm run compile -``` - -### Running tests - -The command below will iterate over all files in the `src` directory with postfix `*.contract.ts` and run all test targets. - -```shell -npm run test -``` - -### Deploy contracts - -By default, the originator will use a faucet account. -But you can provide your own private key by providing the argument `--private-key` - -```shell -npm run originate -- --code build/compilation/<...>_contract.tz --storage build/compilation/<...>_storage.tz --rpc https://mainnet.smartpy.io --private-key -``` diff --git a/beacon-light-client/typescript/package.json b/beacon-light-client/typescript/package.json deleted file mode 100644 index dd180c734..000000000 --- a/beacon-light-client/typescript/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "tezos", - "version": "1.0.0", - "description": "SmartTS Environment", - "private": true, - "scripts": { - "compile": "node ./scripts/compile.js", - "test": "mocha --timeout 100000 ./test/test.js", - "update": "npm i create-smartpy-project@latest && create-smartpy-project update --path ./ --typescript" - }, - "devDependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@smartpy/timelock": "^0.0.9", - "@smartpy/ts-types": "^0.8.4", - "@typescript-eslint/eslint-plugin": "4.28.1", - "@typescript-eslint/parser": "4.28.1", - "axios": "^0.27.2", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "chai": "^4.3.6", - "create-smartpy-project": "^0.2.2", - "eslint": "7.29.0", - "eslint-config-prettier": "8.3.0", - "eslint-plugin-prettier": "3.4.0", - "js-sha3": "^0.8.0", - "libsodium-wrappers-sumo": "^0.7.9", - "lodash": "^4.17.21", - "mocha": "^10.0.0", - "tezos-bls12-381": "^1.1.1", - "xhr2-cookies": "^1.1.0" - }, - "engines": { - "node": ">=10" - } -} diff --git a/beacon-light-client/typescript/scripts/.gitignore b/beacon-light-client/typescript/scripts/.gitignore deleted file mode 100644 index 9b01a6d25..000000000 --- a/beacon-light-client/typescript/scripts/.gitignore +++ /dev/null @@ -1 +0,0 @@ -smartpy-cli/ diff --git a/beacon-light-client/typescript/scripts/compile.js b/beacon-light-client/typescript/scripts/compile.js deleted file mode 100644 index d8260f268..000000000 --- a/beacon-light-client/typescript/scripts/compile.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env node - -const { execSync } = require('child_process'); -const fs = require('fs'); -const path = require('path'); -const { getFilesInDir } = require('./utils/utils'); - -const SCRIPT_PATH = path.join(__dirname, '..', 'scripts', 'smartpy-cli', 'SmartPy.sh'); -const BUILD_PATH = path.join(__dirname, '..', 'build', 'compilation'); -const SRC_PATH = path.join(__dirname, '..', 'src'); - -// Change the following regex to filter the templates being tested -const FILE_FILTER = /.*[.]ts/; - -if (fs.existsSync(BUILD_PATH)) { - fs.rmSync(BUILD_PATH, { recursive: true }); -} -fs.mkdirSync(BUILD_PATH, { recursive: true }); - -const files = getFilesInDir(SRC_PATH, { encoding: 'utf-8', withFileTypes: true }); - -files - .filter((f) => f.name.match(FILE_FILTER)) - .map(async (file) => { - try { - const dir = path.join(BUILD_PATH, file.name.replace('.ts', '')); - fs.mkdirSync(dir, { recursive: true }); - console.log(` >>> Runnning ${file.name} compilation...`); - execSync(`sh ${SCRIPT_PATH} compile ${file.path}/${file.name} ${dir}`); - } catch (e) { - // console.error(e.message); - } - }); diff --git a/beacon-light-client/typescript/scripts/originate.js b/beacon-light-client/typescript/scripts/originate.js deleted file mode 100644 index 7daeef31d..000000000 --- a/beacon-light-client/typescript/scripts/originate.js +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env node - -const { execSync } = require('child_process'); -const path = require('path'); - -const SCRIPT_PATH = path.join(__dirname, '..', 'scripts', 'smartpy-cli', 'SmartPy.sh'); - -const args = process.argv.join(' '); - -var CMD = `${SCRIPT_PATH} originate-contract`; - -try { - console.log(); - console.log(execSync(`${CMD} ${args}`).toString()); - console.log(); -} catch (e) { - console.error(e); -} diff --git a/beacon-light-client/typescript/scripts/test.js b/beacon-light-client/typescript/scripts/test.js deleted file mode 100644 index ab0af8a21..000000000 --- a/beacon-light-client/typescript/scripts/test.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env node - -const { execSync } = require('child_process'); -const fs = require('fs'); -const path = require('path'); -const { getFilesInDir } = require('./utils/utils'); - -const SCRIPT_PATH = path.join(__dirname, '..', 'scripts', 'smartpy-cli', 'SmartPy.sh'); -const TEST_PATH = path.join(__dirname, '..', 'build', 'test'); -const SRC_PATH = path.join(__dirname, '..', 'src'); - -// Change the following regex to filter the templates being tested -const FILE_FILTER = /.*[.]contract[.]ts/; - -if (fs.existsSync(TEST_PATH)) { - fs.rmSync(TEST_PATH, { recursive: true }); -} -fs.mkdirSync(TEST_PATH, { recursive: true }); - -const files = getFilesInDir(SRC_PATH, { encoding: 'utf-8', withFileTypes: true }); - -files - .filter((f) => f.name.match(FILE_FILTER)) - .map(async (file) => { - try { - const dir = path.join(TEST_PATH, file.name.replace('.ts', '')); - fs.mkdirSync(dir, { recursive: true }); - console.log(` >>> Runnning ${file.name} test...`); - execSync(`sh ${SCRIPT_PATH} test ${file.path}/${file.name} ${dir}`); - } catch (e) { - // console.error(e.message); - } - }); diff --git a/beacon-light-client/typescript/scripts/utils/utils.js b/beacon-light-client/typescript/scripts/utils/utils.js deleted file mode 100644 index a08378872..000000000 --- a/beacon-light-client/typescript/scripts/utils/utils.js +++ /dev/null @@ -1,20 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const getFilesInDir = function (_path) { - let files = []; - const fileAndFolders = fs.readdirSync(_path, { encoding: 'utf-8', withFileTypes: true }); - for (let ff of fileAndFolders) { - if (ff.isDirectory()) { - files = [...files, ...getFilesInDir(path.join(_path, ff.name))]; - } else { - files.push({ - name: ff.name, - path: _path, - }); - } - } - return files; -}; - -module.exports.getFilesInDir = getFilesInDir; diff --git a/beacon-light-client/typescript/src/main/BeaconLightClient.contract.ts b/beacon-light-client/typescript/src/main/BeaconLightClient.contract.ts deleted file mode 100644 index 50e13e72d..000000000 --- a/beacon-light-client/typescript/src/main/BeaconLightClient.contract.ts +++ /dev/null @@ -1,217 +0,0 @@ -import type * as T from '../types/basic-types'; -import type * as I from '../types/interfaces'; - -import * as U from '../utils/Utils.contract'; - -// =================== -// / Main Contract \ -// =================== - -@Contract -class BeaconLightClient extends U.Utils { - constructor(public store: I.LightClientStore, public genesis_validators_root: T.Bytes32) { - super(); - } - - blsFastAggregateVerify = (pubkeys: TList, root: T.Root, signature: T.BLSSignature): TBool => { - pubkeys; - root; - signature; - return true; - }; - - validate_light_client_update = (update: I.LightClientUpdate) => { - // Verify update slot is larger than snapshot slot - if (!(update.attested_header.slot > this.store.snapshot.header.slot)) { - Sp.failWith('Update validation failed: Update slot is before the current snapshot slot!'); - } - - // Verify update does not skip a sync committee period - const snapshot_period: T.Uint64 = Sp.ediv( - this.compute_epoch_at_slot(this.store.snapshot.header.slot), - this.EPOCHS_PER_SYNC_COMMITTEE_PERIOD, - ) - .openSome() - .fst(); - const update_period: T.Uint64 = Sp.ediv( - this.compute_epoch_at_slot(update.attested_header.slot), - this.EPOCHS_PER_SYNC_COMMITTEE_PERIOD, - ) - .openSome() - .fst(); - - if (update_period != snapshot_period && update_period != snapshot_period + 1) { - Sp.failWith('Update validation failed: Update skips a sync comittee period!'); - } - - // Verify update header root is the finalized root of the finality header, if specified - let signed_header: I.BeaconBlockHeader = this.EMPTY_BEACON_HEADER; - if ( - this.hash_tree_root__block_header(update.finalized_header) == - this.hash_tree_root__block_header(this.EMPTY_BEACON_HEADER) - ) { - signed_header = update.attested_header; - if ((update.finality_branch as TList).size() != 0) { - Sp.failWith( - 'Update validation failed: There is no finality header, but the finality branch is not empty!', - ); - } - } else { - signed_header = update.finalized_header; - if ( - !this.is_valid_merkle_branch( - this.hash_tree_root__block_header(update.finalized_header), - update.finality_branch, - this.FINALIZED_ROOT_DEPTH, - this.FINALIZED_ROOT_INDEX, - update.attested_header.state_root, - ) - ) { - Sp.failWith('Update validation failed: Merkle branch not valid!'); - } - } - - // Verify update next sync committee if the update period incremented - let sync_committee: I.SyncCommittee = this.EMPTY_SYNC_COMMITTEE; - if (update_period == snapshot_period) { - sync_committee = this.store.snapshot.current_sync_committee; - if ((update.next_sync_committee_branch as TList).size() != 0) { - Sp.failWith('Update validation failed: Next sync committee branch not empty!'); - } - } else { - sync_committee = this.store.snapshot.next_sync_committee; - if ( - !this.is_valid_merkle_branch( - this.hash_tree_root__sync_committee(update.next_sync_committee), - update.next_sync_committee_branch, - this.FINALIZED_ROOT_DEPTH, - this.FINALIZED_ROOT_INDEX, - update.attested_header.state_root, - ) - ) { - Sp.failWith('Update validation failed: Merkle branch not valid!'); - } - } - - // Verify sync committee aggregate signature - let participants_pubkeys: TList = []; - for (let i = 0; i < update.sync_aggregate.sync_committee_bits.length; i += 1) { - if (this.getElementInUintArrayAt(i, update.sync_aggregate.sync_committee_bits) == 1) { - participants_pubkeys.splice(0, 0, this.getElementInBytesArrayAt(i, sync_committee.pubkeys)); - } - } - - // Verify sync committee has sufficient participants - if (!(participants_pubkeys.length >= this.MIN_SYNC_COMMITTEE_PARTICIPANTS)) { - Sp.failWith('Update validation failed: Sync committee does not have sufficient participants'); - } - participants_pubkeys = participants_pubkeys.reverse(); - - const domain: T.Domain = this.compute_domain( - this.DOMAIN_SYNC_COMMITTEE, - this.GENESIS_FORK_VERSION, - this.genesis_validators_root, - ); - const signing_root = this.compute_signing_root(signed_header, domain); - - const valid: TBool = this.blsFastAggregateVerify( - participant_pubkeys, - signing_root, - update.sync_committee_signature, - ); - - if (!valid) { - Sp.failWith('Update validation failed: Fast aggregate verification failed!'); - } - }; - - apply_light_client_update = (update: I.LightClientUpdate) => { - const snapshot_period: T.Uint64 = Sp.ediv( - this.compute_epoch_at_slot(this.store.snapshot.header.slot), - this.EPOCHS_PER_SYNC_COMMITTEE_PERIOD, - ) - .openSome() - .fst(); - - const update_period: T.Uint64 = Sp.ediv( - this.compute_epoch_at_slot(update.attested_header.slot), - this.EPOCHS_PER_SYNC_COMMITTEE_PERIOD, - ) - .openSome() - .fst(); - - if (update_period == snapshot_period + 1) { - this.store.snapshot.current_sync_committee = update.next_sync_committee; - } - this.store.snapshot.header = update.attested_header; - }; - - process_light_client_update = (update: I.LightClientUpdate, current_slot: T.Slot) => { - this.validate_light_client_update(update); - (this.store.valid_updates as TSet).add(update); - - const update_timeout: T.Uint64 = this.SLOTS_PER_EPOCH * this.EPOCHS_PER_SYNC_COMMITTEE_PERIOD; - - let committee_participants = 0; - for (let bit of update.sync_aggregate.sync_committee_bits) { - if (bit == 1) { - committee_participants = committee_participants + 1; - } - } - if ( - committee_participants * 3 >= (update.sync_aggregate.sync_committee_bits as T.Bitvector).size() * 2 && - this.hash_tree_root__block_header(update.finalized_header) != - this.hash_tree_root__block_header(this.EMPTY_BEACON_HEADER) - ) { - // Apply update if (1) 2/3 quorum is reached and (2) we have a finality proof. - // Note that (2) means that the current light client design needs finality. - // It may be changed to re-organizable light client design. See the on-going issue eth2.0-specs#2182. - this.apply_light_client_update(update); - this.store.valid_updates = []; - } else if (current_slot > this.store.snapshot.header.slot + update_timeout) { - let best_valid_update: I.LightClientUpdate = this.EMPTY_LIGHT_CLIENT_UPDATE; - let most_active_participants: T.Uint64 = 0; - for (let update of (this.store.valid_updates as TSet).elements()) { - let active_participants = 0; - for (let bit of update.sync_committee_bits) { - if (bit == 1) { - active_participants = active_participants + 1; - } - } - if (active_participants > most_active_participants) { - most_active_participants = active_participants; - best_valid_update = update; - } - } - this.apply_light_client_update(best_valid_update); - this.store.valid_updates = []; - } - }; -} - -Dev.compileContract( - 'compilation', - new BeaconLightClient( - { - snapshot: { - header: { - slot: 0, - proposer_index: 0, - parent_root: '0x0' as T.Root, - state_root: '0x0' as T.Root, - body_root: '0x0' as T.Root, - }, - current_sync_committee: { - pubkeys: [], - aggregate_pubkey: '0x0' as T.BLSPubkey, - }, - next_sync_committee: { - pubkeys: [], - aggregate_pubkey: '0x0' as T.BLSPubkey, - }, - }, - valid_updates: [] as TSet, - } as I.LightClientStore, - '0x32251a5a748672e3acb1e574ec27caf3b6be68d581c44c402eb166d71a89808e', - ), -); diff --git a/beacon-light-client/typescript/src/types/basic-types.ts b/beacon-light-client/typescript/src/types/basic-types.ts deleted file mode 100644 index d0b0938ba..000000000 --- a/beacon-light-client/typescript/src/types/basic-types.ts +++ /dev/null @@ -1,28 +0,0 @@ -// ================= -// / BASIC TYPES \ -// ================= - -export type Uint64 = TNat; -export type Bit = TNat; // 0 | 1 - -export type Bytes98 = TBytes; -export type Bytes46 = TBytes; -export type Bytes32 = TBytes; -export type Bytes8 = TBytes; -export type Bytes4 = TBytes; -export type Bytes = TBytes; - -export type Slot = Uint64; -export type Epoch = Uint64; - -export type ValidatorIndex = Uint64; - -export type Root = Bytes32; -export type Domain = Bytes32; -export type DomainType = Bytes4; -export type Version = Bytes4; - -export type BLSPubkey = Bytes98; -export type BLSSignature = Bytes46; - -export type Bitvector = TList; diff --git a/beacon-light-client/typescript/src/types/interfaces.ts b/beacon-light-client/typescript/src/types/interfaces.ts deleted file mode 100644 index 32c6f2952..000000000 --- a/beacon-light-client/typescript/src/types/interfaces.ts +++ /dev/null @@ -1,61 +0,0 @@ -// ================ -// / INTERFACES \ -// ================ - -import type * as T from '../types/basic-types'; - -// PHASE 0 -export interface ForkData { - current_version: T.Version; - genesis_validators_root: T.Root; -} - -export interface SigningData { - object_root: T.Root; - domain: T.Domain; -} - -export interface BeaconBlockHeader { - slot: T.Slot; - proposer_index: T.ValidatorIndex; - parent_root: T.Root; - state_root: T.Root; - body_root: T.Root; -} - -// ALTAIR -export interface SyncCommittee { - pubkeys: TList; - aggregate_pubkey: T.BLSPubkey; -} - -export interface LightClientSnapshot { - // Beacon block header - header: BeaconBlockHeader; - // Sync committees corresponding to the header - current_sync_committee: SyncCommittee; - next_sync_committee: SyncCommittee; -} - -export interface LightClientUpdate { - // Update beacon block header - attested_header: BeaconBlockHeader; - // Next sync committee corresponding to the header - next_sync_committee: SyncCommittee; - next_sync_committee_branch: TList; - // Finality proof for the update header - finalized_header: BeaconBlockHeader; - finality_branch: TList; - // Sync committee aggregate signature - sync_aggregate: { - sync_committee_bits: T.Bitvector; - sync_committee_signature: T.BLSSignature; - }; - // Fork version for the aggregate signature - fork_version: T.Version; -} - -export interface LightClientStore { - snapshot: LightClientSnapshot; - valid_updates: TSet; -} diff --git a/beacon-light-client/typescript/src/utils/Constants.contract.ts b/beacon-light-client/typescript/src/utils/Constants.contract.ts deleted file mode 100644 index 958864410..000000000 --- a/beacon-light-client/typescript/src/utils/Constants.contract.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type * as T from '../types/basic-types'; -import type * as I from '../types/interfaces'; - -// =============== -// / CONSTANTS \ -// =============== - -@Contract -export class Constants { - // PHASE 0 - DOMAIN_SYNC_COMMITTEE: T.DomainType = '0x07000000' as T.DomainType; - GENESIS_FORK_VERSION: T.Version = '0x00000000' as T.Version; - - EPOCHS_PER_SYNC_COMMITTEE_PERIOD: T.Uint64 = 256; - - SLOTS_PER_EPOCH: T.Uint64 = 32; - - BLSPUBLICKEY_LENGTH: T.Uint64 = 48; - - SYNC_COMMITTEE_SIZE: T.Uint64 = 512; - - // ALTAIR - FINALIZED_ROOT_INDEX: T.Uint64 = 105; - FINALIZED_ROOT_DEPTH: T.Uint64 = 6; - - NEXT_SYNC_COMMITTEE_INDEX: T.Uint64 = 55; - NEXT_SYNC_COMMITTEE_DEPTH: T.Uint64 = 5; - - MIN_SYNC_COMMITTEE_PARTICIPANTS: T.Uint64 = 1; - - EMPTY_BEACON_HEADER: I.BeaconBlockHeader = { - slot: 0 as T.Slot, - proposer_index: 0 as T.ValidatorIndex, - parent_root: '0x0000000000000000000000000000000000000000000000000000000000000000' as T.Root, - state_root: '0x0000000000000000000000000000000000000000000000000000000000000000' as T.Root, - body_root: '0x0000000000000000000000000000000000000000000000000000000000000000' as T.Root, - }; - - EMPTY_SYNC_COMMITTEE: I.SyncCommittee = { - pubkeys: [] as TList, - aggregate_pubkey: - '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' as T.BLSPubkey, - }; - - EMPTY_LIGHT_CLIENT_UPDATE: I.LightClientUpdate = { - header: this.EMPTY_BEACON_HEADER, - next_sync_committee: this.EMPTY_SYNC_COMMITTEE, - next_sync_committee_branch: [] as TList, - finality_header: this.EMPTY_BEACON_HEADER, - finality_branch: [] as TList, - sync_committee_bits: [] as T.Bitvector, - sync_committee_signature: - '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' as T.BLSSignature, - fork_version: '0x00000000' as T.Version, - }; -} - -Dev.compileContract('compilation', new Constants()); diff --git a/beacon-light-client/typescript/src/utils/Helpers.contract.ts b/beacon-light-client/typescript/src/utils/Helpers.contract.ts deleted file mode 100644 index 2c09d08f3..000000000 --- a/beacon-light-client/typescript/src/utils/Helpers.contract.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type * as T from '../types/basic-types'; - -import * as C from '../utils/Constants.contract'; - -// =========== -// / UTILS \ -// =========== - -@Contract -export class Helpers extends C.Constants { - pow = (base: T.Uint64, exponent: T.Uint64): T.Uint64 => { - if (base == 1) { - return base; - } - - let result: T.Uint64 = 1; - for (let i = 0; i < exponent; i += 1) { - result = result * base; - } - - return result; - }; - - getElementInUintArrayAt = (index: T.Uint64, arr: TList): T.Uint64 => { - if (index >= (arr as TList).size()) { - return 0 as T.Uint64; - } - - let i: T.Uint64 = 0; - for (const ele of arr as TList) { - if (i == index) { - return ele; - } - i += 1; - } - - Sp.failWith('Helpers: Invalid params!'); - return 0 as T.Uint64; - }; - - getElementInBytesArrayAt = (index: T.Uint64, arr: TList): T.Bytes32 => { - if (index >= (arr as TList).size()) { - return '0x0000000000000000000000000000000000000000000000000000000000000000' as T.Bytes32; - } - - let i = 0; - for (const ele of arr as TList) { - if (i == index) { - return ele; - } - i += 1; - } - - Sp.failWith('Helpers: Invalid params!'); - return '0x0000000000000000000000000000000000000000000000000000000000000000' as T.Bytes32; - }; - - setElementInBytesArrayAt = (index: T.Uint64, arr: TList, element: T.Bytes): TList => { - if (index >= (arr as TList).size()) { - Sp.failWith('Helpers: Invalid params!'); - } - - let i = 0; - const result_array: TList = []; - for (const e of arr as TList) { - if (i != index) { - result_array.push(e); - } else { - result_array.push(element); - } - i += 1; - } - - return result_array.reverse(); - }; -} - -Dev.compileContract('compilation', new Helpers()); diff --git a/beacon-light-client/typescript/src/utils/Utils.contract.ts b/beacon-light-client/typescript/src/utils/Utils.contract.ts deleted file mode 100644 index af258debe..000000000 --- a/beacon-light-client/typescript/src/utils/Utils.contract.ts +++ /dev/null @@ -1,202 +0,0 @@ -import * as T from '../types/basic-types'; -import type * as I from '../types/interfaces'; - -import * as H from '../utils/Helpers.contract'; - -// ============= -// / HELPERS \ -// ============= - -@Contract -export class Utils extends H.Helpers { - reverse64 = (v: T.Uint64): T.Uint64 => { - let r: T.Uint64 = 0; - let c: T.Uint64 = 63; - for (let i = 63; i >= 0; i -= 1) { - let p: T.Uint64 = 0; - let m: T.Uint64 = Sp.ediv(i, 8).openSome().snd(); - - p = i - m + (c - i); - - if (m == 0) { - c -= 8; - } - - if (Sp.ediv(v, 2).openSome().snd() == 1) { - r += this.pow(2, p); - } - v = Sp.ediv(v, 2).openSome().fst(); - } - return r as T.Uint64; - }; - - to_little_endian_64 = (value: T.Uint64): T.Bytes8 => { - return Sp.pack(this.reverse64(value)); - }; - - compute_epoch_at_slot = (slot: T.Slot): T.Epoch => { - return Sp.ediv(slot, this.SLOTS_PER_EPOCH).openSome().fst(); - }; - - get_power_of_two_ceil = (n: T.Uint64): T.Uint64 => { - if (n <= 1) { - return 1; - } else if (n == 2) { - return 2; - } else { - return ( - 2 * - this.get_power_of_two_ceil( - Sp.ediv(n + 1, 2) - .openSome() - .fst(), - ) - ); - } - }; - - merkle_root = (leaves: TList): T.Bytes32 => { - if ((leaves as TList).size() == 0) { - return '0x0000000000000000000000000000000000000000000000000000000000000000'; - } else if ((leaves as TList).size() == 1) { - return Sp.sha256(this.getElementInBytesArrayAt(0, leaves) as T.Bytes32); - } else if ((leaves as TList).size() == 2) { - return Sp.sha256( - (this.getElementInBytesArrayAt(0, leaves) as TBytes).concat( - this.getElementInBytesArrayAt(1, leaves) as TBytes, - ), - ); - } - - const bottom_length: T.Uint64 = this.get_power_of_two_ceil((leaves as TList).size()); - const tree: TList = []; - for (let i = 0; i < bottom_length * 2; i += 1) { - tree.push('0x0000000000000000000000000000000000000000000000000000000000000000' as T.Bytes32); - } - for (let i = 0; i < (leaves as TList).size(); i += 1) { - tree = this.setElementInBytesArrayAt(bottom_length + i, this.getElementInBytesArrayAt(i, leaves), tree); - } - for (let i = bottom_length - 1; i > 0; i -= 1) { - tree = this.setElementInBytesArrayAt( - i, - tree, - Sp.sha256( - (this.getElementInBytesArrayAt(i * 2, tree) as T.Bytes32).concat( - this.getElementInBytesArrayAt(i * 2 + 1, tree) as T.Bytes32, - ), - ), - ); - } - - return this.getElementInBytesArrayAt(1, tree); - }; - - is_valid_merkle_branch = ( - leaf: T.Bytes32, - branch: TList, - depth: T.Uint64, - index: T.Uint64, - root: T.Root, - ): TBool => { - let value = leaf; - let i: T.Uint64 = 0; - for (let n of branch) { - if (Sp.ediv(index, this.pow(2, i)).openSome().fst() % 2 == 1) { - value = Sp.sha256((n as T.Bytes32).concat(value)); - } else { - value = Sp.sha256(value.concat(n as T.Bytes32)); - } - - i += 1; - if (i == depth) { - // exit loop - return value == root; - } - } - return false; - }; - - hash_tree_root__fork_data = (fork_data: I.ForkData): T.Bytes32 => { - return Sp.sha256('0x00000000000000000000000000000000000000000000000000000000' as T.Bytes) - .concat(fork_data.current_version as T.Version) - .concat(fork_data.genesis_validators_root); - }; - - hash_tree_root__signing_data = (signing_data: I.SigningData): T.Bytes32 => { - return Sp.sha256((signing_data.object_root as T.Root).concat(signing_data.domain)); - }; - - hash_tree_root__block_header = (block_header: I.BeaconBlockHeader): T.Bytes32 => { - const leaves: TList = []; - leaves.push(block_header.body_root); - leaves.push(block_header.state_root); - leaves.push(block_header.parent_root); - leaves.push( - this.to_little_endian_64(block_header.proposer_index).concat( - '0x000000000000000000000000000000000000000000000000' as T.Bytes, - ), - ); - leaves.push( - this.to_little_endian_64(block_header.slot).concat( - '0x000000000000000000000000000000000000000000000000' as T.Bytes, - ), - ); - return this.merkle_root(leaves); - }; - - hash_tree_root__sync_committee = (sync_committee: I.SyncCommittee): T.Bytes32 => { - if ((sync_committee.pubkeys as TList).size() != this.SYNC_COMMITTEE_SIZE) { - Sp.failWith( - 'Invalid sync_committee size: Committee participant should be less than' + - this.SYNC_COMMITTEE_SIZE + - 1 + - '!', - ); - } - - if ((sync_committee.aggregate_pubkey as T.BLSPubkey).size() != this.BLSPUBLICKEY_LENGTH) { - Sp.failWith('Invalid aggregate pubkey: Length should be equal to ' + this.BLSPUBLICKEY_LENGTH + '!'); - } - - let leaves: TList = []; - for (let key of sync_committee.pubkeys) { - if ((key as T.BLSPubkey).size() != this.BLSPUBLICKEY_LENGTH) { - Sp.failWith('Invalid pubkey: Length should be equal to ' + this.BLSPUBLICKEY_LENGTH + '!'); - } - leaves.push(Sp.sha256((key as T.BLSPubkey).concat('0x00000000000000000000000000000000'))); - } - leaves = leaves.reverse(); - const pubkeys_root = this.merkle_root(leaves); - - const aggregate_pubkeys_root: T.Bytes32 = Sp.sha256( - (sync_committee.aggregate_pubkey as T.BLSPubkey).concat('0x00000000000000000000000000000000'), - ); - - return Sp.sha256(pubkeys_root.concat(aggregate_pubkeys_root)); - }; - - compute_fork_data_root = (current_version: T.Version, genesis_validators_root: T.Root) => { - return this.hash_tree_root__fork_data({ - current_version, - genesis_validators_root, - }); - }; - - compute_signing_root = (block_header: I.BeaconBlockHeader, domain: T.Domain): T.Root => { - return this.hash_tree_root__signing_data({ - object_root: this.hash_tree_root__block_header(block_header), - domain, - }); - }; - - compute_domain = ( - domain_type: T.DomainType, - fork_version: T.Version, - genesis_validators_root: T.Root, - ): T.Domain => { - const fork_data_root: T.Root = this.compute_fork_data_root(fork_version, genesis_validators_root); - return (domain_type as T.DomainType).concat(fork_data_root.slice(0, 28).openSome()); - }; -} - -Dev.compileContract('compilation', new Utils()); diff --git a/beacon-light-client/typescript/test/implementation/environment.js b/beacon-light-client/typescript/test/implementation/environment.js deleted file mode 100644 index e1b434ead..000000000 --- a/beacon-light-client/typescript/test/implementation/environment.js +++ /dev/null @@ -1,72 +0,0 @@ -const { digest } = require('@chainsafe/as-sha256'); - -// =============================== -// / SMARTTS ENVIRONMENT SETUP \ -// =============================== - -const empty_bytes = (size) => Array(size).fill(0); - -function Uint8ArrayToHexString(array) { - let hex = ''; - for (let n of array) { - hex = hex.concat(n.toString(16).padStart(2, '0')); - } - return '0x'.concat(hex.padStart(64, '0')); -} - -class TPair { - constructor(first, second) { - this.first = first; - this.second = second; - } - - fst() { - return this.first; - } - - snd() { - return this.second; - } -} - -class TOption { - constructor(o1, o2) { - this.o1 = o1; - this.o2 = o2; - } - - openSome() { - return new TPair(this.o1, this.o2); - } -} - -class SpClass { - failWith(message) { - throw new Error(message); - } - - ediv(n1, n2) { - return new TOption(Math.floor(n1 / n2), n1 % n2); - } - - pack(n) { - const array = []; - const hexString = n.toString(16).padStart(Math.ceil(n.toString(16).length / 2) * 2, '0'); - - for (let i = 0; i < hexString.length; i += 2) array.push(parseInt(hexString.slice(i, i + 2), 16)); - - return array; - } - - sha256(s) { - return digest(s); - } -} - -const Sp = new SpClass(); - -module.exports = { - Sp, - empty_bytes, - Uint8ArrayToHexString, -}; diff --git a/beacon-light-client/typescript/test/implementation/index.js b/beacon-light-client/typescript/test/implementation/index.js deleted file mode 100644 index 312412f81..000000000 --- a/beacon-light-client/typescript/test/implementation/index.js +++ /dev/null @@ -1,472 +0,0 @@ -const { Sp, empty_bytes, Uint8ArrayToHexString } = require('./environment'); - -// =============== -// / CONSTANTS \ -// =============== - -// @Contract -class Constants { - // PHASE 0 - DOMAIN_SYNC_COMMITTEE = [7, 0, 0, 0]; - GENESIS_FORK_VERSION = empty_bytes(4); - - EPOCHS_PER_SYNC_COMMITTEE_PERIOD = 256; - - SLOTS_PER_EPOCH = 32; - - BLSPUBLICKEY_LENGTH = 48; - - SYNC_COMMITTEE_SIZE = 512; - - // ALTAIR - FINALIZED_ROOT_INDEX = 105; - FINALIZED_ROOT_DEPTH = 6; - - NEXT_SYNC_COMMITTEE_INDEX = 55; - NEXT_SYNC_COMMITTEE_DEPTH = 5; - - MIN_SYNC_COMMITTEE_PARTICIPANTS = 1; - - EMPTY_BEACON_HEADER = { - slot: 0, - proposer_index: 0, - parent_root: empty_bytes(32), - state_root: empty_bytes(32), - body_root: empty_bytes(32), - }; - - EMPTY_SYNC_COMMITTEE = { - pubkeys: [], - aggregate_pubkey: empty_bytes(98), - }; - - EMPTY_LIGHT_CLIENT_UPDATE = { - header: this.EMPTY_BEACON_HEADER, - next_sync_committee: this.EMPTY_SYNC_COMMITTEE, - next_sync_committee_branch: [], - finality_header: this.EMPTY_BEACON_HEADER, - finality_branch: [], - sync_committee_bits: [], - sync_committee_signature: empty_bytes(46), - fork_version: [0, 0, 0, 0], - }; -} - -// ============= -// / HELPERS \ -// ============= - -// @Contract -class Helpers extends Constants { - pow = (base, exponent) => { - if (base == 1) { - return base; - } - - let result = 1; - for (let i = 0; i < exponent; i += 1) { - result = result * base; - } - - return result; - }; - - getElementInUintArrayAt = (index, arr) => { - if (index >= arr.length) { - return 0; - } - - let i = 0; - for (const ele of arr) { - if (i == index) { - return ele; - } - i += 1; - } - - Sp.failWith('Helpers: Invalid params!'); - return 0; - }; - - getElementInBytesArrayAt = (index, arr) => { - if (index >= arr.length) { - return empty_bytes(32); - } - - let i = 0; - for (const ele of arr) { - if (i == index) { - return ele; - } - i += 1; - } - - Sp.failWith('Helpers: Invalid params!'); - return empty_bytes(32); - }; - - setElementInBytesArrayAt = (index, arr, element) => { - if (index >= arr.length) { - Sp.failWith('Helpers: Invalid params!'); - } - - let i = 0; - const result_array = []; - for (const e of arr) { - if (i != index) { - result_array.splice(0, 0, e); - } else { - result_array.splice(0, 0, element); - } - i += 1; - } - - return result_array.reverse(); - }; -} - -// =========== -// / UTILS \ -// =========== - -// @Contract -class Utils extends Helpers { - reverse64 = (v) => { - let r = 0; - let c = 63; - for (let i = 63; i >= 0; i -= 1) { - let p = 0; - let m = Sp.ediv(i, 8).openSome().snd(); - - p = i - m + (c - i); - - if (m == 0) { - c -= 8; - } - - if (Sp.ediv(v, 2).openSome().snd() == 1) { - r += this.pow(2, p); - } - v = Sp.ediv(v, 2).openSome().fst(); - } - return r; - }; - - to_little_endian_64 = (value) => { - const bytesReverseValue = Sp.pack(this.reverse64(value)); - return [...Array(8 - bytesReverseValue.length).fill(0), ...bytesReverseValue]; - }; - - compute_epoch_at_slot = (slot) => { - return Sp.ediv(slot, this.SLOTS_PER_EPOCH).openSome().fst(); - }; - - get_power_of_two_ceil = (n) => { - if (n <= 1) { - return 1; - } else if (n == 2) { - return 2; - } else { - return ( - 2 * - this.get_power_of_two_ceil( - Sp.ediv(n + 1, 2) - .openSome() - .fst(), - ) - ); - } - }; - - merkle_root = (leaves) => { - if (leaves.length == 0) { - return empty_bytes(32); - } else if (leaves.length == 1) { - return Sp.sha256(this.getElementInBytesArrayAt(0, leaves)); - } else if (leaves.length == 2) { - return Sp.sha256([ - ...this.getElementInBytesArrayAt(0, leaves), - ...this.getElementInBytesArrayAt(1, leaves), - ]); - } - - const bottom_length = this.get_power_of_two_ceil(leaves.length); - let tree = Array(bottom_length * 2).fill(empty_bytes(32)); - for (let i = 0; i < leaves.length; i += 1) { - tree = this.setElementInBytesArrayAt(bottom_length + i, tree, this.getElementInBytesArrayAt(i, leaves)); - } - for (let i = bottom_length - 1; i > 0; i -= 1) { - tree = this.setElementInBytesArrayAt( - i, - tree, - Sp.sha256([ - ...this.getElementInBytesArrayAt(i * 2, tree), - ...this.getElementInBytesArrayAt(i * 2 + 1, tree), - ]), - ); - } - - return this.getElementInBytesArrayAt(1, tree); - }; - - is_valid_merkle_branch = (leaf, branch, depth, index, root) => { - let value = leaf; - let i = 0; - for (let n of branch) { - // if ((this.pow(Sp.ediv(index, 2).openSome().fst(), i) % 2) + depth == 0) { - if (Sp.ediv(index, this.pow(2, i)).openSome().fst() % 2 == 1) { - value = Sp.sha256([...n, ...value]); - } else { - value = Sp.sha256([...value, ...n]); - } - - i += 1; - if (i == depth) { - // exit loop - return Uint8ArrayToHexString(value) == Uint8ArrayToHexString(root); - } - } - return false; - }; - - hash_tree_root__fork_data = (fork_data) => { - return Sp.sha256([...Array(28).fill(0), ...fork_data.current_version, ...fork_data.genesis_validators_root]); - }; - - hash_tree_root__signing_data = (signing_data) => { - return Sp.sha256([...signing_data.object_root, ...signing_data.domain]); - }; - - hash_tree_root__block_header = (block_header) => { - const leaves = []; - leaves.splice(0, 0, block_header.body_root); - leaves.splice(0, 0, block_header.state_root); - leaves.splice(0, 0, block_header.parent_root); - leaves.splice(0, 0, [...this.to_little_endian_64(block_header.proposer_index), ...Array(24).fill(0)]); - leaves.splice(0, 0, [...this.to_little_endian_64(block_header.slot), ...Array(24).fill(0)]); - return this.merkle_root(leaves); - }; - - hash_tree_root__sync_committee = (sync_committee) => { - if (sync_committee.pubkeys.length != this.SYNC_COMMITTEE_SIZE) { - Sp.failWith( - 'Invalid sync_committee size: Committee participant should be equal to' + - this.SYNC_COMMITTEE_SIZE + - '!', - ); - } - - if (sync_committee.aggregate_pubkey.length != this.BLSPUBLICKEY_LENGTH) { - Sp.failWith('Invalid aggregate pubkey: Length should be equal to ' + this.BLSPUBLICKEY_LENGTH + '!'); - } - - let leaves = []; - for (let key of sync_committee.pubkeys) { - if (key.length != this.BLSPUBLICKEY_LENGTH) { - Sp.failWith('Invalid pubkey length: Length should be equal to ' + this.BLSPUBLICKEY_LENGTH + '!'); - } - leaves.splice(0, 0, Sp.sha256([...key, ...Array(16).fill(0)])); - } - leaves = leaves.reverse(); - const pubkeys_root = this.merkle_root(leaves); - - const aggregate_pubkeys_root = Sp.sha256([...sync_committee.aggregate_pubkey, ...Array(16).fill(0)]); - - return Sp.sha256([...pubkeys_root, ...aggregate_pubkeys_root]); - }; - - compute_fork_data_root = (current_version, genesis_validators_root) => { - return this.hash_tree_root__fork_data({ - current_version, - genesis_validators_root, - }); - }; - - compute_signing_root = (block_header, domain) => { - return this.hash_tree_root__signing_data({ - object_root: this.hash_tree_root__block_header(block_header), - domain, - }); - }; - - compute_domain = (domain_type, fork_version, genesis_validators_root) => { - const fork_data_root = this.compute_fork_data_root(fork_version, genesis_validators_root); - return [...domain_type, ...fork_data_root.slice(0, 28)]; - }; -} - -// =================== -// / Main Contract \ -// =================== - -class BeaconLightClient extends Utils { - constructor(_store, _genesis_validators_root) { - super(); - this.store = _store; - this.genesis_validators_root = _genesis_validators_root; - } - - blsFastAggregateVerify = (pubkeys, root, signature) => { - pubkeys; - root; - signature; - return true; - }; - - compute_sync_committee_period = (slot) => { - return Sp.ediv(this.compute_epoch_at_slot(slot), this.EPOCHS_PER_SYNC_COMMITTEE_PERIOD).openSome().fst(); - }; - - validate_light_client_update = (update) => { - // Verify update slot is larger than snapshot slot - if (!(update.attested_header.slot > this.store.snapshot.header.slot)) { - Sp.failWith('Update validation failed: Update slot is before the current snapshot slot!'); - } - - // Verify update does not skip a sync committee period - const update_period = this.compute_sync_committee_period(update.attested_header.slot); - const snapshot_period = this.compute_sync_committee_period(this.store.snapshot.header.slot); - - if (update_period != snapshot_period && update_period != snapshot_period + 1) { - console.log(update_period, snapshot_period); - Sp.failWith('Update validation failed: Update skips a sync comittee period!'); - } - - // Verify update header root is the finalized root of the finality header, if specified - let signed_header = this.EMPTY_BEACON_HEADER; - if ( - this.hash_tree_root__block_header(update.finalized_header) == - this.hash_tree_root__block_header(this.EMPTY_BEACON_HEADER) - ) { - signed_header = update.attested_header; - if (update.finality_branch.length != 0) { - Sp.failWith( - 'Update validation failed: There is no finality header, but the finality branch is not empty!', - ); - } - } else { - signed_header = update.finalized_header; - if ( - !this.is_valid_merkle_branch( - this.hash_tree_root__block_header(update.finalized_header), - update.finality_branch, - this.FINALIZED_ROOT_DEPTH, - this.FINALIZED_ROOT_INDEX, - update.attested_header.state_root, - ) - ) { - Sp.failWith('Update validation failed: Merkle branch not valid!'); - } - } - - // Verify update next sync committee if the update period incremented - let sync_committee = this.EMPTY_SYNC_COMMITTEE; - if (update_period == snapshot_period) { - sync_committee = this.store.snapshot.current_sync_committee; - if (update.next_sync_committee_branch.length != 0) { - Sp.failWith('Update validation failed: Next sync committee branch not empty!'); - } - } else { - sync_committee = update.next_sync_committee; - if ( - !this.is_valid_merkle_branch( - this.hash_tree_root__sync_committee(update.next_sync_committee), - update.next_sync_committee_branch, - this.NEXT_SYNC_COMMITTEE_DEPTH, - this.NEXT_SYNC_COMMITTEE_INDEX, - update.attested_header.state_root, - ) - ) { - Sp.failWith('Update validation failed: Merkle branch not valid!'); - } - } - - // Verify sync committee aggregate signature - let participants_pubkeys = []; - for (let i = 0; i < update.sync_aggregate.sync_committee_bits.length; i += 1) { - if (this.getElementInUintArrayAt(i, update.sync_aggregate.sync_committee_bits) == 1) { - participants_pubkeys.splice(0, 0, this.getElementInBytesArrayAt(i, sync_committee.pubkeys)); - } - } - - // Verify sync committee has sufficient participants - if (!(participants_pubkeys.length >= this.MIN_SYNC_COMMITTEE_PARTICIPANTS)) { - Sp.failWith('Update validation failed: Sync committee does not have sufficient participants'); - } - - participants_pubkeys = participants_pubkeys.reverse(); - - const domain = this.compute_domain( - this.DOMAIN_SYNC_COMMITTEE, - this.GENESIS_FORK_VERSION, - this.genesis_validators_root, - ); - const signing_root = this.compute_signing_root(signed_header, domain); - - const valid = this.blsFastAggregateVerify(participants_pubkeys, signing_root, update.sync_committee_signature); - - if (!valid) { - Sp.failWith('Update validation failed: Fast aggregate verification failed!'); - } - }; - - apply_light_client_update = (update) => { - const update_period = this.compute_sync_committee_period(update.attested_header.slot); - const snapshot_period = this.compute_sync_committee_period(this.store.snapshot.header.slot); - - if (update_period == snapshot_period + 1) { - this.store.snapshot.current_sync_committee = update.next_sync_committee; - } - this.store.snapshot.header = update.attested_header; - }; - - process_light_client_update = (update, current_slot) => { - this.validate_light_client_update(update); - this.store.valid_updates.splice(0, 0, update); - - const update_timeout = this.SLOTS_PER_EPOCH * this.EPOCHS_PER_SYNC_COMMITTEE_PERIOD; - - let committee_participants = 0; - for (let bit of update.sync_aggregate.sync_committee_bits) { - if (bit == 1) { - committee_participants = committee_participants + 1; - } - } - if ( - committee_participants * 3 >= update.sync_aggregate.sync_committee_bits.length * 2 && - this.hash_tree_root__block_header(update.finalized_header) != - this.hash_tree_root__block_header(this.EMPTY_BEACON_HEADER) - ) { - // Apply update if (1) 2/3 quorum is reached and (2) we have a finality proof. - // Note that (2) means that the current light client design needs finality. - // It may be changed to re-organizable light client design. See the on-going issue eth2.0-specs#2182. - this.apply_light_client_update(update); - this.store.valid_updates = []; - } else if (current_slot > this.store.snapshot.header.slot + update_timeout) { - let best_valid_update = this.EMPTY_LIGHT_CLIENT_UPDATE; - let most_active_participants = 0; - for (let update of this.store.valid_updates) { - let active_participants = 0; - for (let bit of update.sync_committee_bits) { - if (bit == 1) { - active_participants = active_participants + 1; - } - } - if (active_participants > most_active_participants) { - most_active_participants = active_participants; - best_valid_update = update; - } - } - this.apply_light_client_update(best_valid_update); - this.store.valid_updates = []; - } - }; -} - -module.exports = { - Sp, - BeaconLightClient, - Utils, - Helpers, - Constants, -}; diff --git a/beacon-light-client/typescript/test/test.js b/beacon-light-client/typescript/test/test.js deleted file mode 100644 index 90f5d1065..000000000 --- a/beacon-light-client/typescript/test/test.js +++ /dev/null @@ -1,621 +0,0 @@ -const { digest } = require('@chainsafe/as-sha256'); -const { expect } = require('chai'); -const axios = require('axios'); -const { - Sp, - Constants: ConstantsContract, - Helpers: HelpersContract, - Utils: UtilsContract, - BeaconLightClient: BeaconLightClientContract, -} = require('./implementation'); - -// helper for digest and sha256 -function Uint8ArrayToHexString(array) { - let hex = ''; - for (let n of array) { - hex = hex.concat(n.toString(16).padStart(2, '0')); - } - return '0x'.concat(hex); -} - -function hexStringToUint8Array(_hex) { - _hex = _hex.replace('0x', ''); - let array = []; - for (let i = 0; i < _hex.length; i += 2) array.push(parseInt(_hex.slice(i, i + 2), 16)); - return Buffer.from(array); -} - -function formatUpdate(update) { - update.attested_header.slot = Number(update.attested_header.slot); - update.attested_header.proposer_index = Number(update.attested_header.proposer_index); - update.attested_header.parent_root = hexStringToUint8Array(update.attested_header.parent_root); - update.attested_header.state_root = hexStringToUint8Array(update.attested_header.state_root); - update.attested_header.body_root = hexStringToUint8Array(update.attested_header.body_root); - - update.next_sync_committee.pubkeys = update.next_sync_committee.pubkeys.map(hexStringToUint8Array); - update.next_sync_committee.aggregate_pubkey = hexStringToUint8Array(update.next_sync_committee.aggregate_pubkey); - - update.next_sync_committee_branch = update.next_sync_committee_branch.map(hexStringToUint8Array); - - update.finalized_header.slot = Number(update.finalized_header.slot); - update.finalized_header.proposer_index = Number(update.finalized_header.proposer_index); - update.finalized_header.parent_root = hexStringToUint8Array(update.finalized_header.parent_root); - update.finalized_header.state_root = hexStringToUint8Array(update.finalized_header.state_root); - update.finalized_header.body_root = hexStringToUint8Array(update.finalized_header.body_root); - - update.finality_branch = update.finality_branch.map(hexStringToUint8Array); - - update.sync_aggregate.sync_committee_bits = [...hexStringToUint8Array(update.sync_aggregate.sync_committee_bits)] - .map((x) => x.toString(2).padStart(8, '0')) - .join('') - .split('') - .map(Number); - update.sync_aggregate.sync_committee_signature = hexStringToUint8Array( - update.sync_aggregate.sync_committee_signature, - ); - - update.signature_slot = Number(update.signature_slot); - - return update; -} - -function formatSnapshot(snapshot) { - snapshot.header.slot = Number(snapshot.header.slot); - snapshot.header.proposer_index = Number(snapshot.header.proposer_index); - snapshot.header.parent_root = hexStringToUint8Array(snapshot.header.parent_root); - snapshot.header.state_root = hexStringToUint8Array(snapshot.header.state_root); - snapshot.header.body_root = hexStringToUint8Array(snapshot.header.body_root); - - snapshot.current_sync_committee.pubkeys = snapshot.current_sync_committee.pubkeys.map(hexStringToUint8Array); - snapshot.current_sync_committee.aggregate_pubkey = hexStringToUint8Array( - snapshot.current_sync_committee.aggregate_pubkey, - ); - - snapshot.current_sync_committee_branch = snapshot.current_sync_committee_branch.map(hexStringToUint8Array); - - return snapshot; -} - -describe('Tests', function () { - const contracts = {}; - - const RANDOM_BYTES = [ - [ - 0xb1, 0x0e, 0x5f, 0x99, 0xe8, 0xf9, 0xa0, 0xff, 0x42, 0x63, 0x06, 0x54, 0x1b, 0x60, 0x6e, 0x55, 0xc5, 0xcb, - 0x55, 0x51, 0xe6, 0xe5, 0x55, 0x28, 0x00, 0x60, 0xad, 0x1a, 0x36, 0x61, 0x96, 0x74, - ], - [ - 0x41, 0xea, 0xb3, 0xe7, 0xa7, 0x06, 0x98, 0x9d, 0x60, 0xbd, 0x4a, 0x07, 0x9f, 0x42, 0xc6, 0x62, 0xb2, 0xee, - 0xae, 0x2e, 0xc4, 0xdd, 0x11, 0xeb, 0x69, 0x13, 0x9a, 0x90, 0x7f, 0x7f, 0xbb, 0x53, - ], - [ - 0x94, 0x25, 0xfe, 0x42, 0xbf, 0xc1, 0xf4, 0x18, 0xce, 0xff, 0x56, 0x07, 0x8a, 0x25, 0x84, 0x90, 0x43, 0x68, - 0xb5, 0x49, 0x25, 0xf4, 0xbf, 0x00, 0x8a, 0x3d, 0x76, 0x9e, 0x5b, 0xb9, 0xc5, 0x91, - ], - [ - 0x3e, 0xcb, 0xf8, 0x36, 0xb6, 0xf2, 0xdc, 0xa2, 0x49, 0xf9, 0x60, 0x41, 0xaa, 0x1d, 0x6d, 0xc3, 0xd2, 0x6b, - 0x34, 0x9c, 0x35, 0x41, 0xff, 0x85, 0x85, 0x02, 0x5b, 0x3e, 0x5f, 0x81, 0x97, 0x30, - ], - ]; - const RANDOM_BYTES_ROOT = [ - 52, 102, 42, 239, 137, 145, 193, 146, 121, 211, 207, 70, 228, 246, 164, 172, 174, 157, 201, 52, 174, 119, 148, - 78, 75, 151, 31, 52, 86, 227, 4, 92, - ]; - - const EMPTY_BYTES4 = Array(4).fill(0); - const EMPTY_BYTES32 = Array(32).fill(0); - const EMPTY_BYTES46 = Array(46).fill(0); - - const EMPTY_BEACON_HEADER = { - slot: 0, - proposer_index: 0, - parent_root: EMPTY_BYTES32, - state_root: EMPTY_BYTES32, - body_root: EMPTY_BYTES32, - }; - - const EMPTY_SYNC_COMMITTEE = { - pubkeys: [], - aggregate_pubkey: EMPTY_BYTES46, - }; - - const EMPTY_LIGHT_CLIENT_UPDATE = { - header: EMPTY_BEACON_HEADER, - next_sync_committee: EMPTY_SYNC_COMMITTEE, - next_sync_committee_branch: [], - finality_header: EMPTY_BEACON_HEADER, - finality_branch: [], - sync_committee_bits: [], - sync_committee_signature: EMPTY_BYTES46, - fork_version: EMPTY_BYTES4, - }; - - before(async function () { - console.log(' >>> Fetching BLC data...'); - BLC_SNAPSHOT = formatSnapshot( - ( - await axios.get( - 'https://raw.githubusercontent.com/metacraft-labs/eth2-light-client-updates/main/mainnet/snapshot.json', - ) - ).data.data.v, - ); - const promises = []; - for (let i = 291; i <= 533; i++) - promises.push( - axios.get( - `https://raw.githubusercontent.com/metacraft-labs/eth2-light-client-updates/main/mainnet/updates/${i - .toString() - .padStart(5, '0')}.json`, - ), - ); - BLC_UPDATES = (await Promise.all(promises)).map((x) => x.data).map(formatUpdate); - }); - - describe('SP', function () { - describe('Sp.failWith', function () { - it('should throw an error when invoked', function () { - expect(() => Sp.failWith()).to.throw(); - }); - - it('should throw an error with the given message', function () { - expect(() => Sp.failWith('error_message')).to.throw('error_message'); - }); - }); - - describe('Sp.ediv', function () { - it('should provide whole integer devision as first option in result', function () { - expect(Sp.ediv(5, 2).openSome().fst()).to.eq(2); - }); - - it('should provide remainder devision as second option in result', function () { - expect(Sp.ediv(5, 2).openSome().snd()).to.eq(1); - }); - }); - - describe('Sp.pack', function () { - it('should parse number into uint8 array buffer', function () { - expect(Uint8ArrayToHexString(Sp.pack(0))).to.eq(Uint8ArrayToHexString([0])); - - expect(Uint8ArrayToHexString(Sp.pack(parseInt(72057594037927936n)))).to.eq('0x0100000000000000'); - }); - }); - - describe('Sp.sha256', function () { - it('should hash the passed value using sha256 algorythm', function () { - expect(Uint8ArrayToHexString(Sp.sha256(EMPTY_BYTES32))).to.equal( - '0x66687aadf862bd776c8fc18b8e9f8e20089714856ee233b3902a591d0d5f2925', - ); - }); - }); - }); - - describe('CONSTANTS', function () { - before(function () { - contracts.Constants = new ConstantsContract(); - }); - - describe('PHASE 0 constants', function () { - it('DOMAIN_SYNC_COMMITTEE should be 0x07000000', function () { - expect(contracts.Constants.DOMAIN_SYNC_COMMITTEE.length).to.eq(4); - expect(Uint8ArrayToHexString(contracts.Constants.DOMAIN_SYNC_COMMITTEE)).to.equal('0x07000000'); - }); - - it('GENESIS_FORK_VERSION should be 4 empty bytes long', function () { - expect(contracts.Constants.GENESIS_FORK_VERSION.length).to.eq(4); - expect(Uint8ArrayToHexString(contracts.Constants.GENESIS_FORK_VERSION)).to.equal( - Uint8ArrayToHexString(EMPTY_BYTES4), - ); - }); - - it('EPOCHS_PER_SYNC_COMMITTEE_PERIOD should be 2**8', function () { - expect(contracts.Constants.EPOCHS_PER_SYNC_COMMITTEE_PERIOD).to.equal(2 ** 8); - }); - - it('SLOTS_PER_EPOCH should be 2**5', function () { - expect(contracts.Constants.SLOTS_PER_EPOCH).to.equal(2 ** 5); - }); - - it('BLSPUBLICKEY_LENGTH should be 48', function () { - expect(contracts.Constants.BLSPUBLICKEY_LENGTH).to.equal(48); - }); - - it('SYNC_COMMITTEE_SIZE should be 2**9', function () { - expect(contracts.Constants.SYNC_COMMITTEE_SIZE).to.equal(2 ** 9); - }); - }); - - describe('ALTAIR upgrade constants', function () { - it('FINALIZED_ROOT_INDEX should be 105', function () { - expect(contracts.Constants.FINALIZED_ROOT_INDEX).to.equal(105); - }); - - it('FINALIZED_ROOT_DEPTH should be 6', function () { - expect(contracts.Constants.FINALIZED_ROOT_DEPTH).to.equal(6); - }); - - it('MIN_SYNC_COMMITTEE_PARTICIPANTS should be 1', function () { - expect(contracts.Constants.MIN_SYNC_COMMITTEE_PARTICIPANTS).to.equal(1); - }); - - it('EMPTY_BEACON_HEADER should be empty and should have correctly sized properties', function () { - expect(JSON.stringify(contracts.Constants.EMPTY_BEACON_HEADER)).to.equal( - JSON.stringify(EMPTY_BEACON_HEADER), - ); - }); - - it('EMPTY_SYNC_COMMITTEE should be empty and should have correctly sized properties', function () { - expect(JSON.stringify(contracts.Constants.EMPTY_SYNC_COMMITTEE)).to.equal( - JSON.stringify(EMPTY_SYNC_COMMITTEE), - ); - }); - - it('EMPTY_LIGHT_CLIENT_UPDATE should be empty and should have correctly sized properties', function () { - expect(JSON.stringify(contracts.Constants.EMPTY_LIGHT_CLIENT_UPDATE)).to.equal( - JSON.stringify(EMPTY_LIGHT_CLIENT_UPDATE), - ); - }); - }); - }); - - describe('HELPERS', function () { - before(function () { - contracts.Helpers = new HelpersContract(); - }); - - describe('pow', function () { - it('should make correct calculations', function () { - expect(contracts.Helpers.pow(2, 2)).to.equal(4); - expect(contracts.Helpers.pow(2, 3)).to.equal(8); - expect(contracts.Helpers.pow(3, 2)).to.equal(9); - expect(contracts.Helpers.pow(3, 3)).to.equal(27); - - expect(contracts.Helpers.pow(0, 2)).to.equal(0); - expect(contracts.Helpers.pow(2, 0)).to.equal(1); - - expect(contracts.Helpers.pow(7, 7)).to.equal(7 ** 7); - }); - - it('0**0 should equal 1', function () { - expect(contracts.Helpers.pow(0, 0)).to.equal(1); - }); - }); - - describe('getElementInUintArrayAt', function () { - it('should NOT throw if index is greater or equal than array size', function () { - expect(() => contracts.Helpers.getElementInUintArrayAt(1, [])).to.not.throw(); - expect(contracts.Helpers.getElementInUintArrayAt(1, [])).to.equal(0); - }); - - it('should return the right element by index', function () { - expect(contracts.Helpers.getElementInUintArrayAt(3, [1, 2, 3, 4])).to.equal(4); - expect(contracts.Helpers.getElementInUintArrayAt(2, [1, 2, 3, 4])).to.equal(3); - expect(contracts.Helpers.getElementInUintArrayAt(1, [1, 2, 3, 4])).to.equal(2); - expect(contracts.Helpers.getElementInUintArrayAt(0, [1, 2, 3, 4])).to.equal(1); - - expect(contracts.Helpers.getElementInUintArrayAt(4, [1, 1, 1, 1, 7, 1, 1, 1, 1])).to.equal(7); - }); - }); - - describe('getElementInBytesArrayAt', function () { - it('should NOT throw if index is greater or equal than array size', function () { - expect(() => contracts.Helpers.getElementInBytesArrayAt(1, [])).to.not.throw(); - expect(Uint8ArrayToHexString(contracts.Helpers.getElementInBytesArrayAt(1, []))).to.equal( - Uint8ArrayToHexString(EMPTY_BYTES32), - ); - }); - - it('should return the right element by index', function () { - expect(contracts.Helpers.getElementInUintArrayAt(3, ['0x01', '0x02', '0x03', '0x04'])).to.equal('0x04'); - expect(contracts.Helpers.getElementInUintArrayAt(2, ['0x01', '0x02', '0x03', '0x04'])).to.equal('0x03'); - expect(contracts.Helpers.getElementInUintArrayAt(1, ['0x01', '0x02', '0x03', '0x04'])).to.equal('0x02'); - expect(contracts.Helpers.getElementInUintArrayAt(0, ['0x01', '0x02', '0x03', '0x04'])).to.equal('0x01'); - - expect( - contracts.Helpers.getElementInUintArrayAt(4, [ - '0x01', - '0x01', - '0x01', - '0x01', - '0x07', - '0x01', - '0x01', - '0x01', - '0x01', - ]), - ).to.equal('0x07'); - }); - }); - - describe('setElementInBytesArrayAt', function () { - it('should throw if index is greater or equal than array size', function () { - expect(() => contracts.Helpers.setElementInBytesArrayAt(1, [])).to.throw(); - }); - - it('should return the right element by index', function () { - expect( - JSON.stringify( - contracts.Helpers.setElementInBytesArrayAt(3, ['0x01', '0x02', '0x03', '0x04'], '0x00'), - ), - ).to.equal(JSON.stringify(['0x01', '0x02', '0x03', '0x00'])); - expect( - JSON.stringify( - contracts.Helpers.setElementInBytesArrayAt(2, ['0x01', '0x02', '0x00', '0x04'], '0x00'), - ), - ).to.equal(JSON.stringify(['0x01', '0x02', '0x00', '0x04'])); - expect( - JSON.stringify( - contracts.Helpers.setElementInBytesArrayAt(1, ['0x01', '0x00', '0x03', '0x04'], '0x00'), - ), - ).to.equal(JSON.stringify(['0x01', '0x00', '0x03', '0x04'])); - expect( - JSON.stringify( - contracts.Helpers.setElementInBytesArrayAt(0, ['0x00', '0x02', '0x03', '0x04'], '0x00'), - ), - ).to.equal(JSON.stringify(['0x00', '0x02', '0x03', '0x04'])); - - expect( - JSON.stringify( - contracts.Helpers.setElementInBytesArrayAt( - 4, - ['0x01', '0x01', '0x01', '0x01', '0x07', '0x01', '0x01', '0x01', '0x01'], - '0x01', - ), - ), - ).to.equal(JSON.stringify(['0x01', '0x01', '0x01', '0x01', '0x01', '0x01', '0x01', '0x01', '0x01'])); - }); - }); - }); - - describe('UTILS', function () { - before(function () { - contracts.Utils = new UtilsContract(); - }); - - describe('reverse64', function () { - it('should return 0 if input is 0', function () { - expect(contracts.Utils.reverse64(0)).to.equal(0); - }); - - it('should calculate correct reversed value in 64 bits size of 1', function () { - expect(contracts.Utils.reverse64(1)).to.equal(parseInt(72057594037927936n)); - expect(contracts.Utils.reverse64(parseInt(72057594037927936n))).to.equal(1); - }); - - it('should calculate correct reversed value in 64 bits size of 2', function () { - expect(contracts.Utils.reverse64(2)).to.equal(parseInt(144115188075855872n)); - expect(contracts.Utils.reverse64(parseInt(144115188075855872n))).to.equal(2); - }); - }); - - describe('to_little_endian_64', function () { - it('should return the reverse64 value of input as bytes', function () { - expect(Uint8ArrayToHexString(contracts.Utils.to_little_endian_64(0))).to.equal( - Uint8ArrayToHexString([...Array(7).fill(0), ...[0]]), - ); - expect( - Uint8ArrayToHexString(contracts.Utils.to_little_endian_64(parseInt(72057594037927936n))), - ).to.equal(Uint8ArrayToHexString([...Array(7).fill(0), ...[1]])); - expect( - Uint8ArrayToHexString(contracts.Utils.to_little_endian_64(parseInt(144115188075855872n))), - ).to.equal(Uint8ArrayToHexString([...Array(7).fill(0), ...[2]])); - }); - }); - - describe('compute_epoch_at_slot', function () { - it('should return floored integer dividing the input by the SLOTS_PER_EPOCH value (32 slots/epoch)', function () { - expect(contracts.Utils.compute_epoch_at_slot(0)).to.equal( - Math.floor(0 / contracts.Utils.SLOTS_PER_EPOCH), - ); - expect(contracts.Utils.compute_epoch_at_slot(31)).to.equal( - Math.floor(31 / contracts.Utils.SLOTS_PER_EPOCH), - ); - expect(contracts.Utils.compute_epoch_at_slot(32)).to.equal( - Math.floor(32 / contracts.Utils.SLOTS_PER_EPOCH), - ); - expect(contracts.Utils.compute_epoch_at_slot(33)).to.equal( - Math.floor(33 / contracts.Utils.SLOTS_PER_EPOCH), - ); - }); - }); - - describe('get_power_of_two_ceil', function () { - it('should return correct ceiled integer', function () { - expect(contracts.Utils.get_power_of_two_ceil(0)).to.equal(1); - expect(contracts.Utils.get_power_of_two_ceil(1)).to.equal(1); - expect(contracts.Utils.get_power_of_two_ceil(2)).to.equal(2); - expect(contracts.Utils.get_power_of_two_ceil(3)).to.equal(4); - expect(contracts.Utils.get_power_of_two_ceil(4)).to.equal(4); - expect(contracts.Utils.get_power_of_two_ceil(5)).to.equal(8); - expect(contracts.Utils.get_power_of_two_ceil(9)).to.equal(16); - expect(contracts.Utils.get_power_of_two_ceil(17)).to.equal(32); - expect(contracts.Utils.get_power_of_two_ceil(1029)).to.equal(2048); - }); - }); - - describe('merkle_root', function () { - it('should return empty hash if array is empty', function () { - expect(Uint8ArrayToHexString(contracts.Utils.merkle_root([]))).to.equal( - '0x'.concat(Array(32 * 2 + 1).join('0')), - ); - }); - - it('should return hash of single element if array.length equals 1', function () { - expect(Uint8ArrayToHexString(contracts.Utils.merkle_root([EMPTY_BYTES32]))).to.equal( - '0x66687aadf862bd776c8fc18b8e9f8e20089714856ee233b3902a591d0d5f2925', - ); - }); - - it('should return hash of both elements concatenated if array.length equals 2', function () { - expect(Uint8ArrayToHexString(contracts.Utils.merkle_root([EMPTY_BYTES32, EMPTY_BYTES32]))).to.equal( - '0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b', - ); - }); - - it('should return correct merkle hashes when more than 2 elements (4 * EMPTY_BYTES32)', function () { - expect( - Uint8ArrayToHexString( - contracts.Utils.merkle_root([EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32, EMPTY_BYTES32]), - ), - ).to.equal('0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71'); - }); - - it('should return correct merkle hashes when more than 2 elements (random hashes - precalculated root)', function () { - expect(Uint8ArrayToHexString(contracts.Utils.merkle_root(RANDOM_BYTES))).to.equal( - Uint8ArrayToHexString(RANDOM_BYTES_ROOT), - ); - }); - }); - - describe('is_valid_merkle_branch', function () { - it('should verify a correct input (4 * EMPTY_BYTES32)', function () { - const leaf = digest(EMPTY_BYTES32); - const branch = [digest(EMPTY_BYTES32), digest([...digest(EMPTY_BYTES32), ...digest(EMPTY_BYTES32)])]; - const depth = 2; - const index = 1; - const root = contracts.Utils.merkle_root([ - digest(EMPTY_BYTES32), - digest(EMPTY_BYTES32), - digest(EMPTY_BYTES32), - digest(EMPTY_BYTES32), - ]); - - expect(contracts.Utils.is_valid_merkle_branch(leaf, branch, depth, index, root)).to.be.true; - }); - - it('should verify a correct input (random hashes - precalculated root)', function () { - const leaf = digest(RANDOM_BYTES[1]); - const branch = [ - digest(RANDOM_BYTES[0]), - digest([...digest(RANDOM_BYTES[2]), ...digest(RANDOM_BYTES[3])]), - ]; - const depth = 2; - const index = 1; - const root = contracts.Utils.merkle_root(RANDOM_BYTES.map(digest)); - - expect(contracts.Utils.is_valid_merkle_branch(leaf, branch, depth, index, root)).to.be.true; - }); - }); - - describe('hash_tree_root', function () { - describe('fork_data', function () { - it('should return correct fork data hash (empty fork data)', function () { - expect( - Uint8ArrayToHexString( - contracts.Utils.hash_tree_root__fork_data({ - current_version: EMPTY_BYTES4, - genesis_validators_root: EMPTY_BYTES32, - }), - ), - ).to.equal('0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b'); - }); - }); - - describe('signing_data', function () { - it('should return correct signing data hash (empty signing data)', function () { - expect( - Uint8ArrayToHexString( - contracts.Utils.hash_tree_root__signing_data({ - object_root: EMPTY_BYTES32, - domain: EMPTY_BYTES32, - }), - ), - ).to.equal('0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b'); - }); - }); - - describe('block_header', function () { - it('should return correct block header hash (EMPTY_BEACON_HEADER)', function () { - expect( - Uint8ArrayToHexString(contracts.Utils.hash_tree_root__block_header(EMPTY_BEACON_HEADER)), - ).to.equal('0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c'); - }); - - it('should return correct block header hash (normal header)', function () { - const header = BLC_UPDATES[0].attested_header; - - expect(Uint8ArrayToHexString(contracts.Utils.hash_tree_root__block_header(header))).to.equal( - '0xe367fd4fce2eaa248d8d970ff2836a032b7c1dcea02b6f1bce831e13443e6f1e', - ); - }); - }); - - describe('sync_committee', function () { - it('should return correct sync committee hash', function () { - const sync_committee = BLC_UPDATES[0].next_sync_committee; - - expect( - Uint8ArrayToHexString(contracts.Utils.hash_tree_root__sync_committee(sync_committee)), - ).to.equal('0x5b40b6aefbdbcffec9c5b7f977c4b4d009a2fdfd1d239f36731d604cfa732970'); - }); - }); - }); - - describe('compute', function () { - describe('fork_data_root', function () { - it('should return correct fork data hash (empty fork data, same as hash_tree_root)', function () { - expect( - Uint8ArrayToHexString(contracts.Utils.compute_fork_data_root(EMPTY_BYTES4, EMPTY_BYTES32)), - ).to.equal('0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b'); - - expect( - Uint8ArrayToHexString(contracts.Utils.compute_fork_data_root(EMPTY_BYTES4, EMPTY_BYTES32)), - ).to.equal( - Uint8ArrayToHexString( - contracts.Utils.hash_tree_root__fork_data({ - current_version: EMPTY_BYTES4, - genesis_validators_root: EMPTY_BYTES32, - }), - ), - ); - }); - }); - - describe('domain', function () { - it('should properly hash, calculate and return domain', function () { - const domain_type = contracts.Utils.DOMAIN_SYNC_COMMITTEE; - const fork_version = EMPTY_BYTES4; - const genesis_validators_root = EMPTY_BYTES32; - - expect( - Uint8ArrayToHexString( - contracts.Utils.compute_domain(domain_type, fork_version, genesis_validators_root), - ), - ).to.equal('0x07000000f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a9'); - }); - }); - - describe('signing_root', function () { - it('should return correct signing data hash (empty fork data, same as hash_tree_root)', function () { - const domain_type = contracts.Utils.DOMAIN_SYNC_COMMITTEE; - const fork_version = EMPTY_BYTES4; - const genesis_validators_root = EMPTY_BYTES32; - - const domain = contracts.Utils.compute_domain(domain_type, fork_version, genesis_validators_root); - expect( - Uint8ArrayToHexString(contracts.Utils.compute_signing_root(EMPTY_BEACON_HEADER, domain)), - ).to.equal('0xcad4bd07350cdacd98296af6e323e08c185709bc4a0eb44182e47d1f56f7fb68'); - }); - }); - }); - }); - - describe('BEACON_LIGHT_CLIENT', function () { - before(async function () { - contracts.blc = new BeaconLightClientContract( - { - snapshot: BLC_SNAPSHOT, - valid_updates: [], - }, - EMPTY_BYTES32, - ); - }); - - it('process_light_client_update should pass all updates', function () { - let counter = 291; - for (let update of BLC_UPDATES) { - console.log(` >>> Processing update at period ${counter++}...`); - contracts.blc.process_light_client_update(update, update.attested_header.slot); - } - }); - }); -}); diff --git a/beacon-light-client/typescript/tsconfig.json b/beacon-light-client/typescript/tsconfig.json deleted file mode 100644 index b22fab74d..000000000 --- a/beacon-light-client/typescript/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "lib": ["es2015.symbol"], - "strict": true, - "alwaysStrict": true, - "noImplicitReturns": true, - "noImplicitAny": true, - "downlevelIteration": true, - "noUnusedParameters": true, - "noUnusedLocals": true, - "allowSyntheticDefaultImports": true, - "experimentalDecorators": true, - "typeRoots": [ - "node_modules/@smartpy", - ] - }, - "include": [ - "src", - "templates" - ], - "exclude": [ - "node_modules" - ], -} From e966731128f2deb44b0facaf10cb576b8599f452 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Thu, 29 Feb 2024 01:22:14 +0200 Subject: [PATCH 45/59] build(typescript): Streamline the configuration * Use `module: 'ESNext'` and `moduleResolution: 'Bundler'` * Exclude the `vendor/` dir * Don't auto-include `jest` types * Add missing `include` dirs for workspaces * Remove unnecessary `compilerOptions` for workspaces --- beacon-light-client/circom/tsconfig.json | 7 ++++--- beacon-light-client/plonky2/tsconfig.json | 4 ---- beacon-light-client/solidity/tsconfig.json | 12 +++++++++--- relay/tsconfig.json | 7 ------- tsconfig.json | 8 ++++---- 5 files changed, 17 insertions(+), 21 deletions(-) diff --git a/beacon-light-client/circom/tsconfig.json b/beacon-light-client/circom/tsconfig.json index 3c326b5ba..2c311c515 100644 --- a/beacon-light-client/circom/tsconfig.json +++ b/beacon-light-client/circom/tsconfig.json @@ -1,9 +1,10 @@ { "extends": "../../tsconfig.json", + "include": [ + "./scripts/**/*.ts", + "./test/**/*.ts" + ], "files": [ "./hardhat.config.ts" ], - "compilerOptions": { - "moduleResolution": "nodenext" - } } diff --git a/beacon-light-client/plonky2/tsconfig.json b/beacon-light-client/plonky2/tsconfig.json index 3c062da00..6f83eb665 100644 --- a/beacon-light-client/plonky2/tsconfig.json +++ b/beacon-light-client/plonky2/tsconfig.json @@ -1,7 +1,3 @@ { "extends": "../../tsconfig.json", - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "nodenext", - } } diff --git a/beacon-light-client/solidity/tsconfig.json b/beacon-light-client/solidity/tsconfig.json index ce155dd67..d9acf3ae8 100644 --- a/beacon-light-client/solidity/tsconfig.json +++ b/beacon-light-client/solidity/tsconfig.json @@ -1,8 +1,14 @@ { "extends": "../../tsconfig.json", - "files": ["./hardhat.config.ts"], - "include": ["./test"], + "files": [ + "./hardhat.config.ts" + ], + "include": [ + "./tasks", + "./test" + ], "compilerOptions": { - "moduleResolution": "nodenext" + "module": "NodeNext", + "moduleResolution": "NodeNext" } } diff --git a/relay/tsconfig.json b/relay/tsconfig.json index 6db4f02c3..48610a17f 100644 --- a/relay/tsconfig.json +++ b/relay/tsconfig.json @@ -1,10 +1,3 @@ { "extends": "../tsconfig.json", - "files": [ - "./hardhat.config.ts" - ], - "compilerOptions": { - "moduleResolution": "nodenext", - "strictPropertyInitialization": false, - } } diff --git a/tsconfig.json b/tsconfig.json index 11dcb7a70..0c697c2eb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,16 +22,15 @@ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ - "module": "CommonJS", /* Specify what module code is generated. */ + "module": "ESNext", /* Specify what module code is generated. */ + "moduleResolution": "Bundler", /* Specify how TypeScript looks up a file from a given module specifier. */ // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ "types": [ "node", - "jest" ], /* Specify type package names to be included without being referenced in a source file. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ @@ -96,6 +95,7 @@ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, "exclude": [ - "node_modules" + "node_modules", + "vendor", ] } From 3cda052e8fa8c97668f5f959469e02b025c6bd69 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Thu, 29 Feb 2024 02:02:51 +0200 Subject: [PATCH 46/59] build(yarn): Add missing dependencies --- beacon-light-client/circom/package.json | 10 +- beacon-light-client/solidity/package.json | 9 +- package.json | 6 +- relay/package.json | 13 + yarn-project.nix | 14 +- yarn.lock | 1436 +++++++++++++++------ 6 files changed, 1115 insertions(+), 373 deletions(-) diff --git a/beacon-light-client/circom/package.json b/beacon-light-client/circom/package.json index 7062c0fa9..83ed22f87 100644 --- a/beacon-light-client/circom/package.json +++ b/beacon-light-client/circom/package.json @@ -6,8 +6,12 @@ }, "dependencies": { "@chainsafe/lodestar-types": "^0.39.0", + "@chainsafe/persistent-merkle-tree": "^0.6.1", "@chainsafe/ssz": "^0.14.3", + "@lodestar/config": "^1.16.0", + "@lodestar/params": "^1.16.0", "@lodestar/types": "^1.16.0", + "@noble/bls12-381": "^1.4.0", "@nomiclabs/hardhat-ethers": "^2.0.5", "@nomiclabs/hardhat-waffle": "^2.0.3", "@types/js-yaml": "^4.0.5", @@ -17,11 +21,15 @@ "circomlib": "2.0.2", "ethereum-waffle": "^4.0.7", "ethers": "^5.6.4", - "hardhat": "^2.9.3", + "hardhat": "^2.20.1", "js-yaml": "^4.1.0", "redis": "^4.6.5", "snarkit2": "https://github.com/fluidex/snarkit2#70142d8bbc5ec79cfa6869205263ff77e8423975", "snarkjs": "github:metacraft-labs/snarkjs", "ts-node": "^10.9.1" + }, + "devDependencies": { + "@types/node": "^20.11.21", + "typescript": "5.2.2" } } diff --git a/beacon-light-client/solidity/package.json b/beacon-light-client/solidity/package.json index 13db224d2..46fb92559 100644 --- a/beacon-light-client/solidity/package.json +++ b/beacon-light-client/solidity/package.json @@ -28,13 +28,18 @@ "circom_tester": "^0.0.14", "crypto-js": "^4.1.1", "ethers": "^5.6.9", - "hardhat": "2.10.2", + "hardhat": "^2.20.1", "hardhat-gas-reporter": "^1.0.8", "r1csfile": "^0.0.40", "snarkjs": "^0.4.24", "ts-node": "^10.9.1" }, "devDependencies": { - "dotenv": "^16.4.4" + "@types/chai": "^4.3.12", + "@types/mocha": "^10.0.6", + "@types/node": "^20.11.21", + "bullmq": "^5.4.0", + "dotenv": "^16.4.4", + "typescript": "5.2.2" } } diff --git a/package.json b/package.json index 82e22b0c2..b78e79e3b 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,12 @@ ], "devDependencies": { "@chainsafe/ssz": "^0.14.3", + "@jest/globals": "^29.7.0", + "@jest/types": "^29.6.3", "@noble/bls12-381": "^1.3.0", "@types/glob": "^7.2.0", "@types/jest": "^29.5.12", + "@types/mocha": "^10.0.6", "@types/node": "^18.0.0", "glob": "^8.0.3", "jest": "^29.7.0", @@ -62,6 +65,7 @@ "@cosmjs/proto-signing": "^0.30.0", "@cosmjs/stargate": "^0.30.0", "@iden3/binfileutils": "^0.0.11", + "@lodestar/params": "^1.16.0", "@lodestar/types": "^1.16.0", "@mevitae/redis-work-queue": "^0.0.4", "@nomiclabs/hardhat-ethers": "^2.1.1", @@ -77,7 +81,7 @@ "ethers": "^5.7.0", "express": "^4.18.2", "ffjavascript": "^0.2.59", - "hardhat": "^2.10.2", + "hardhat": "^2.20.1", "hardhat-gas-reporter": "^1.0.8", "ioredis": "^5.3.2", "prom-client": "^14.2.0", diff --git a/relay/package.json b/relay/package.json index 59cab7a1b..e86a528be 100644 --- a/relay/package.json +++ b/relay/package.json @@ -14,13 +14,26 @@ "dependencies": { "@chainsafe/persistent-merkle-tree": "^0.6.1", "@chainsafe/ssz": "^0.14.3", + "@cosmjs/cosmwasm-stargate": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", "@effect/schema": "^0.33.0", "@lodestar/types": "^1.16.0", + "@noble/bls12-381": "^1.4.0", + "bullmq": "^5.3.1", "discord.js": "^14.12.1", + "ethers": "^5.7.0", "redis": "^4.6.10", + "snarkjs": "^0.7.3", "ts-node": "^10.9.1", "web3": "^1.10.0", + "web3-eth": "^1.10.0", "winston": "^3.10.0", "yargs": "^17.7.1" + }, + "devDependencies": { + "@types/node": "^20.11.19", + "@types/snarkjs": "^0.7.8", + "typescript": "5.2.2" } } diff --git a/yarn-project.nix b/yarn-project.nix index 3ab7b290f..2e0d7abe2 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -52,7 +52,7 @@ let rm $out/.gitignore ''; outputHashMode = "recursive"; - outputHash = "sha512-386ulbjewVLTGAo/GJNrW7bH0teDUFYx+AjSqhq7AkwMOpByCXfPJKdQMwaZDA6jjZb6AF9f6Iq2ug0ZKPUh5Q=="; + outputHash = "sha512-KVWM4JHduHTscwl6wKXPvbGMj7SZ7TQfO6ndyoEmapoRw8a9QX19wHXXyi26yOlKiYi50BNzxMGpzg4GJHmNFQ=="; }; # Create a derivation that builds a module in isolation. @@ -150,11 +150,6 @@ let "secp256k1@npm:4.0.3" \ ${isolated."secp256k1@npm:4.0.3"} \ ".yarn/unplugged/secp256k1-npm-4.0.3-b4e9ce065b/node_modules/secp256k1" - echo 'injecting build for classic-level' - yarn nixify inject-build \ - "classic-level@npm:1.2.0" \ - ${isolated."classic-level@npm:1.2.0"} \ - ".yarn/unplugged/classic-level-npm-1.2.0-399f00877c/node_modules/classic-level" echo 'injecting build for keccak' yarn nixify inject-build \ "keccak@npm:3.0.1" \ @@ -180,6 +175,11 @@ let "utf-8-validate@npm:5.0.7" \ ${isolated."utf-8-validate@npm:5.0.7"} \ ".yarn/unplugged/utf-8-validate-npm-5.0.7-88d731f8ad/node_modules/utf-8-validate" + echo 'injecting build for msgpackr-extract' + yarn nixify inject-build \ + "msgpackr-extract@npm:3.0.2" \ + ${isolated."msgpackr-extract@npm:3.0.2"} \ + ".yarn/unplugged/msgpackr-extract-npm-3.0.2-93e8773fad/node_modules/msgpackr-extract" echo 'injecting build for bufferutil' yarn nixify inject-build \ "bufferutil@npm:4.0.7" \ @@ -258,12 +258,12 @@ isolated."bcrypt@npm:5.0.1" = optionalOverride (args.overrideBcryptAttrs or null isolated."bcrypto@npm:5.4.0" = optionalOverride (args.overrideBcryptoAttrs or null) (mkIsolatedBuild { pname = "bcrypto"; version = "5.4.0"; reference = "npm:5.4.0"; }); isolated."keccak@npm:3.0.3" = optionalOverride (args.overrideKeccakAttrs or null) (mkIsolatedBuild { pname = "keccak"; version = "3.0.3"; reference = "npm:3.0.3"; }); isolated."secp256k1@npm:4.0.3" = optionalOverride (args.overrideSecp256k1Attrs or null) (mkIsolatedBuild { pname = "secp256k1"; version = "4.0.3"; reference = "npm:4.0.3"; }); -isolated."classic-level@npm:1.2.0" = optionalOverride (args.overrideClassicLevelAttrs or null) (mkIsolatedBuild { pname = "classic-level"; version = "1.2.0"; reference = "npm:1.2.0"; }); isolated."keccak@npm:3.0.1" = optionalOverride (args.overrideKeccakAttrs or null) (mkIsolatedBuild { pname = "keccak"; version = "3.0.1"; reference = "npm:3.0.1"; }); isolated."bufferutil@npm:4.0.5" = optionalOverride (args.overrideBufferutilAttrs or null) (mkIsolatedBuild { pname = "bufferutil"; version = "4.0.5"; reference = "npm:4.0.5"; }); isolated."keccak@npm:3.0.2" = optionalOverride (args.overrideKeccakAttrs or null) (mkIsolatedBuild { pname = "keccak"; version = "3.0.2"; reference = "npm:3.0.2"; }); isolated."leveldown@npm:6.1.0" = optionalOverride (args.overrideLeveldownAttrs or null) (mkIsolatedBuild { pname = "leveldown"; version = "6.1.0"; reference = "npm:6.1.0"; }); isolated."utf-8-validate@npm:5.0.7" = optionalOverride (args.overrideUtf8ValidateAttrs or null) (mkIsolatedBuild { pname = "utf-8-validate"; version = "5.0.7"; reference = "npm:5.0.7"; }); +isolated."msgpackr-extract@npm:3.0.2" = optionalOverride (args.overrideMsgpackrExtractAttrs or null) (mkIsolatedBuild { pname = "msgpackr-extract"; version = "3.0.2"; reference = "npm:3.0.2"; }); isolated."bufferutil@npm:4.0.7" = optionalOverride (args.overrideBufferutilAttrs or null) (mkIsolatedBuild { pname = "bufferutil"; version = "4.0.7"; reference = "npm:4.0.7"; }); isolated."utf-8-validate@npm:5.0.10" = optionalOverride (args.overrideUtf8ValidateAttrs or null) (mkIsolatedBuild { pname = "utf-8-validate"; version = "5.0.10"; reference = "npm:5.0.10"; }); isolated."redis-commander@npm:0.8.0" = optionalOverride (args.overrideRedisCommanderAttrs or null) (mkIsolatedBuild { pname = "redis-commander"; version = "0.8.0"; reference = "npm:0.8.0"; }); diff --git a/yarn.lock b/yarn.lock index ac422ea99..c97afc538 100644 --- a/yarn.lock +++ b/yarn.lock @@ -628,6 +628,18 @@ __metadata: languageName: node linkType: hard +"@cosmjs/amino@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/amino@npm:0.32.2" + dependencies: + "@cosmjs/crypto": "npm:^0.32.2" + "@cosmjs/encoding": "npm:^0.32.2" + "@cosmjs/math": "npm:^0.32.2" + "@cosmjs/utils": "npm:^0.32.2" + checksum: 10/5bc230f628d409c7e318df21f69fc1ae3f7d7e87204f2891388f4fc7468aa0090de2a7d02467a39a7f1ac112c6e4c4509c40230d380d00af9094b1b3de3899c5 + languageName: node + linkType: hard + "@cosmjs/cosmwasm-stargate@npm:^0.30.0": version: 0.30.1 resolution: "@cosmjs/cosmwasm-stargate@npm:0.30.1" @@ -647,6 +659,24 @@ __metadata: languageName: node linkType: hard +"@cosmjs/cosmwasm-stargate@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/cosmwasm-stargate@npm:0.32.2" + dependencies: + "@cosmjs/amino": "npm:^0.32.2" + "@cosmjs/crypto": "npm:^0.32.2" + "@cosmjs/encoding": "npm:^0.32.2" + "@cosmjs/math": "npm:^0.32.2" + "@cosmjs/proto-signing": "npm:^0.32.2" + "@cosmjs/stargate": "npm:^0.32.2" + "@cosmjs/tendermint-rpc": "npm:^0.32.2" + "@cosmjs/utils": "npm:^0.32.2" + cosmjs-types: "npm:^0.9.0" + pako: "npm:^2.0.2" + checksum: 10/f7ac842f217eb8bfbc51c5baaa6053a780aed6cc7a820bdcf60f90e31cc55dfa0276baf421de032b8f39667411ab9e659b489309e37ae9cb98f363af85391094 + languageName: node + linkType: hard + "@cosmjs/crypto@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/crypto@npm:0.30.1" @@ -662,6 +692,21 @@ __metadata: languageName: node linkType: hard +"@cosmjs/crypto@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/crypto@npm:0.32.2" + dependencies: + "@cosmjs/encoding": "npm:^0.32.2" + "@cosmjs/math": "npm:^0.32.2" + "@cosmjs/utils": "npm:^0.32.2" + "@noble/hashes": "npm:^1" + bn.js: "npm:^5.2.0" + elliptic: "npm:^6.5.4" + libsodium-wrappers-sumo: "npm:^0.7.11" + checksum: 10/24c652c3c55e46950ddfabfdd6e08d6fee309febe86d8396d1dc372028c920c4d7d6c720fdd70128b2cbe804419bb667ecceaefb23cdcd1f9bce8d9b6b9deeef + languageName: node + linkType: hard + "@cosmjs/encoding@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/encoding@npm:0.30.1" @@ -673,6 +718,17 @@ __metadata: languageName: node linkType: hard +"@cosmjs/encoding@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/encoding@npm:0.32.2" + dependencies: + base64-js: "npm:^1.3.0" + bech32: "npm:^1.1.4" + readonly-date: "npm:^1.0.0" + checksum: 10/9fd4d6f118aea84005aa2d892aa4872b20d5d64dd2dd111eb3bb6af0b243b135f8f7b3fd253ef8047a3d46063409dcabbb7dabc7987b6a13032627539f633b8a + languageName: node + linkType: hard + "@cosmjs/json-rpc@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/json-rpc@npm:0.30.1" @@ -683,6 +739,16 @@ __metadata: languageName: node linkType: hard +"@cosmjs/json-rpc@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/json-rpc@npm:0.32.2" + dependencies: + "@cosmjs/stream": "npm:^0.32.2" + xstream: "npm:^11.14.0" + checksum: 10/4594de072331a141b4a1a374bd05c3fc5b2012825f2d0c70650ff370119350c15da195e28b6d9e0636fa2bc4740f6fe6a3355fa79ed545343b4386ccfe5d5c56 + languageName: node + linkType: hard + "@cosmjs/math@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/math@npm:0.30.1" @@ -692,6 +758,15 @@ __metadata: languageName: node linkType: hard +"@cosmjs/math@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/math@npm:0.32.2" + dependencies: + bn.js: "npm:^5.2.0" + checksum: 10/f2b620ad62e84ecbbfc31c3635199e94c065dbf1eef5ad064dd371567463b2a90a9f1a97156823341fff2c8b414e04c74fa1901be17b7ab35a8cc31e2232f37d + languageName: node + linkType: hard + "@cosmjs/proto-signing@npm:^0.30.0, @cosmjs/proto-signing@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/proto-signing@npm:0.30.1" @@ -707,6 +782,20 @@ __metadata: languageName: node linkType: hard +"@cosmjs/proto-signing@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/proto-signing@npm:0.32.2" + dependencies: + "@cosmjs/amino": "npm:^0.32.2" + "@cosmjs/crypto": "npm:^0.32.2" + "@cosmjs/encoding": "npm:^0.32.2" + "@cosmjs/math": "npm:^0.32.2" + "@cosmjs/utils": "npm:^0.32.2" + cosmjs-types: "npm:^0.9.0" + checksum: 10/9f8e603c5590610675c37e25c3ef3ca381f91fb007d81c689be69e44013a46ae5fd0ce11a1c7a83a2f70c4ecb591c9ff03754ceeb20343a25e84a4bb3a1c5881 + languageName: node + linkType: hard + "@cosmjs/socket@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/socket@npm:0.30.1" @@ -719,6 +808,18 @@ __metadata: languageName: node linkType: hard +"@cosmjs/socket@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/socket@npm:0.32.2" + dependencies: + "@cosmjs/stream": "npm:^0.32.2" + isomorphic-ws: "npm:^4.0.1" + ws: "npm:^7" + xstream: "npm:^11.14.0" + checksum: 10/ed1b510072f7e35b71ceb02219ff85df882a25c338269ebdd2af9236639f2ce018fd98ece990292ec1329cddd7028026f8aefe538d08b87d15fce22b4dd6fd49 + languageName: node + linkType: hard + "@cosmjs/stargate@npm:^0.30.0, @cosmjs/stargate@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/stargate@npm:0.30.1" @@ -739,6 +840,24 @@ __metadata: languageName: node linkType: hard +"@cosmjs/stargate@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/stargate@npm:0.32.2" + dependencies: + "@confio/ics23": "npm:^0.6.8" + "@cosmjs/amino": "npm:^0.32.2" + "@cosmjs/encoding": "npm:^0.32.2" + "@cosmjs/math": "npm:^0.32.2" + "@cosmjs/proto-signing": "npm:^0.32.2" + "@cosmjs/stream": "npm:^0.32.2" + "@cosmjs/tendermint-rpc": "npm:^0.32.2" + "@cosmjs/utils": "npm:^0.32.2" + cosmjs-types: "npm:^0.9.0" + xstream: "npm:^11.14.0" + checksum: 10/f846bb2f6e336d7c144b5532ceeda8715ed534c47fcb500c3fc025f32994dd8b4f2a77bda3e71dd7bd9b73d5cb3d75c4f969f4a28703c0bebd761442f67070a6 + languageName: node + linkType: hard + "@cosmjs/stream@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/stream@npm:0.30.1" @@ -748,6 +867,15 @@ __metadata: languageName: node linkType: hard +"@cosmjs/stream@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/stream@npm:0.32.2" + dependencies: + xstream: "npm:^11.14.0" + checksum: 10/c712d1c2b205e2211f0aa6fa28a482192e60153078a3d1176e8c1e3773e9987a973f50392d1ad58da64feb75ba504c8232158d7a23eb01dc3e565ae1be555eec + languageName: node + linkType: hard + "@cosmjs/tendermint-rpc@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/tendermint-rpc@npm:0.30.1" @@ -766,6 +894,24 @@ __metadata: languageName: node linkType: hard +"@cosmjs/tendermint-rpc@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/tendermint-rpc@npm:0.32.2" + dependencies: + "@cosmjs/crypto": "npm:^0.32.2" + "@cosmjs/encoding": "npm:^0.32.2" + "@cosmjs/json-rpc": "npm:^0.32.2" + "@cosmjs/math": "npm:^0.32.2" + "@cosmjs/socket": "npm:^0.32.2" + "@cosmjs/stream": "npm:^0.32.2" + "@cosmjs/utils": "npm:^0.32.2" + axios: "npm:^1.6.0" + readonly-date: "npm:^1.0.0" + xstream: "npm:^11.14.0" + checksum: 10/1ab1d39875a4185d6874f13b67f2159051e8c4dce10561aba8f1d0d0133c62ce42d695874b93a75dad5abadbe20cc2a13791cb8a84fe7dde342d2dfe0f3b4813 + languageName: node + linkType: hard + "@cosmjs/utils@npm:^0.30.1": version: 0.30.1 resolution: "@cosmjs/utils@npm:0.30.1" @@ -773,6 +919,13 @@ __metadata: languageName: node linkType: hard +"@cosmjs/utils@npm:^0.32.2": + version: 0.32.2 + resolution: "@cosmjs/utils@npm:0.32.2" + checksum: 10/71d757eb6da243af9b4f7a64bfa1f64e3253d1a012518aa152b43115fb93b8af8ec60cda469dbc1e847a77cec0f126a64fa681b5b407ee396cbd96f30f4ae480 + languageName: node + linkType: hard + "@cspotcode/source-map-support@npm:^0.8.0": version: 0.8.1 resolution: "@cspotcode/source-map-support@npm:0.8.1" @@ -943,7 +1096,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/block@npm:^3.5.0, @ethereumjs/block@npm:^3.6.0, @ethereumjs/block@npm:^3.6.2, @ethereumjs/block@npm:^3.6.3": +"@ethereumjs/block@npm:^3.5.0, @ethereumjs/block@npm:^3.6.0, @ethereumjs/block@npm:^3.6.2": version: 3.6.3 resolution: "@ethereumjs/block@npm:3.6.3" dependencies: @@ -955,7 +1108,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/blockchain@npm:^5.5.0, @ethereumjs/blockchain@npm:^5.5.2, @ethereumjs/blockchain@npm:^5.5.3": +"@ethereumjs/blockchain@npm:^5.5.0": version: 5.5.3 resolution: "@ethereumjs/blockchain@npm:5.5.3" dependencies: @@ -991,7 +1144,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/common@npm:^2.5.0, @ethereumjs/common@npm:^2.6.0, @ethereumjs/common@npm:^2.6.4, @ethereumjs/common@npm:^2.6.5": +"@ethereumjs/common@npm:2.6.5, @ethereumjs/common@npm:^2.5.0, @ethereumjs/common@npm:^2.6.0, @ethereumjs/common@npm:^2.6.4, @ethereumjs/common@npm:^2.6.5": version: 2.6.5 resolution: "@ethereumjs/common@npm:2.6.5" dependencies: @@ -1014,6 +1167,15 @@ __metadata: languageName: node linkType: hard +"@ethereumjs/rlp@npm:^4.0.1": + version: 4.0.1 + resolution: "@ethereumjs/rlp@npm:4.0.1" + bin: + rlp: bin/rlp + checksum: 10/bfdffd634ce72f3b17e3d085d071f2fe7ce9680aebdf10713d74b30afd80ef882d17f19ff7175fcb049431a56e800bd3558d3b028bd0d82341927edb303ab450 + languageName: node + linkType: hard + "@ethereumjs/tx@npm:3.3.2": version: 3.3.2 resolution: "@ethereumjs/tx@npm:3.3.2" @@ -1034,7 +1196,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/tx@npm:^3.4.0, @ethereumjs/tx@npm:^3.5.1, @ethereumjs/tx@npm:^3.5.2": +"@ethereumjs/tx@npm:3.5.2, @ethereumjs/tx@npm:^3.4.0, @ethereumjs/tx@npm:^3.5.2": version: 3.5.2 resolution: "@ethereumjs/tx@npm:3.5.2" dependencies: @@ -1044,6 +1206,17 @@ __metadata: languageName: node linkType: hard +"@ethereumjs/util@npm:^8.1.0": + version: 8.1.0 + resolution: "@ethereumjs/util@npm:8.1.0" + dependencies: + "@ethereumjs/rlp": "npm:^4.0.1" + ethereum-cryptography: "npm:^2.0.0" + micro-ftch: "npm:^0.3.1" + checksum: 10/cc35338932e49b15e54ca6e548b32a1f48eed7d7e1d34ee743e4d3600dd616668bd50f70139e86c5c35f55aac35fba3b6cc4e6f679cf650aeba66bf93016200c + languageName: node + linkType: hard + "@ethereumjs/vm@npm:5.6.0": version: 5.6.0 resolution: "@ethereumjs/vm@npm:5.6.0" @@ -1064,26 +1237,6 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/vm@npm:^5.9.0": - version: 5.9.3 - resolution: "@ethereumjs/vm@npm:5.9.3" - dependencies: - "@ethereumjs/block": "npm:^3.6.3" - "@ethereumjs/blockchain": "npm:^5.5.3" - "@ethereumjs/common": "npm:^2.6.5" - "@ethereumjs/tx": "npm:^3.5.2" - async-eventemitter: "npm:^0.2.4" - core-js-pure: "npm:^3.0.1" - debug: "npm:^4.3.3" - ethereumjs-util: "npm:^7.1.5" - functional-red-black-tree: "npm:^1.0.1" - mcl-wasm: "npm:^0.7.1" - merkle-patricia-tree: "npm:^4.2.4" - rustbn.js: "npm:~0.2.0" - checksum: 10/6fd6ad8da0081abbe0874bf5cf49f0e356c1cc2a5cbbd1b177cbdbd11c92097068ba8ee7dbac1877766a2708b9fd285b9c6203e5860674745bb2bf1e09cb0a3c - languageName: node - linkType: hard - "@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.0-beta.146, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.6.3, @ethersproject/abi@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/abi@npm:5.7.0" @@ -1939,6 +2092,17 @@ __metadata: languageName: node linkType: hard +"@lodestar/config@npm:^1.16.0": + version: 1.16.0 + resolution: "@lodestar/config@npm:1.16.0" + dependencies: + "@chainsafe/ssz": "npm:^0.14.0" + "@lodestar/params": "npm:^1.16.0" + "@lodestar/types": "npm:^1.16.0" + checksum: 10/82a10b706b69a313d5d6b7b8a153c6115ddec7d92384c4d952e1117179497312ce302b22b62ae2a1f200b71e361eb469e68a34521f3d76535e268c0871463af3 + languageName: node + linkType: hard + "@lodestar/params@npm:^1.16.0": version: 1.16.0 resolution: "@lodestar/params@npm:1.16.0" @@ -2025,6 +2189,13 @@ __metadata: languageName: node linkType: hard +"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.0": version: 3.0.0 resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.0" @@ -2032,6 +2203,13 @@ __metadata: languageName: node linkType: hard +"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.0": version: 3.0.0 resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.0" @@ -2039,6 +2217,13 @@ __metadata: languageName: node linkType: hard +"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.0": version: 3.0.0 resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.0" @@ -2046,6 +2231,13 @@ __metadata: languageName: node linkType: hard +"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.0": version: 3.0.0 resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.0" @@ -2053,6 +2245,13 @@ __metadata: languageName: node linkType: hard +"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.0": version: 3.0.0 resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.0" @@ -2060,7 +2259,14 @@ __metadata: languageName: node linkType: hard -"@noble/bls12-381@npm:^1.3.0": +"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.2": + version: 3.0.2 + resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@noble/bls12-381@npm:^1.3.0, @noble/bls12-381@npm:^1.4.0": version: 1.4.0 resolution: "@noble/bls12-381@npm:1.4.0" checksum: 10/508b5115f8cbd3e1e4c0b1d6677280fae2a05568edd007217cb5324ec53faa96d6468a403bed4a28be678dd626674978249f5aac38545f042beb717307dda96e @@ -2097,159 +2303,207 @@ __metadata: languageName: node linkType: hard -"@nomicfoundation/ethereumjs-block@npm:^4.0.0": - version: 4.0.0 - resolution: "@nomicfoundation/ethereumjs-block@npm:4.0.0" +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10/6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0 + languageName: node + linkType: hard + +"@nomicfoundation/ethereumjs-block@npm:5.0.4": + version: 5.0.4 + resolution: "@nomicfoundation/ethereumjs-block@npm:5.0.4" dependencies: - "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" - "@nomicfoundation/ethereumjs-tx": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + "@nomicfoundation/ethereumjs-common": "npm:4.0.4" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-trie": "npm:6.0.4" + "@nomicfoundation/ethereumjs-tx": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" ethereum-cryptography: "npm:0.1.3" - checksum: 10/cbdd37fddeeb3aa29dd750409fc4ce1b3ef5691d45d4dc0808706e99080e6f3f4ee4b95e3ce14fccfb91296513196cea84095c64eb740f81ef38f3d9ab0d2a21 + checksum: 10/96396b9890361c54ad1bc7f42a9e32c7eaf7f6ca4fafe3b2d297a98495bd4a239610ba2e6110c1f7211fb64a0957ca4c8a7373f41750fcf787cd57b16c783990 languageName: node linkType: hard -"@nomicfoundation/ethereumjs-blockchain@npm:^6.0.0": - version: 6.0.0 - resolution: "@nomicfoundation/ethereumjs-blockchain@npm:6.0.0" - dependencies: - "@nomicfoundation/ethereumjs-block": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" - "@nomicfoundation/ethereumjs-ethash": "npm:^2.0.0" - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" - abstract-level: "npm:^1.0.3" +"@nomicfoundation/ethereumjs-blockchain@npm:7.0.4": + version: 7.0.4 + resolution: "@nomicfoundation/ethereumjs-blockchain@npm:7.0.4" + dependencies: + "@nomicfoundation/ethereumjs-block": "npm:5.0.4" + "@nomicfoundation/ethereumjs-common": "npm:4.0.4" + "@nomicfoundation/ethereumjs-ethash": "npm:3.0.4" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-trie": "npm:6.0.4" + "@nomicfoundation/ethereumjs-tx": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" debug: "npm:^4.3.3" ethereum-cryptography: "npm:0.1.3" - level: "npm:^8.0.0" - lru-cache: "npm:^5.1.1" - memory-level: "npm:^1.0.0" - checksum: 10/c380735f69182576694b3ffd5eff7a5e8e562efb5cbd96e5cf186c68a0592acfb0effe4551cdf4ad366f831d4b7dd28c3347bee8ca845ae2352b8e36cdcbb6cb + lru-cache: "npm:^10.0.0" + checksum: 10/9bca54e525393ee41293661cd4fe31a4914db97a05fe5526a6872d61271c440c60eb696bb66b67740d4faddaff82ec95a8ce66c998f6993f2256dd402003d19c languageName: node linkType: hard -"@nomicfoundation/ethereumjs-common@npm:^3.0.0": - version: 3.0.0 - resolution: "@nomicfoundation/ethereumjs-common@npm:3.0.0" +"@nomicfoundation/ethereumjs-common@npm:4.0.4": + version: 4.0.4 + resolution: "@nomicfoundation/ethereumjs-common@npm:4.0.4" dependencies: - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" - crc-32: "npm:^1.2.0" - checksum: 10/d7012b0d05fba75e6ad2f54e60f777231896377a0a369af22d4868e4e260fb7e2586ac8d51c35b56ea2c1fa2e62dfef8669b653ed3e3b7816cfc38f2acf26090 + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" + checksum: 10/1daaede087c5dee92cb1e5309a548da2d64484722b917eccda4118d627293b61f705a990075f4d7f0f350100ed79396b3a25e7ea67824242d36d23716fe75e97 languageName: node linkType: hard -"@nomicfoundation/ethereumjs-ethash@npm:^2.0.0": - version: 2.0.0 - resolution: "@nomicfoundation/ethereumjs-ethash@npm:2.0.0" +"@nomicfoundation/ethereumjs-ethash@npm:3.0.4": + version: 3.0.4 + resolution: "@nomicfoundation/ethereumjs-ethash@npm:3.0.4" dependencies: - "@nomicfoundation/ethereumjs-block": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" - abstract-level: "npm:^1.0.3" - bigint-crypto-utils: "npm:^3.0.23" + "@nomicfoundation/ethereumjs-block": "npm:5.0.4" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" + bigint-crypto-utils: "npm:^3.2.2" ethereum-cryptography: "npm:0.1.3" - checksum: 10/dcabac814b7496a19824f6048157a095713afcb0676f4dd3d6172e579b31789dccd0f4417847c1901af3092be0021cc3e98f7f770a81766f505da93ff5930b00 + checksum: 10/4f9402c25fad8d3b1f8426ce924812b4855a61e378983de65da8564a6d4da18dad28b7dfd88b8f95aaaa4dc3252f308013ea852a9f7ca3da05d8dea05e8b1186 languageName: node linkType: hard -"@nomicfoundation/ethereumjs-evm@npm:^1.0.0": - version: 1.0.0 - resolution: "@nomicfoundation/ethereumjs-evm@npm:1.0.0" +"@nomicfoundation/ethereumjs-evm@npm:2.0.4": + version: 2.0.4 + resolution: "@nomicfoundation/ethereumjs-evm@npm:2.0.4" dependencies: - "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" - "@types/async-eventemitter": "npm:^0.2.1" - async-eventemitter: "npm:^0.2.4" + "@nomicfoundation/ethereumjs-common": "npm:4.0.4" + "@nomicfoundation/ethereumjs-statemanager": "npm:2.0.4" + "@nomicfoundation/ethereumjs-tx": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" + "@types/debug": "npm:^4.1.9" debug: "npm:^4.3.3" ethereum-cryptography: "npm:0.1.3" - mcl-wasm: "npm:^0.7.1" - rustbn.js: "npm:~0.2.0" - checksum: 10/5a86ded335d74e63564d0b012c2e7807a1f8c9a2aca65a152fab5eb8200b7d2f23bc9fc31e26a3403a76eaba37ccf1bae4be81310da5e4619f8e1d63f1d0e3fd + rustbn-wasm: "npm:^0.2.0" + checksum: 10/b6bc9d7ff9891d4366e1a4c372f8e6d928add9bb2c5cf8e69ab82ae34573bd8a7c653588c55ef4ee01a8e6f78c34bce6cdad1a4f6796ed0f0d42a017106ea4f3 languageName: node linkType: hard -"@nomicfoundation/ethereumjs-rlp@npm:^4.0.0, @nomicfoundation/ethereumjs-rlp@npm:^4.0.0-beta.2": - version: 4.0.0 - resolution: "@nomicfoundation/ethereumjs-rlp@npm:4.0.0" +"@nomicfoundation/ethereumjs-rlp@npm:5.0.4": + version: 5.0.4 + resolution: "@nomicfoundation/ethereumjs-rlp@npm:5.0.4" bin: - rlp: bin/rlp - checksum: 10/9e3e52876e408583cf3b19fd65979162eded9e1d02b699d4936a53bfba4155713084d0b37dbc938ec6a34e5bef61b9f2e3682684a86c6a29ea3900ac51113e92 + rlp: bin/rlp.cjs + checksum: 10/39fb26340bb2643a66c642315aa7b6fcfbdbddddeee18b4b683b77aa93b8a031bc86d4d4144368e5dd20499dc96b8b27751c6a285ff34e7a9969b530b306ce8c languageName: node linkType: hard -"@nomicfoundation/ethereumjs-statemanager@npm:^1.0.0": - version: 1.0.0 - resolution: "@nomicfoundation/ethereumjs-statemanager@npm:1.0.0" +"@nomicfoundation/ethereumjs-statemanager@npm:2.0.4": + version: 2.0.4 + resolution: "@nomicfoundation/ethereumjs-statemanager@npm:2.0.4" dependencies: - "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + "@nomicfoundation/ethereumjs-common": "npm:4.0.4" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-trie": "npm:6.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" debug: "npm:^4.3.3" ethereum-cryptography: "npm:0.1.3" - functional-red-black-tree: "npm:^1.0.1" - checksum: 10/faf7629ec3b5b494a955c9ab7a2e775c01796ad6b2441d10562407056b6a6e06ff751ac03ea131c3eddedc12189f1ae382be0cf2854fdce17f28ce62eb3c2f42 + js-sdsl: "npm:^4.1.4" + lru-cache: "npm:^10.0.0" + peerDependencies: + "@nomicfoundation/ethereumjs-verkle": 0.0.2 + peerDependenciesMeta: + "@nomicfoundation/ethereumjs-verkle": + optional: true + checksum: 10/fb7eb475660f1cb8a00ee81806c123b94ebcdbeb4e87e37275fd3601c9ed51f9d765930d0651ed8bd5c3ee9ea58ddd3bfadd880d7dbcad1eea2bb21d845a958f languageName: node linkType: hard -"@nomicfoundation/ethereumjs-trie@npm:^5.0.0": - version: 5.0.0 - resolution: "@nomicfoundation/ethereumjs-trie@npm:5.0.0" +"@nomicfoundation/ethereumjs-trie@npm:6.0.4": + version: 6.0.4 + resolution: "@nomicfoundation/ethereumjs-trie@npm:6.0.4" dependencies: - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" + "@types/readable-stream": "npm:^2.3.13" ethereum-cryptography: "npm:0.1.3" + lru-cache: "npm:^10.0.0" readable-stream: "npm:^3.6.0" - checksum: 10/709cfbb7be2c64208a3e712c27f0bc0580fc723d12340b211353beeddb886f68059170d51529650a090b821b6a21dbf63dc67499f23877e377fbc97295254b12 + checksum: 10/224bc85ad311c124fea2d6a2b7132496efc65731ec757dfc85e196041d226878b77d05dd9e56ea7fe2b9ba1bac9f8ba65f94b48649af9b1c26f40b99f4020564 languageName: node linkType: hard -"@nomicfoundation/ethereumjs-tx@npm:^4.0.0": - version: 4.0.0 - resolution: "@nomicfoundation/ethereumjs-tx@npm:4.0.0" +"@nomicfoundation/ethereumjs-tx@npm:5.0.4": + version: 5.0.4 + resolution: "@nomicfoundation/ethereumjs-tx@npm:5.0.4" dependencies: - "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" + "@nomicfoundation/ethereumjs-common": "npm:4.0.4" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" ethereum-cryptography: "npm:0.1.3" - checksum: 10/0833c6a4bfe5ad77a2931710ebe79d972d8e89eb59c9066bb0c7347cd6135a66bf0901c55e8c84827c1edad9200446ef0e5260a6026630552c9828e7f4f123a1 + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + checksum: 10/5e84de14fa464501c5c60ac6519f536d39ebc52c4d1fb79c63a66ea86f992bde4f338b0b0fdd2e5bc811ebd984e8ff41e4205e47d30001bad5b45370568bc41c languageName: node linkType: hard -"@nomicfoundation/ethereumjs-util@npm:^8.0.0": - version: 8.0.0 - resolution: "@nomicfoundation/ethereumjs-util@npm:8.0.0" +"@nomicfoundation/ethereumjs-util@npm:9.0.4": + version: 9.0.4 + resolution: "@nomicfoundation/ethereumjs-util@npm:9.0.4" dependencies: - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0-beta.2" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" ethereum-cryptography: "npm:0.1.3" - checksum: 10/8da64af39b83750347bf73fb30b169e1bf702cc26d6f94434a78521b569af9ebbd5c23d729e5e1ce38b22e354696af83f823bccc95f8a427c1baf722936d5404 + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + checksum: 10/891806c7edda29c7b3f61551949ff0c1fa5f4e122fba84878bf27362a9e058768fd01194dc0e031de2e523c30ecbeb22e6841b8ab3772c8567fef4af6480872d languageName: node linkType: hard -"@nomicfoundation/ethereumjs-vm@npm:^6.0.0": - version: 6.0.0 - resolution: "@nomicfoundation/ethereumjs-vm@npm:6.0.0" - dependencies: - "@nomicfoundation/ethereumjs-block": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-blockchain": "npm:^6.0.0" - "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" - "@nomicfoundation/ethereumjs-evm": "npm:^1.0.0" - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-statemanager": "npm:^1.0.0" - "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" - "@nomicfoundation/ethereumjs-tx": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" - "@types/async-eventemitter": "npm:^0.2.1" - async-eventemitter: "npm:^0.2.4" +"@nomicfoundation/ethereumjs-verkle@npm:0.0.2": + version: 0.0.2 + resolution: "@nomicfoundation/ethereumjs-verkle@npm:0.0.2" + dependencies: + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" + lru-cache: "npm:^10.0.0" + rust-verkle-wasm: "npm:^0.0.1" + checksum: 10/ff48301af6311ab3567acbc88f530eb2a6548248f1aba9ea057cdd86f197e56db43d659c8ad8e11afe8f25ea146313ad3ee14231fd7372645ba73e58181c053c + languageName: node + linkType: hard + +"@nomicfoundation/ethereumjs-vm@npm:7.0.4": + version: 7.0.4 + resolution: "@nomicfoundation/ethereumjs-vm@npm:7.0.4" + dependencies: + "@nomicfoundation/ethereumjs-block": "npm:5.0.4" + "@nomicfoundation/ethereumjs-blockchain": "npm:7.0.4" + "@nomicfoundation/ethereumjs-common": "npm:4.0.4" + "@nomicfoundation/ethereumjs-evm": "npm:2.0.4" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-statemanager": "npm:2.0.4" + "@nomicfoundation/ethereumjs-trie": "npm:6.0.4" + "@nomicfoundation/ethereumjs-tx": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" debug: "npm:^4.3.3" ethereum-cryptography: "npm:0.1.3" - functional-red-black-tree: "npm:^1.0.1" - mcl-wasm: "npm:^0.7.1" - rustbn.js: "npm:~0.2.0" - checksum: 10/16c34baef9a8561d6d580164f258f03d8e0573b76cabb2373835e30ee684aef70d121c4d3a73f3fa5e82081a8b81f643326d11861b18f36d9dcf8e7cf157be96 + checksum: 10/f754f4f677c077b558926b839f91c2e36257c66c246ce901ac95c889672d1fe3547a3c308348809f759a326d08829686957099c1bd54b2484717bdb359f36cf3 languageName: node linkType: hard @@ -2709,6 +2963,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:^1.1.1, @scure/base@npm:~1.1.4": + version: 1.1.5 + resolution: "@scure/base@npm:1.1.5" + checksum: 10/543fa9991c6378b6a0d5ab7f1e27b30bb9c1e860d3ac81119b4213cfdf0ad7b61be004e06506e89de7ce0cec9391c17f5c082bb34c3b617a2ee6a04129f52481 + languageName: node + linkType: hard + "@scure/base@npm:~1.1.0": version: 1.1.1 resolution: "@scure/base@npm:1.1.1" @@ -2716,13 +2977,6 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:~1.1.4": - version: 1.1.5 - resolution: "@scure/base@npm:1.1.5" - checksum: 10/543fa9991c6378b6a0d5ab7f1e27b30bb9c1e860d3ac81119b4213cfdf0ad7b61be004e06506e89de7ce0cec9391c17f5c082bb34c3b617a2ee6a04129f52481 - languageName: node - linkType: hard - "@scure/bip32@npm:1.1.5": version: 1.1.5 resolution: "@scure/bip32@npm:1.1.5" @@ -2879,7 +3133,7 @@ __metadata: languageName: node linkType: hard -"@solidity-parser/parser@npm:^0.14.0, @solidity-parser/parser@npm:^0.14.2": +"@solidity-parser/parser@npm:^0.14.0": version: 0.14.5 resolution: "@solidity-parser/parser@npm:0.14.5" dependencies: @@ -2992,13 +3246,6 @@ __metadata: languageName: node linkType: hard -"@types/async-eventemitter@npm:^0.2.1": - version: 0.2.1 - resolution: "@types/async-eventemitter@npm:0.2.1" - checksum: 10/52f6a9c6773edec9bc8449273de8b08fca45ebbf1907c755cd67be9aca4f26988aebb6d0e461aecf01463b76f0e1b427f149a8ce54d27cec191702488c676f48 - languageName: node - linkType: hard - "@types/babel__core@npm:^7.1.14": version: 7.20.0 resolution: "@types/babel__core@npm:7.20.0" @@ -3070,6 +3317,13 @@ __metadata: languageName: node linkType: hard +"@types/chai@npm:^4.3.12": + version: 4.3.12 + resolution: "@types/chai@npm:4.3.12" + checksum: 10/cf465151048f438b11e562ac431842f440b50817e74516f1fb349860a0db4fcdd665197f9fbee4387250d8d077496a1167fe2c75af88372bac6d8f093ee07b3a + languageName: node + linkType: hard + "@types/colors@npm:^1.2.1": version: 1.2.1 resolution: "@types/colors@npm:1.2.1" @@ -3088,6 +3342,15 @@ __metadata: languageName: node linkType: hard +"@types/debug@npm:^4.1.9": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "npm:*" + checksum: 10/47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053 + languageName: node + linkType: hard + "@types/form-data@npm:0.0.33": version: 0.0.33 resolution: "@types/form-data@npm:0.0.33" @@ -3229,6 +3492,20 @@ __metadata: languageName: node linkType: hard +"@types/mocha@npm:^10.0.6": + version: 10.0.6 + resolution: "@types/mocha@npm:10.0.6" + checksum: 10/fc73626e81e89c32d06b7ff9b72c4177b46d579cdd932f796614adc026852d84cb849d743473ba572cb4d9ea6d8c04e3749552d326c26495ec1c4b46e6e0a0c0 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: 10/f38d36e7b6edecd9badc9cf50474159e9da5fa6965a75186cceaf883278611b9df6669dc3a3cc122b7938d317b68a9e3d573d316fcb35d1be47ec9e468c6bd8a + languageName: node + linkType: hard + "@types/node-fetch@npm:^2.6.1": version: 2.6.2 resolution: "@types/node-fetch@npm:2.6.2" @@ -3267,6 +3544,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20.11.19, @types/node@npm:^20.11.21": + version: 20.11.21 + resolution: "@types/node@npm:20.11.21" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10/a31ecc6a3c615bca310ffe7dea23613153ff9e1e175c09d14198402b2cef9b1bb1bf3912aff6ffc6cb01b99a025ec6dd6474c797bfb0aaf83daf4edaea063760 + languageName: node + linkType: hard + "@types/node@npm:^8.0.0": version: 8.10.66 resolution: "@types/node@npm:8.10.66" @@ -3297,6 +3583,16 @@ __metadata: languageName: node linkType: hard +"@types/readable-stream@npm:^2.3.13": + version: 2.3.15 + resolution: "@types/readable-stream@npm:2.3.15" + dependencies: + "@types/node": "npm:*" + safe-buffer: "npm:~5.1.1" + checksum: 10/49b51e56f9cc401cb31c72973a7565ef4208d7e2465a789843104ec0fcbe609727b0b5bf4682fbec773c7f7bd14858e5dba739fd85e14d8a85e41185d65984d3 + languageName: node + linkType: hard + "@types/responselike@npm:^1.0.0": version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" @@ -3322,6 +3618,13 @@ __metadata: languageName: node linkType: hard +"@types/snarkjs@npm:^0.7.8": + version: 0.7.8 + resolution: "@types/snarkjs@npm:0.7.8" + checksum: 10/26b2f8b8329ca9e6a0f027990262504faeae4154fbd60f18218f94623d26e2cf5abbad7048b1a0c859e19f7a7848e28f40d212a2feb4f6ff975cad23b8bd55c4 + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": version: 2.0.1 resolution: "@types/stack-utils@npm:2.0.1" @@ -3382,17 +3685,22 @@ __metadata: "@nomiclabs/hardhat-ethers": "npm:^2.2.2" "@nomiclabs/hardhat-etherscan": "npm:^3.1.7" "@nomiclabs/hardhat-waffle": "npm:^2.0.3" + "@types/chai": "npm:^4.3.12" + "@types/mocha": "npm:^10.0.6" + "@types/node": "npm:^20.11.21" await-exec: "npm:^0.1.2" + bullmq: "npm:^5.4.0" chai: "npm:^4.3.6" circom_tester: "npm:^0.0.14" crypto-js: "npm:^4.1.1" dotenv: "npm:^16.4.4" ethers: "npm:^5.6.9" - hardhat: "npm:2.10.2" + hardhat: "npm:^2.20.1" hardhat-gas-reporter: "npm:^1.0.8" r1csfile: "npm:^0.0.40" snarkjs: "npm:^0.4.24" ts-node: "npm:^10.9.1" + typescript: "npm:5.2.2" languageName: unknown linkType: soft @@ -3408,6 +3716,9 @@ __metadata: "@cosmjs/proto-signing": "npm:^0.30.0" "@cosmjs/stargate": "npm:^0.30.0" "@iden3/binfileutils": "npm:^0.0.11" + "@jest/globals": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@lodestar/params": "npm:^1.16.0" "@lodestar/types": "npm:^1.16.0" "@mevitae/redis-work-queue": "npm:^0.0.4" "@noble/bls12-381": "npm:^1.3.0" @@ -3417,6 +3728,7 @@ __metadata: "@types/colors": "npm:^1.2.1" "@types/glob": "npm:^7.2.0" "@types/jest": "npm:^29.5.12" + "@types/mocha": "npm:^10.0.6" "@types/node": "npm:^18.0.0" bullmq: "npm:^3.7.1" circom_tester: "npm:^0.0.14" @@ -3428,7 +3740,7 @@ __metadata: express: "npm:^4.18.2" ffjavascript: "npm:^0.2.59" glob: "npm:^8.0.3" - hardhat: "npm:^2.10.2" + hardhat: "npm:^2.20.1" hardhat-gas-reporter: "npm:^1.0.8" ioredis: "npm:^5.3.2" jest: "npm:^29.7.0" @@ -3457,12 +3769,23 @@ __metadata: dependencies: "@chainsafe/persistent-merkle-tree": "npm:^0.6.1" "@chainsafe/ssz": "npm:^0.14.3" + "@cosmjs/cosmwasm-stargate": "npm:^0.32.2" + "@cosmjs/proto-signing": "npm:^0.32.2" + "@cosmjs/stargate": "npm:^0.32.2" "@effect/schema": "npm:^0.33.0" "@lodestar/types": "npm:^1.16.0" + "@noble/bls12-381": "npm:^1.4.0" + "@types/node": "npm:^20.11.19" + "@types/snarkjs": "npm:^0.7.8" + bullmq: "npm:^5.3.1" discord.js: "npm:^14.12.1" + ethers: "npm:^5.7.0" redis: "npm:^4.6.10" + snarkjs: "npm:^0.7.3" ts-node: "npm:^10.9.1" + typescript: "npm:5.2.2" web3: "npm:^1.10.0" + web3-eth: "npm:^1.10.0" winston: "npm:^3.10.0" yargs: "npm:^17.7.1" languageName: unknown @@ -3475,37 +3798,13 @@ __metadata: languageName: node linkType: hard -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" - dependencies: - event-target-shim: "npm:^5.0.0" - checksum: 10/ed84af329f1828327798229578b4fe03a4dd2596ba304083ebd2252666bdc1d7647d66d0b18704477e1f8aa315f055944aa6e859afebd341f12d0a53c37b4b40 - languageName: node - linkType: hard - -"abortcontroller-polyfill@npm:^1.7.3": +"abortcontroller-polyfill@npm:^1.7.3, abortcontroller-polyfill@npm:^1.7.5": version: 1.7.5 resolution: "abortcontroller-polyfill@npm:1.7.5" checksum: 10/aac398f7fc076235fe731adaffd2c319fe6c1527af8ca561890242d5396351350e0705726478778dc90326a69a4c044890c156fe867cba7f3ffeb670f8665a51 languageName: node linkType: hard -"abstract-level@npm:^1.0.0, abstract-level@npm:^1.0.2, abstract-level@npm:^1.0.3": - version: 1.0.3 - resolution: "abstract-level@npm:1.0.3" - dependencies: - buffer: "npm:^6.0.3" - catering: "npm:^2.1.0" - is-buffer: "npm:^2.0.5" - level-supports: "npm:^4.0.0" - level-transcoder: "npm:^1.0.1" - module-error: "npm:^1.0.1" - queue-microtask: "npm:^1.2.3" - checksum: 10/a6872010a7be78240e1e5bf24b202950adbbd2a382970e17cc661ac8a73663327c241dc25f2863e599f3f5b24d0c3c357b5af4092c4ce34511bae1c09283a278 - languageName: node - linkType: hard - "abstract-leveldown@npm:^6.2.1": version: 6.3.0 resolution: "abstract-leveldown@npm:6.3.0" @@ -3640,6 +3939,15 @@ __metadata: languageName: node linkType: hard +"ansi-align@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" + dependencies: + string-width: "npm:^4.1.0" + checksum: 10/4c7e8b6a10eaf18874ecee964b5db62ac86d0b9266ad4987b3a1efcb5d11a9e12c881ee40d14951833135a8966f10a3efe43f9c78286a6e632f53d85ad28b9c0 + languageName: node + linkType: hard + "ansi-colors@npm:3.2.3": version: 3.2.3 resolution: "ansi-colors@npm:3.2.3" @@ -3965,6 +4273,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.6.0": + version: 1.6.7 + resolution: "axios@npm:1.6.7" + dependencies: + follow-redirects: "npm:^1.15.4" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 10/a1932b089ece759cd261f175d9ebf4d41c8994cf0c0767cda86055c7a19bcfdade8ae3464bf4cec4c8b142f4a657dc664fb77a41855e8376cf38b86d7a86518f + languageName: node + linkType: hard + "b4a@npm:^1.0.1": version: 1.6.1 resolution: "b4a@npm:1.6.1" @@ -4134,19 +4453,10 @@ __metadata: languageName: node linkType: hard -"bigint-crypto-utils@npm:^3.0.23": - version: 3.1.8 - resolution: "bigint-crypto-utils@npm:3.1.8" - dependencies: - bigint-mod-arith: "npm:^3.1.0" - checksum: 10/7f540d2eb673042bdcf6c320526897a0cf22da503d1c78bdcec93ba13f476899ba750f76283f255f9a48f8f6affc9f72ebd6856fa2596c4e57096bab55dd4f98 - languageName: node - linkType: hard - -"bigint-mod-arith@npm:^3.1.0": - version: 3.1.2 - resolution: "bigint-mod-arith@npm:3.1.2" - checksum: 10/c8e25a37d61571faf9af44da7172dbdd8a3f611c7d403b6edf759480149c4fe48ad422680eaf97296aa60877365e2a9064f3aa9cad4013f3521ee8dbad9044bc +"bigint-crypto-utils@npm:^3.2.2": + version: 3.3.0 + resolution: "bigint-crypto-utils@npm:3.3.0" + checksum: 10/94d10ac9db66b093c7c2beace833ac167b57188c8ac784a7e207ea4f585cf9c2066e5d1f5a1b26cb6ccb7f7be8e38687c79f049b87df07cfdc7bd484aee2390d languageName: node linkType: hard @@ -4326,6 +4636,22 @@ __metadata: languageName: node linkType: hard +"boxen@npm:^5.1.2": + version: 5.1.2 + resolution: "boxen@npm:5.1.2" + dependencies: + ansi-align: "npm:^3.0.0" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.1.0" + cli-boxes: "npm:^2.2.1" + string-width: "npm:^4.2.2" + type-fest: "npm:^0.20.2" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10/bc3d3d88d77dc8cabb0811844acdbd4805e8ca8011222345330817737042bf6f86d93eb74a3f7e0cab634e64ef69db03cf52b480761ed90a965de0c8ff1bea8c + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -4361,18 +4687,6 @@ __metadata: languageName: node linkType: hard -"browser-level@npm:^1.0.1": - version: 1.0.1 - resolution: "browser-level@npm:1.0.1" - dependencies: - abstract-level: "npm:^1.0.2" - catering: "npm:^2.1.1" - module-error: "npm:^1.0.2" - run-parallel-limit: "npm:^1.1.0" - checksum: 10/e712569111782da76853fecf648b43ff878ff2301c2830a9e7399685b646824a85f304dea5f023e02ee41a63a972f9aad734bd411069095adc9c79784fc649a5 - languageName: node - linkType: hard - "browser-stdout@npm:1.3.1": version: 1.3.1 resolution: "browser-stdout@npm:1.3.1" @@ -4546,6 +4860,24 @@ __metadata: languageName: node linkType: hard +"bullmq@npm:^5.3.1, bullmq@npm:^5.4.0": + version: 5.4.0 + resolution: "bullmq@npm:5.4.0" + dependencies: + cron-parser: "npm:^4.6.0" + fast-glob: "npm:^3.3.2" + ioredis: "npm:^5.3.2" + lodash: "npm:^4.17.21" + minimatch: "npm:^9.0.3" + msgpackr: "npm:^1.10.1" + node-abort-controller: "npm:^3.1.1" + semver: "npm:^7.5.4" + tslib: "npm:^2.0.0" + uuid: "npm:^9.0.0" + checksum: 10/7c379c32230414a9728013e3e077196522b543edf173ab356c296657328c514975b62df313aa9cb60cfa30b4d117d68cc1de60c1ed73634d3b3cc0a921ed7756 + languageName: node + linkType: hard + "busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" @@ -4695,7 +5027,7 @@ __metadata: languageName: node linkType: hard -"catering@npm:^2.0.0, catering@npm:^2.1.0, catering@npm:^2.1.1": +"catering@npm:^2.0.0, catering@npm:^2.1.0": version: 2.1.1 resolution: "catering@npm:2.1.1" checksum: 10/4669c9fa5f3a73273535fb458a964d8aba12dc5102d8487049cf03623bef3cdff4b5d9f92ff04c00f1001057a7cc7df6e700752ac622c2a7baf7bcff34166683 @@ -4876,23 +5208,29 @@ __metadata: resolution: "circom@workspace:beacon-light-client/circom" dependencies: "@chainsafe/lodestar-types": "npm:^0.39.0" + "@chainsafe/persistent-merkle-tree": "npm:^0.6.1" "@chainsafe/ssz": "npm:^0.14.3" + "@lodestar/config": "npm:^1.16.0" + "@lodestar/params": "npm:^1.16.0" "@lodestar/types": "npm:^1.16.0" + "@noble/bls12-381": "npm:^1.4.0" "@nomiclabs/hardhat-ethers": "npm:^2.0.5" "@nomiclabs/hardhat-waffle": "npm:^2.0.3" "@types/js-yaml": "npm:^4.0.5" + "@types/node": "npm:^20.11.21" bullmq: "npm:^3.7.1" chai: "npm:^4.3.6" circom_tester: "npm:^0.0.14" circomlib: "npm:2.0.2" ethereum-waffle: "npm:^4.0.7" ethers: "npm:^5.6.4" - hardhat: "npm:^2.9.3" + hardhat: "npm:^2.20.1" js-yaml: "npm:^4.1.0" redis: "npm:^4.6.5" snarkit2: "https://github.com/fluidex/snarkit2#70142d8bbc5ec79cfa6869205263ff77e8423975" snarkjs: "github:metacraft-labs/snarkjs" ts-node: "npm:^10.9.1" + typescript: "npm:5.2.2" languageName: unknown linkType: soft @@ -4942,6 +5280,17 @@ __metadata: languageName: node linkType: hard +"circom_runtime@npm:0.1.24": + version: 0.1.24 + resolution: "circom_runtime@npm:0.1.24" + dependencies: + ffjavascript: "npm:0.2.60" + bin: + calcwit: calcwit.js + checksum: 10/a3a985138b8e260fdff98b8c6215ce1039e4a1c376cbd332843a705e40a649e66c9e23a61dace3412064d74472f421f67574c54b4bacb8e0ca7dd7b02a190d8d + languageName: node + linkType: hard + "circom_tester@npm:^0.0.14": version: 0.0.14 resolution: "circom_tester@npm:0.0.14" @@ -4991,20 +5340,6 @@ __metadata: languageName: node linkType: hard -"classic-level@npm:^1.2.0": - version: 1.2.0 - resolution: "classic-level@npm:1.2.0" - dependencies: - abstract-level: "npm:^1.0.2" - catering: "npm:^2.1.0" - module-error: "npm:^1.0.1" - napi-macros: "npm:~2.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.3.0" - checksum: 10/0a6116b5c3e650e33fe63365357ccc0ecd0694d33df1e4b773baa485fa5a37e0f892337c95b1de133f6f62b029add85eb1fc58e03c2e390ce6e5448781af1235 - languageName: node - linkType: hard - "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -5012,6 +5347,13 @@ __metadata: languageName: node linkType: hard +"cli-boxes@npm:^2.2.1": + version: 2.2.1 + resolution: "cli-boxes@npm:2.2.1" + checksum: 10/be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 + languageName: node + linkType: hard + "cli-table3@npm:^0.5.0": version: 0.5.1 resolution: "cli-table3@npm:0.5.1" @@ -5397,6 +5739,13 @@ __metadata: languageName: node linkType: hard +"cosmjs-types@npm:^0.9.0": + version: 0.9.0 + resolution: "cosmjs-types@npm:0.9.0" + checksum: 10/c61137bf0aba5c4b73f5191590472e6de61203c3e3dc0081643ac388c9f27f65de052298a0c6b239543adaba7829f5ff9c9fb95ab44d7b4186b080b8478e3b27 + languageName: node + linkType: hard + "crc-32@npm:^1.2.0": version: 1.2.2 resolution: "crc-32@npm:1.2.2" @@ -5475,6 +5824,15 @@ __metadata: languageName: node linkType: hard +"cross-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "cross-fetch@npm:4.0.0" + dependencies: + node-fetch: "npm:^2.6.12" + checksum: 10/e231a71926644ef122d334a3a4e73d9ba3ba4b480a8a277fb9badc434c1ba905b3d60c8034e18b348361a09afbec40ba9371036801ba2b675a7b84588f9f55d8 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -6288,7 +6646,7 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:^2.0.0": +"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2": version: 2.1.3 resolution: "ethereum-cryptography@npm:2.1.3" dependencies: @@ -6444,13 +6802,6 @@ __metadata: languageName: node linkType: hard -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 10/49ff46c3a7facbad3decb31f597063e761785d7fdb3920d4989d7b08c97a61c2f51183e2f3a03130c9088df88d4b489b1b79ab632219901f184f85158508f4c8 - languageName: node - linkType: hard - "eventemitter3@npm:4.0.4": version: 4.0.4 resolution: "eventemitter3@npm:4.0.4" @@ -6637,6 +6988,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.3.2": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -6665,6 +7029,15 @@ __metadata: languageName: node linkType: hard +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10/a443180068b527dd7b3a63dc7f2a47ceca2f3e97b9c00a1efe5538757e6cc4056a3526df94308075d7727561baf09ebaa5b67da8dcbddb913a021c5ae69d1f69 + languageName: node + linkType: hard + "fb-watchman@npm:^2.0.0": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" @@ -6829,6 +7202,16 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:^1.15.4": + version: 1.15.5 + resolution: "follow-redirects@npm:1.15.5" + peerDependenciesMeta: + debug: + optional: true + checksum: 10/d467f13c1c6aa734599b8b369cd7a625b20081af358f6204ff515f6f4116eb440de9c4e0c49f10798eeb0df26c95dd05d5e0d9ddc5786ab1a8a8abefe92929b4 + languageName: node + linkType: hard + "for-each@npm:^0.3.3": version: 0.3.3 resolution: "for-each@npm:0.3.3" @@ -6874,6 +7257,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 + languageName: node + linkType: hard + "form-data@npm:~2.3.2": version: 2.3.3 resolution: "form-data@npm:2.3.3" @@ -7198,7 +7592,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:~5.1.0, glob-parent@npm:~5.1.2": +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.0, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -7404,96 +7798,31 @@ __metadata: languageName: node linkType: hard -"hardhat@npm:2.10.2": - version: 2.10.2 - resolution: "hardhat@npm:2.10.2" - dependencies: - "@ethereumjs/block": "npm:^3.6.2" - "@ethereumjs/blockchain": "npm:^5.5.2" - "@ethereumjs/common": "npm:^2.6.4" - "@ethereumjs/tx": "npm:^3.5.1" - "@ethereumjs/vm": "npm:^5.9.0" - "@ethersproject/abi": "npm:^5.1.2" - "@metamask/eth-sig-util": "npm:^4.0.0" - "@sentry/node": "npm:^5.18.1" - "@solidity-parser/parser": "npm:^0.14.2" - "@types/bn.js": "npm:^5.1.0" - "@types/lru-cache": "npm:^5.1.0" - abort-controller: "npm:^3.0.0" - adm-zip: "npm:^0.4.16" - aggregate-error: "npm:^3.0.0" - ansi-escapes: "npm:^4.3.0" - chalk: "npm:^2.4.2" - chokidar: "npm:^3.4.0" - ci-info: "npm:^2.0.0" - debug: "npm:^4.1.1" - enquirer: "npm:^2.3.0" - env-paths: "npm:^2.2.0" - ethereum-cryptography: "npm:^1.0.3" - ethereumjs-abi: "npm:^0.6.8" - ethereumjs-util: "npm:^7.1.4" - find-up: "npm:^2.1.0" - fp-ts: "npm:1.19.3" - fs-extra: "npm:^7.0.1" - glob: "npm:7.2.0" - immutable: "npm:^4.0.0-rc.12" - io-ts: "npm:1.10.4" - lodash: "npm:^4.17.11" - merkle-patricia-tree: "npm:^4.2.4" - mnemonist: "npm:^0.38.0" - mocha: "npm:^10.0.0" - p-map: "npm:^4.0.0" - qs: "npm:^6.7.0" - raw-body: "npm:^2.4.1" - resolve: "npm:1.17.0" - semver: "npm:^6.3.0" - slash: "npm:^3.0.0" - solc: "npm:0.7.3" - source-map-support: "npm:^0.5.13" - stacktrace-parser: "npm:^0.1.10" - true-case-path: "npm:^2.2.1" - tsort: "npm:0.0.1" - undici: "npm:^5.4.0" - uuid: "npm:^8.3.2" - ws: "npm:^7.4.6" - peerDependencies: - ts-node: "*" - typescript: "*" - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - bin: - hardhat: internal/cli/cli.js - checksum: 10/e44eab8c129eb9ccb752bc9265b23aac587cc6d602c66528ef3b91b16314a9ecaad73ac7f6c6a82ad91962cb87f3cd7ecd34e2562954e146abfd3e506ad36843 - languageName: node - linkType: hard - -"hardhat@npm:^2.10.2, hardhat@npm:^2.9.3": - version: 2.12.7 - resolution: "hardhat@npm:2.12.7" +"hardhat@npm:^2.20.1": + version: 2.20.1 + resolution: "hardhat@npm:2.20.1" dependencies: "@ethersproject/abi": "npm:^5.1.2" "@metamask/eth-sig-util": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-block": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-blockchain": "npm:^6.0.0" - "@nomicfoundation/ethereumjs-common": "npm:^3.0.0" - "@nomicfoundation/ethereumjs-evm": "npm:^1.0.0" - "@nomicfoundation/ethereumjs-rlp": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-statemanager": "npm:^1.0.0" - "@nomicfoundation/ethereumjs-trie": "npm:^5.0.0" - "@nomicfoundation/ethereumjs-tx": "npm:^4.0.0" - "@nomicfoundation/ethereumjs-util": "npm:^8.0.0" - "@nomicfoundation/ethereumjs-vm": "npm:^6.0.0" + "@nomicfoundation/ethereumjs-block": "npm:5.0.4" + "@nomicfoundation/ethereumjs-blockchain": "npm:7.0.4" + "@nomicfoundation/ethereumjs-common": "npm:4.0.4" + "@nomicfoundation/ethereumjs-evm": "npm:2.0.4" + "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" + "@nomicfoundation/ethereumjs-statemanager": "npm:2.0.4" + "@nomicfoundation/ethereumjs-trie": "npm:6.0.4" + "@nomicfoundation/ethereumjs-tx": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" + "@nomicfoundation/ethereumjs-verkle": "npm:0.0.2" + "@nomicfoundation/ethereumjs-vm": "npm:7.0.4" "@nomicfoundation/solidity-analyzer": "npm:^0.1.0" "@sentry/node": "npm:^5.18.1" "@types/bn.js": "npm:^5.1.0" "@types/lru-cache": "npm:^5.1.0" - abort-controller: "npm:^3.0.0" adm-zip: "npm:^0.4.16" aggregate-error: "npm:^3.0.0" ansi-escapes: "npm:^4.3.0" + boxen: "npm:^5.1.2" chalk: "npm:^2.4.2" chokidar: "npm:^3.4.0" ci-info: "npm:^2.0.0" @@ -7513,7 +7842,6 @@ __metadata: mnemonist: "npm:^0.38.0" mocha: "npm:^10.0.0" p-map: "npm:^4.0.0" - qs: "npm:^6.7.0" raw-body: "npm:^2.4.1" resolve: "npm:1.17.0" semver: "npm:^6.3.0" @@ -7533,8 +7861,8 @@ __metadata: typescript: optional: true bin: - hardhat: internal/cli/cli.js - checksum: 10/0158bacd0cb9de11f7187b27b027382d661325645673a06a5b4eac642a40e4a7e116a34e3ed403c20a93d943f72703ebec6a6dc965b5a1216435595580e4313c + hardhat: internal/cli/bootstrap.js + checksum: 10/e6a484cbbeb5c7449c877bd0b31bbaa508506c22f0b0bc3f06c92b8213b51150b1eead9b12a1ca69e732c2d97c3aa022fbd6b4919897f1adaa3c14b8f97d5807 languageName: node linkType: hard @@ -8863,6 +9191,13 @@ __metadata: languageName: node linkType: hard +"js-sdsl@npm:^4.1.4": + version: 4.4.2 + resolution: "js-sdsl@npm:4.4.2" + checksum: 10/806ab7aea38c15c323c6993b65abfad559d35de7d41ad1e2bf21498f1d4961ef863ac14cecbe667be3ada565dafe7a701096a6f49a275c5190eb1a1732430226 + languageName: node + linkType: hard + "js-sha3@npm:0.5.7, js-sha3@npm:^0.5.7": version: 0.5.7 resolution: "js-sha3@npm:0.5.7" @@ -9221,29 +9556,12 @@ __metadata: languageName: node linkType: hard -"level-supports@npm:^4.0.0": - version: 4.0.1 - resolution: "level-supports@npm:4.0.1" - checksum: 10/e2f177af813a25af29d15406a14240e2e10e5efb1c35b03643c885ac5931af760b9337826506b6395f98cf6b1e68ba294bfc345a248a1ae3f9c69e08e81824b2 - languageName: node - linkType: hard - "level-supports@npm:~1.0.0": version: 1.0.1 - resolution: "level-supports@npm:1.0.1" - dependencies: - xtend: "npm:^4.0.2" - checksum: 10/27c2054c483c61b098454ff20917429ba73dc9b2af5aeafd959acf7ff36c3230ec200fcc63d920710935b8f3d59d18030a93fec472e9233d28f0dc0bca8b362d - languageName: node - linkType: hard - -"level-transcoder@npm:^1.0.1": - version: 1.0.1 - resolution: "level-transcoder@npm:1.0.1" + resolution: "level-supports@npm:1.0.1" dependencies: - buffer: "npm:^6.0.3" - module-error: "npm:^1.0.1" - checksum: 10/2fb41a1d8037fc279f851ead8cdc3852b738f1f935ac2895183cd606aae3e57008e085c7c2bd2b2d43cfd057333108cfaed604092e173ac2abdf5ab1b8333f9e + xtend: "npm:^4.0.2" + checksum: 10/27c2054c483c61b098454ff20917429ba73dc9b2af5aeafd959acf7ff36c3230ec200fcc63d920710935b8f3d59d18030a93fec472e9233d28f0dc0bca8b362d languageName: node linkType: hard @@ -9258,16 +9576,6 @@ __metadata: languageName: node linkType: hard -"level@npm:^8.0.0": - version: 8.0.0 - resolution: "level@npm:8.0.0" - dependencies: - browser-level: "npm:^1.0.1" - classic-level: "npm:^1.2.0" - checksum: 10/1e7df97fe80fb158c8c1d6feeb651ee1381fd8e45af773b2bb02d3dd020fefd4f48a69d260b2d0ce9c4245ee9d8d40b8a9c49275b0b1ef6e1d4158feb5c39081 - languageName: node - linkType: hard - "leveldown@npm:6.1.0": version: 6.1.0 resolution: "leveldown@npm:6.1.0" @@ -9300,6 +9608,22 @@ __metadata: languageName: node linkType: hard +"libsodium-sumo@npm:^0.7.13": + version: 0.7.13 + resolution: "libsodium-sumo@npm:0.7.13" + checksum: 10/4bfd69d10949fb2ae051a7f18c319d6a8a81a1af81ab9745312f0ff34f1fe4c1ef652aabad230d58fe11278418ef3a1350a96508eeae1794bac499e74896cfbe + languageName: node + linkType: hard + +"libsodium-wrappers-sumo@npm:^0.7.11": + version: 0.7.13 + resolution: "libsodium-wrappers-sumo@npm:0.7.13" + dependencies: + libsodium-sumo: "npm:^0.7.13" + checksum: 10/c57f01c48a072e82f4d4bfc367d0d3c052015599f62f618081c6324cb35222acd5ae36498302bf4de553fdfc0e7cf88c409d458316dca5480aba41f3c803bbd8 + languageName: node + linkType: hard + "libsodium-wrappers@npm:^0.7.6": version: 0.7.11 resolution: "libsodium-wrappers@npm:0.7.11" @@ -9557,6 +9881,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.0.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: 10/502ec42c3309c0eae1ce41afca471f831c278566d45a5273a0c51102dee31e0e250a62fa9029c3370988df33a14188a38e682c16143b794de78668de3643e302 + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -9739,17 +10070,6 @@ __metadata: languageName: node linkType: hard -"memory-level@npm:^1.0.0": - version: 1.0.0 - resolution: "memory-level@npm:1.0.0" - dependencies: - abstract-level: "npm:^1.0.0" - functional-red-black-tree: "npm:^1.0.1" - module-error: "npm:^1.0.1" - checksum: 10/e3293d8c67ebc0aa4b29982c5f8e3d139c5b1b04b97fa3ae98f940f91c7bdfefec9ff189742943734ebb6c7efa85fed6a4d559407b2d5751106b24cac17a23a6 - languageName: node - linkType: hard - "memorystream@npm:^0.3.1": version: 0.3.1 resolution: "memorystream@npm:0.3.1" @@ -9771,6 +10091,13 @@ __metadata: languageName: node linkType: hard +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + languageName: node + linkType: hard + "merkle-patricia-tree@npm:^4.2.2, merkle-patricia-tree@npm:^4.2.4": version: 4.2.4 resolution: "merkle-patricia-tree@npm:4.2.4" @@ -9792,6 +10119,13 @@ __metadata: languageName: node linkType: hard +"micro-ftch@npm:^0.3.1": + version: 0.3.1 + resolution: "micro-ftch@npm:0.3.1" + checksum: 10/a7ab07d25e28ec4ae492ce4542ea9b06eee85538742b3b1263b247366ee8872f2c5ce9c8651138b2f1d22c8212f691a7b8b5384fe86ead5aff1852e211f1c035 + languageName: node + linkType: hard + "micromatch@npm:^4.0.4": version: 4.0.5 resolution: "micromatch@npm:4.0.5" @@ -9919,6 +10253,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.3": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 + languageName: node + linkType: hard + "minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" @@ -10169,13 +10512,6 @@ __metadata: languageName: node linkType: hard -"module-error@npm:^1.0.1, module-error@npm:^1.0.2": - version: 1.0.2 - resolution: "module-error@npm:1.0.2" - checksum: 10/5d653e35bd55b3e95f8aee2cdac108082ea892e71b8f651be92cde43e4ee86abee4fa8bd7fc3fe5e68b63926d42f63c54cd17b87a560c31f18739295575a3962 - languageName: node - linkType: hard - "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -10235,6 +10571,49 @@ __metadata: languageName: node linkType: hard +"msgpackr-extract@npm:^3.0.2": + version: 3.0.2 + resolution: "msgpackr-extract@npm:3.0.2" + dependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "npm:3.0.2" + "@msgpackr-extract/msgpackr-extract-darwin-x64": "npm:3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm": "npm:3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm64": "npm:3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-x64": "npm:3.0.2" + "@msgpackr-extract/msgpackr-extract-win32-x64": "npm:3.0.2" + node-gyp: "npm:latest" + node-gyp-build-optional-packages: "npm:5.0.7" + dependenciesMeta: + "@msgpackr-extract/msgpackr-extract-darwin-arm64": + optional: true + "@msgpackr-extract/msgpackr-extract-darwin-x64": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-arm": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-arm64": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-x64": + optional: true + "@msgpackr-extract/msgpackr-extract-win32-x64": + optional: true + bin: + download-msgpackr-prebuilds: bin/download-prebuilds.js + checksum: 10/c37ff5f098aea43ad441df32b810c603d84f2c775132e5919a20dacdbd003995cbead794c80e8d2f1d673539fac9b90c621842391a868d5055be857ae30763b9 + languageName: node + linkType: hard + +"msgpackr@npm:^1.10.1": + version: 1.10.1 + resolution: "msgpackr@npm:1.10.1" + dependencies: + msgpackr-extract: "npm:^3.0.2" + dependenciesMeta: + msgpackr-extract: + optional: true + checksum: 10/9fc78c78435a773ed919720ab4f276f6781c6feac0e88233783d00deb64ef1c1caf75781f4a5c675bb535292bb9a67f2262ffc15b64cdc16b176b5220997d564 + languageName: node + linkType: hard + "msgpackr@npm:^1.6.2": version: 1.8.3 resolution: "msgpackr@npm:1.8.3" @@ -10355,6 +10734,13 @@ __metadata: languageName: node linkType: hard +"node-abort-controller@npm:^3.1.1": + version: 3.1.1 + resolution: "node-abort-controller@npm:3.1.1" + checksum: 10/0a2cdb7ec0aeaf3cb31e1ca0e192f5add48f1c5c9c9ed822129f9dddbd9432f69b7425982f94ce803c56a2104884530aa67cd57696e5774b2e5b8ec2f58de042 + languageName: node + linkType: hard + "node-addon-api@npm:^2.0.0": version: 2.0.2 resolution: "node-addon-api@npm:2.0.2" @@ -10411,6 +10797,20 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:^2.6.12": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10/b24f8a3dc937f388192e59bcf9d0857d7b6940a2496f328381641cb616efccc9866e89ec43f2ec956bbd6c3d3ee05524ce77fe7b29ccd34692b3a16f237d6676 + languageName: node + linkType: hard + "node-gyp-build-optional-packages@npm:5.0.7": version: 5.0.7 resolution: "node-gyp-build-optional-packages@npm:5.0.7" @@ -11114,6 +11514,13 @@ __metadata: languageName: node linkType: hard +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: 10/f0bb4a87cfd18f77bc2fba23ae49c3b378fb35143af16cc478171c623eebe181678f09439707ad80081d340d1593cd54a33a0113f3ccb3f4bc9451488780ee23 + languageName: node + linkType: hard + "prr@npm:~1.0.1": version: 1.0.1 resolution: "prr@npm:1.0.1" @@ -11175,7 +11582,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.11.0, qs@npm:^6.4.0, qs@npm:^6.7.0": +"qs@npm:6.11.0, qs@npm:^6.4.0": version: 6.11.0 resolution: "qs@npm:6.11.0" dependencies: @@ -11294,6 +11701,18 @@ __metadata: languageName: node linkType: hard +"r1csfile@npm:0.0.47": + version: 0.0.47 + resolution: "r1csfile@npm:0.0.47" + dependencies: + "@iden3/bigarray": "npm:0.0.2" + "@iden3/binfileutils": "npm:0.0.11" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.60" + checksum: 10/dc7f589802fa4813239b74a042b7e4867bf45f0a219d2a8591a0e77350a4862415f98e0754d683caa1c5765a922b2e9375a3b9d3f0bcf26e341b367d758f6469 + languageName: node + linkType: hard + "randombytes@npm:^2.0.1, randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" @@ -11707,6 +12126,13 @@ __metadata: languageName: node linkType: hard +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10/14222c9e1d3f9ae01480c50d96057228a8524706db79cdeb5a2ce5bb7070dd9f409a6f84a02cbef8cdc80d39aef86f2dd03d155188a1300c599b05437dcd2ffb + languageName: node + linkType: hard + "rimraf@npm:^2.2.8": version: 2.7.1 resolution: "rimraf@npm:2.7.1" @@ -11761,12 +12187,28 @@ __metadata: languageName: node linkType: hard -"run-parallel-limit@npm:^1.1.0": - version: 1.1.0 - resolution: "run-parallel-limit@npm:1.1.0" +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" dependencies: queue-microtask: "npm:^1.2.2" - checksum: 10/672c3b87e7f939c684b9965222b361421db0930223ed1e43ebf0e7e48ccc1a022ea4de080bef4d5468434e2577c33b7681e3f03b7593fdc49ad250a55381123c + checksum: 10/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + languageName: node + linkType: hard + +"rust-verkle-wasm@npm:^0.0.1": + version: 0.0.1 + resolution: "rust-verkle-wasm@npm:0.0.1" + checksum: 10/3680d9bfde00606fe81684fbc3f6fbba1855dea72a5951efb3671dd4c2e85d1ab15e786d6b572c64298c9bae095674bebd6e074aaeceb69217536d65ad507e85 + languageName: node + linkType: hard + +"rustbn-wasm@npm:^0.2.0": + version: 0.2.0 + resolution: "rustbn-wasm@npm:0.2.0" + dependencies: + "@scure/base": "npm:^1.1.1" + checksum: 10/36a4ee287e0e43051becf8788fc50b5e8f8829e53fbbf1e5e47dc284f2920797c86900646b51f89dedf644ce7321c3fc83520bc60dab0ad455482f6ea220c19a languageName: node linkType: hard @@ -12235,6 +12677,26 @@ __metadata: languageName: node linkType: hard +"snarkjs@npm:^0.7.3": + version: 0.7.3 + resolution: "snarkjs@npm:0.7.3" + dependencies: + "@iden3/binfileutils": "npm:0.0.11" + bfj: "npm:^7.0.2" + blake2b-wasm: "npm:^2.4.0" + circom_runtime: "npm:0.1.24" + ejs: "npm:^3.1.6" + fastfile: "npm:0.0.20" + ffjavascript: "npm:0.2.63" + js-sha3: "npm:^0.8.0" + logplease: "npm:^1.2.15" + r1csfile: "npm:0.0.47" + bin: + snarkjs: build/cli.cjs + checksum: 10/3bcf252bef344279f50e9013e7fa32f9b2202fd8704e75c972f9e1064ea83209f5b0dd229aad36d50797ff8a022980c91dd72ff58dfa4f5dea5711ce9d5b4e39 + languageName: node + linkType: hard + "socks-proxy-agent@npm:^6.0.0": version: 6.2.1 resolution: "socks-proxy-agent@npm:6.2.1" @@ -12453,7 +12915,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -12883,13 +13345,6 @@ __metadata: languageName: node linkType: hard -"true-case-path@npm:^2.2.1": - version: 2.2.1 - resolution: "true-case-path@npm:2.2.1" - checksum: 10/8c6ddd8dab044012a7bb1bed0b31cbb8f9924e903e996f7378d9b86113cde29251e684075203490d4dca2a199ef401ba89228c602bc5e2a3e4550446e8ae1ccf - languageName: node - linkType: hard - "tryer@npm:^1.0.1": version: 1.0.1 resolution: "tryer@npm:1.0.1" @@ -13064,6 +13519,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10/8907e16284b2d6cfa4f4817e93520121941baba36b39219ea36acfe64c86b9dbc10c9941af450bd60832c8f43464974d51c0957f9858bc66b952b66b6914cbb9 + languageName: node + linkType: hard + "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -13211,6 +13673,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10/0097779d94bc0fd26f0418b3a05472410408877279141ded2bd449167be1aed7ea5b76f756562cb3586a07f251b90799bab22d9019ceba49c037c76445f7cddd + languageName: node + linkType: hard + "undici@npm:5.22.1": version: 5.22.1 resolution: "undici@npm:5.22.1" @@ -13220,7 +13689,7 @@ __metadata: languageName: node linkType: hard -"undici@npm:^5.14.0, undici@npm:^5.4.0": +"undici@npm:^5.14.0": version: 5.20.0 resolution: "undici@npm:5.20.0" dependencies: @@ -13524,6 +13993,16 @@ __metadata: languageName: node linkType: hard +"web3-core-helpers@npm:1.10.4": + version: 1.10.4 + resolution: "web3-core-helpers@npm:1.10.4" + dependencies: + web3-eth-iban: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/9c22942827bed0e46ae491a0bee3cd60cea636f9b0408b11bb341b0370e58a94358025657405142c2a24f3912a8f947e6e977d594d9ba66e11dedce3c5c4a7f4 + languageName: node + linkType: hard + "web3-core-method@npm:1.10.0": version: 1.10.0 resolution: "web3-core-method@npm:1.10.0" @@ -13537,6 +14016,19 @@ __metadata: languageName: node linkType: hard +"web3-core-method@npm:1.10.4": + version: 1.10.4 + resolution: "web3-core-method@npm:1.10.4" + dependencies: + "@ethersproject/transactions": "npm:^5.6.2" + web3-core-helpers: "npm:1.10.4" + web3-core-promievent: "npm:1.10.4" + web3-core-subscriptions: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/d942beba3999c084333f5c808ada2a90930d55d148d5f8cc51a2135f8ab3f101fa5ce0d732a60830e8cad2af844bbed6cf0b6250863003adafb08c7ffa9fbd5f + languageName: node + linkType: hard + "web3-core-promievent@npm:1.10.0": version: 1.10.0 resolution: "web3-core-promievent@npm:1.10.0" @@ -13546,6 +14038,15 @@ __metadata: languageName: node linkType: hard +"web3-core-promievent@npm:1.10.4": + version: 1.10.4 + resolution: "web3-core-promievent@npm:1.10.4" + dependencies: + eventemitter3: "npm:4.0.4" + checksum: 10/a792c74aa5c91dc63fb493af04628ecfa08b9e6ceea402dfe53f718b019c41d63a0200bf3045dd23ec3c42b8d7474ac96eb4cb4456060becc551c2cacbd02bb1 + languageName: node + linkType: hard + "web3-core-requestmanager@npm:1.10.0": version: 1.10.0 resolution: "web3-core-requestmanager@npm:1.10.0" @@ -13559,6 +14060,19 @@ __metadata: languageName: node linkType: hard +"web3-core-requestmanager@npm:1.10.4": + version: 1.10.4 + resolution: "web3-core-requestmanager@npm:1.10.4" + dependencies: + util: "npm:^0.12.5" + web3-core-helpers: "npm:1.10.4" + web3-providers-http: "npm:1.10.4" + web3-providers-ipc: "npm:1.10.4" + web3-providers-ws: "npm:1.10.4" + checksum: 10/c26bf616cc156b2198bf634084978d66cf384cf2b174324b6ada071a8c9e9be7855d72c09453308d1a46b50874c18ff9b75193f8736c2b285cdc32209391880c + languageName: node + linkType: hard + "web3-core-subscriptions@npm:1.10.0": version: 1.10.0 resolution: "web3-core-subscriptions@npm:1.10.0" @@ -13569,6 +14083,16 @@ __metadata: languageName: node linkType: hard +"web3-core-subscriptions@npm:1.10.4": + version: 1.10.4 + resolution: "web3-core-subscriptions@npm:1.10.4" + dependencies: + eventemitter3: "npm:4.0.4" + web3-core-helpers: "npm:1.10.4" + checksum: 10/b1652988c0925ab1d5c27e67a816ec6bcb32f37f59c7314e1f02552233fbc486a0de579aeb660d77d82452b63e9feaa98317ec7897cd7aeb140595c8e176d0eb + languageName: node + linkType: hard + "web3-core@npm:1.10.0": version: 1.10.0 resolution: "web3-core@npm:1.10.0" @@ -13584,6 +14108,21 @@ __metadata: languageName: node linkType: hard +"web3-core@npm:1.10.4": + version: 1.10.4 + resolution: "web3-core@npm:1.10.4" + dependencies: + "@types/bn.js": "npm:^5.1.1" + "@types/node": "npm:^12.12.6" + bignumber.js: "npm:^9.0.0" + web3-core-helpers: "npm:1.10.4" + web3-core-method: "npm:1.10.4" + web3-core-requestmanager: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/138c5abff27a48d16584fdbe56b940f9efe7cd2463d768f42c5fcdfc97d0dc4fc41e09ff1ffb8c8ff79b22a69e9efbf5af27c4b6a0d888c351202f03a8b01b8e + languageName: node + linkType: hard + "web3-eth-abi@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-abi@npm:1.10.0" @@ -13594,6 +14133,16 @@ __metadata: languageName: node linkType: hard +"web3-eth-abi@npm:1.10.4": + version: 1.10.4 + resolution: "web3-eth-abi@npm:1.10.4" + dependencies: + "@ethersproject/abi": "npm:^5.6.3" + web3-utils: "npm:1.10.4" + checksum: 10/c601e45303c607a18f6f8e793aa9c5432fcaf83a34732dc9667b7e2eeb53a4cb8c2dec6fff9f33061fcc5130ec6c8f656f3c3ef962d7ff2af3247f828cffe559 + languageName: node + linkType: hard + "web3-eth-accounts@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-accounts@npm:1.10.0" @@ -13612,6 +14161,24 @@ __metadata: languageName: node linkType: hard +"web3-eth-accounts@npm:1.10.4": + version: 1.10.4 + resolution: "web3-eth-accounts@npm:1.10.4" + dependencies: + "@ethereumjs/common": "npm:2.6.5" + "@ethereumjs/tx": "npm:3.5.2" + "@ethereumjs/util": "npm:^8.1.0" + eth-lib: "npm:0.2.8" + scrypt-js: "npm:^3.0.1" + uuid: "npm:^9.0.0" + web3-core: "npm:1.10.4" + web3-core-helpers: "npm:1.10.4" + web3-core-method: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/994c9f8b3fd8c5fc72e1f2ca6770ad61a2618de2ddc38a898a7d956d22cbdedac7cc683319252a7c9a26c06f337942bf5af84a4ff4001e784e90d061c2733fc2 + languageName: node + linkType: hard + "web3-eth-contract@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-contract@npm:1.10.0" @@ -13628,6 +14195,22 @@ __metadata: languageName: node linkType: hard +"web3-eth-contract@npm:1.10.4": + version: 1.10.4 + resolution: "web3-eth-contract@npm:1.10.4" + dependencies: + "@types/bn.js": "npm:^5.1.1" + web3-core: "npm:1.10.4" + web3-core-helpers: "npm:1.10.4" + web3-core-method: "npm:1.10.4" + web3-core-promievent: "npm:1.10.4" + web3-core-subscriptions: "npm:1.10.4" + web3-eth-abi: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/8b0aa58c268b4be94a2ee14ff7fbdd9a2a20b912e580a69cbbbf57493331f60b96d88108ad4deabac3c3810d94483c449b1e5a06b414bc7b1ef326c682603836 + languageName: node + linkType: hard + "web3-eth-ens@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-ens@npm:1.10.0" @@ -13644,6 +14227,22 @@ __metadata: languageName: node linkType: hard +"web3-eth-ens@npm:1.10.4": + version: 1.10.4 + resolution: "web3-eth-ens@npm:1.10.4" + dependencies: + content-hash: "npm:^2.5.2" + eth-ens-namehash: "npm:2.0.8" + web3-core: "npm:1.10.4" + web3-core-helpers: "npm:1.10.4" + web3-core-promievent: "npm:1.10.4" + web3-eth-abi: "npm:1.10.4" + web3-eth-contract: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/1296b523a79bd46dc2485d21888454dbca7b7005af5156e58f2515e09f8b30973697a8032429fdaab01d2f8e3e605716789875dadc87cadd3ec9a2ce5d182742 + languageName: node + linkType: hard + "web3-eth-iban@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-iban@npm:1.10.0" @@ -13654,6 +14253,16 @@ __metadata: languageName: node linkType: hard +"web3-eth-iban@npm:1.10.4": + version: 1.10.4 + resolution: "web3-eth-iban@npm:1.10.4" + dependencies: + bn.js: "npm:^5.2.1" + web3-utils: "npm:1.10.4" + checksum: 10/b5e33aaf3d41608ed59ea98c703271eefcd30aea15163cda4bc8713f9716eb40b816e8047022ebf71391250983acfe58e65551461109a53e266f4b824c4a0678 + languageName: node + linkType: hard + "web3-eth-personal@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-personal@npm:1.10.0" @@ -13668,6 +14277,20 @@ __metadata: languageName: node linkType: hard +"web3-eth-personal@npm:1.10.4": + version: 1.10.4 + resolution: "web3-eth-personal@npm:1.10.4" + dependencies: + "@types/node": "npm:^12.12.6" + web3-core: "npm:1.10.4" + web3-core-helpers: "npm:1.10.4" + web3-core-method: "npm:1.10.4" + web3-net: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/1b0818aa3dc9d58ece45af85ea57ddd3fbc3cd2d8b325e18f2071236ab9e9ba2e878d3f77fddfb9ab1a37ee441209f07302638b13c86bc372b2e22989dc1d903 + languageName: node + linkType: hard + "web3-eth@npm:1.10.0": version: 1.10.0 resolution: "web3-eth@npm:1.10.0" @@ -13688,6 +14311,26 @@ __metadata: languageName: node linkType: hard +"web3-eth@npm:^1.10.0": + version: 1.10.4 + resolution: "web3-eth@npm:1.10.4" + dependencies: + web3-core: "npm:1.10.4" + web3-core-helpers: "npm:1.10.4" + web3-core-method: "npm:1.10.4" + web3-core-subscriptions: "npm:1.10.4" + web3-eth-abi: "npm:1.10.4" + web3-eth-accounts: "npm:1.10.4" + web3-eth-contract: "npm:1.10.4" + web3-eth-ens: "npm:1.10.4" + web3-eth-iban: "npm:1.10.4" + web3-eth-personal: "npm:1.10.4" + web3-net: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/0da77f76715711cbae7ec0f13300cf5cf364eed2955077f55462f162de9e133305d6534203f50aa786f496b4064d6b46577f30b8f8d0a0cad4476f7e7f30980e + languageName: node + linkType: hard + "web3-net@npm:1.10.0": version: 1.10.0 resolution: "web3-net@npm:1.10.0" @@ -13699,6 +14342,17 @@ __metadata: languageName: node linkType: hard +"web3-net@npm:1.10.4": + version: 1.10.4 + resolution: "web3-net@npm:1.10.4" + dependencies: + web3-core: "npm:1.10.4" + web3-core-method: "npm:1.10.4" + web3-utils: "npm:1.10.4" + checksum: 10/7f28f58ed1521bd805d63340994be436812e771e8edaa00aea568fa7ae3374746fb5f5aa6ac67632862a739833dfea6ffa92f4df4bca7c394b2608c603e1eda6 + languageName: node + linkType: hard + "web3-providers-http@npm:1.10.0": version: 1.10.0 resolution: "web3-providers-http@npm:1.10.0" @@ -13711,6 +14365,18 @@ __metadata: languageName: node linkType: hard +"web3-providers-http@npm:1.10.4": + version: 1.10.4 + resolution: "web3-providers-http@npm:1.10.4" + dependencies: + abortcontroller-polyfill: "npm:^1.7.5" + cross-fetch: "npm:^4.0.0" + es6-promise: "npm:^4.2.8" + web3-core-helpers: "npm:1.10.4" + checksum: 10/2ff27d45cc7c7b1e8f07a7917fe1502fef59e211b2ee97851369f9b6dab99ce81b0bef50f9ecf36286137fc41f1230f04b55b090d30f870fbc5ef1972d165b5f + languageName: node + linkType: hard + "web3-providers-ipc@npm:1.10.0": version: 1.10.0 resolution: "web3-providers-ipc@npm:1.10.0" @@ -13721,6 +14387,16 @@ __metadata: languageName: node linkType: hard +"web3-providers-ipc@npm:1.10.4": + version: 1.10.4 + resolution: "web3-providers-ipc@npm:1.10.4" + dependencies: + oboe: "npm:2.1.5" + web3-core-helpers: "npm:1.10.4" + checksum: 10/cd33a954f59ba3a9ca466dca0d6563f46c56879dc249d885b8edfee077f9f58ccf591ba06855e1d69baba52a8719c03684b0ba7b33d836bfdd4c6166e289c0d4 + languageName: node + linkType: hard + "web3-providers-ws@npm:1.10.0": version: 1.10.0 resolution: "web3-providers-ws@npm:1.10.0" @@ -13732,6 +14408,17 @@ __metadata: languageName: node linkType: hard +"web3-providers-ws@npm:1.10.4": + version: 1.10.4 + resolution: "web3-providers-ws@npm:1.10.4" + dependencies: + eventemitter3: "npm:4.0.4" + web3-core-helpers: "npm:1.10.4" + websocket: "npm:^1.0.32" + checksum: 10/98cb76473ae1060e21ff474768a04c6dcd91724f24a1fac2d4a5f186a35bd2f119605fbb28423dfe5be33755b1e5808b10514ddaf326b57573b447efc84ef730 + languageName: node + linkType: hard + "web3-shh@npm:1.10.0": version: 1.10.0 resolution: "web3-shh@npm:1.10.0" @@ -13759,6 +14446,22 @@ __metadata: languageName: node linkType: hard +"web3-utils@npm:1.10.4": + version: 1.10.4 + resolution: "web3-utils@npm:1.10.4" + dependencies: + "@ethereumjs/util": "npm:^8.1.0" + bn.js: "npm:^5.2.1" + ethereum-bloom-filters: "npm:^1.0.6" + ethereum-cryptography: "npm:^2.1.2" + ethjs-unit: "npm:0.1.6" + number-to-bn: "npm:1.7.0" + randombytes: "npm:^2.1.0" + utf8: "npm:3.0.0" + checksum: 10/3e586b638cdae9fa45b7698e8a511ae2cbf60e219a900351ae38d384beaaf67424ac6e1d9c5098c3fb8f2ff3cc65a70d977a20bdce3dad542cb50deb666ea2a3 + languageName: node + linkType: hard + "web3@npm:^1.10.0": version: 1.10.0 resolution: "web3@npm:1.10.0" @@ -13879,6 +14582,15 @@ __metadata: languageName: node linkType: hard +"widest-line@npm:^3.1.0": + version: 3.1.0 + resolution: "widest-line@npm:3.1.0" + dependencies: + string-width: "npm:^4.0.0" + checksum: 10/03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0 + languageName: node + linkType: hard + "winston-transport@npm:^4.5.0": version: 4.5.0 resolution: "winston-transport@npm:4.5.0" From f6d0402ac35496b73024e0ba74a21acf9c894b80 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Thu, 29 Feb 2024 02:03:52 +0200 Subject: [PATCH 47/59] fix(typescript): Fix all build errors when running `yarn tsc` And `yarn workspaces foreach --all run build:tsc`. --- .../get_light_client_recursive_input.ts | 6 +- .../proof_efficient/get-proof-input.ts | 3 +- .../get-proof-more-efficient-input.ts | 3 +- .../test/ValidatorAccumulator.test.ts | 4 -- contracts/eos/scripts/eos-publisher-script.ts | 3 +- .../publish_evm_transaction.ts | 2 + relay/utils/discord_monitor.ts | 72 +++++++++---------- .../test-constantine-verifier-in-cosmos.ts | 2 + .../test-nim-light-client-in-cosmos.ts | 2 + .../test-verifier-in-cosmos-relay.ts | 2 + .../test-verifier-in-cosmos.ts | 2 + .../test-verifier-in-EOS-relay.ts | 3 +- tests/eosLightClient/test-verifier-in-EOS.ts | 2 + tests/test-nim-light-client.ts | 2 + tests/test-nim-to-wasm.ts | 2 + tests/verify_proof/verify_given_proof_test.ts | 2 + 16 files changed, 61 insertions(+), 51 deletions(-) diff --git a/beacon-light-client/circom/scripts/light_client_recursive/get_light_client_recursive_input.ts b/beacon-light-client/circom/scripts/light_client_recursive/get_light_client_recursive_input.ts index 13b31d843..f84a1c4c8 100644 --- a/beacon-light-client/circom/scripts/light_client_recursive/get_light_client_recursive_input.ts +++ b/beacon-light-client/circom/scripts/light_client_recursive/get_light_client_recursive_input.ts @@ -4,9 +4,9 @@ import { bytesToHex, formatHex, hexToBytes, - utils, } from '../../../../libs/typescript/ts-utils/bls'; import { ssz } from '@chainsafe/lodestar-types'; +import { mainnetChainConfig } from '@lodestar/config/configs'; import { writeFileSync } from 'fs'; import { BitVectorType } from '@chainsafe/ssz'; import * as path from 'path'; @@ -114,7 +114,9 @@ export async function getProof(vkey, proof, originator, prevUpdate, update) { .toString(2) .padStart(256, '0') .split(''), - fork_version: BigInt('0x' + bytesToHex(constants.ALTAIR_FORK_VERSION)) + fork_version: BigInt( + '0x' + bytesToHex(mainnetChainConfig.ALTAIR_FORK_VERSION), + ) .toString(2) .padStart(32, '0') .split(''), diff --git a/beacon-light-client/circom/scripts/proof_efficient/get-proof-input.ts b/beacon-light-client/circom/scripts/proof_efficient/get-proof-input.ts index 3557af680..fa5a9eb74 100644 --- a/beacon-light-client/circom/scripts/proof_efficient/get-proof-input.ts +++ b/beacon-light-client/circom/scripts/proof_efficient/get-proof-input.ts @@ -6,12 +6,11 @@ import { hexToBytes, utils, } from '../../../../libs/typescript/ts-utils/bls'; -import { ssz } from '@chainsafe/lodestar-types'; import { writeFileSync } from 'fs'; import { BitVectorType } from '@chainsafe/ssz'; import * as path from 'path'; import { getFilesInDir } from '../../../../libs/typescript/ts-utils/data'; -import { SyncCommittee } from '@chainsafe/lodestar-types/lib/altair/sszTypes'; +import { ssz } from '@lodestar/types'; const hashToField = utils.hashToField; diff --git a/beacon-light-client/circom/scripts/proof_more_efficient/get-proof-more-efficient-input.ts b/beacon-light-client/circom/scripts/proof_more_efficient/get-proof-more-efficient-input.ts index e6730a70f..1ea65a751 100644 --- a/beacon-light-client/circom/scripts/proof_more_efficient/get-proof-more-efficient-input.ts +++ b/beacon-light-client/circom/scripts/proof_more_efficient/get-proof-more-efficient-input.ts @@ -6,12 +6,11 @@ import { hexToBytes, utils, } from '../../../../libs/typescript/ts-utils/bls'; -import { ssz } from '@chainsafe/lodestar-types'; +import { ssz } from '@lodestar/types'; import { writeFileSync } from 'fs'; import { BitVectorType } from '@chainsafe/ssz'; import * as path from 'path'; import { getFilesInDir } from '../../../../libs/typescript/ts-utils/data'; -import { SyncCommittee } from '@chainsafe/lodestar-types/lib/altair/sszTypes'; const hashToField = utils.hashToField; diff --git a/beacon-light-client/solidity/test/ValidatorAccumulator.test.ts b/beacon-light-client/solidity/test/ValidatorAccumulator.test.ts index 47ccb86a0..1d42c99c7 100644 --- a/beacon-light-client/solidity/test/ValidatorAccumulator.test.ts +++ b/beacon-light-client/solidity/test/ValidatorAccumulator.test.ts @@ -1,8 +1,4 @@ -import * as path from 'path'; import { ethers } from 'hardhat'; -import { getFilesInDir, Proof } from './utils'; -import { convertProofToSolidityCalldata } from '../../../libs/typescript/ts-utils/zk-utils'; -import INITIAL_UPDATE from '../../../vendor/eth2-light-client-updates/prater/capella-updates-94/update_5601823_5609044.json'; import { Contract } from 'ethers'; import { sha256 } from 'ethers/lib/utils'; import { hashTreeRoot } from '../../../libs/typescript/ts-utils/ssz-utils'; diff --git a/contracts/eos/scripts/eos-publisher-script.ts b/contracts/eos/scripts/eos-publisher-script.ts index a439ab4e5..3ea9e0fec 100644 --- a/contracts/eos/scripts/eos-publisher-script.ts +++ b/contracts/eos/scripts/eos-publisher-script.ts @@ -9,6 +9,7 @@ async function publishTask() { const config = { REDIS_HOST: process.env.REDIS_HOST, REDIS_PORT: Number(process.env.REDIS_PORT), + SLOT_JUMP: Number(process.env.SLOT_JUMP), }; checkConfig(config); @@ -30,7 +31,7 @@ async function publishTask() { const redis = new Redis(config.REDIS_HOST!, config.REDIS_PORT); const beaconApi = new BeaconApi(currentNetwork.BEACON_REST_API!); const contract = new EOSContract(contractAddress, rpcEndpoint); - publishProofs(redis, beaconApi, contract, currentNetwork); + publishProofs(redis, beaconApi, contract, currentNetwork, config.SLOT_JUMP); } publishTask(); diff --git a/relay/implementations/publish_evm_transaction.ts b/relay/implementations/publish_evm_transaction.ts index 94f2e75d7..936930961 100644 --- a/relay/implementations/publish_evm_transaction.ts +++ b/relay/implementations/publish_evm_transaction.ts @@ -119,6 +119,8 @@ export async function getSolidityProof(update: { }> { const calldata = await groth16.exportSolidityCallData( { + protocol: '', + curve: '', pi_a: update.a, pi_b: update.b, pi_c: update.c, diff --git a/relay/utils/discord_monitor.ts b/relay/utils/discord_monitor.ts index 2a9fc15b0..810886ebb 100644 --- a/relay/utils/discord_monitor.ts +++ b/relay/utils/discord_monitor.ts @@ -19,46 +19,13 @@ type SolidityDictionary = { }; class DiscordMonitor { - client: Discord.Client; - beaconApi: BeaconApi; - contracts: SolidityDictionary = {}; - channel: Discord.Channel; + private readonly contracts: SolidityDictionary = {}; - alert_threshold: number; - - public static async initializeDiscordMonitor( - alert_threshold: number, - ): Promise { - let discordMonitor = new DiscordMonitor(alert_threshold); - - discordMonitor.alert_threshold = alert_threshold; - - discordMonitor.beaconApi = new BeaconApi([ - 'http://unstable.prater.beacon-api.nimbus.team/', - ]); - - discordMonitor.client = new Discord.Client({ - intents: [ - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.GuildMembers, - GatewayIntentBits.DirectMessages, - ], - partials: [Partials.Channel, Partials.Message, Partials.Reaction], - }); - - const result = await discordMonitor.client.login(env.token); - - await discordMonitor.client.on(Events.ClientReady, async interaction => { - console.log('Client Ready!'); - console.log(`Logged in as ${discordMonitor.client.user?.tag}!`); - }); - - return discordMonitor; - } - - private constructor(alert_threshold: number) { - // Track contracts if initialized in .env + constructor( + private readonly client: Discord.Client, + private readonly beaconApi: BeaconApi, + private readonly alert_threshold: number, + ) { if (env.GOERLI_RPC && env.LC_GOERLI) { this.contracts['Goerli'] = { RPC: env.GOERLI_RPC, @@ -140,6 +107,33 @@ class DiscordMonitor { } } + public static async initializeDiscordMonitor( + alert_threshold: number, + ): Promise { + const beaconApi = new BeaconApi([ + 'http://unstable.prater.beacon-api.nimbus.team/', + ]); + + const client = new Discord.Client({ + intents: [ + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.GuildMembers, + GatewayIntentBits.DirectMessages, + ], + partials: [Partials.Channel, Partials.Message, Partials.Reaction], + }); + + const result = await client.login(env.token); + + await client.on(Events.ClientReady, async interaction => { + console.log('Client Ready!'); + console.log(`Logged in as ${client.user?.tag}!`); + }); + + return new DiscordMonitor(client, beaconApi, alert_threshold); + } + private async getSlotDelay(contract: SolidityContract) { return ( (await this.beaconApi.getCurrentHeadSlot()) - diff --git a/tests/cosmosLightClient/test-constantine-verifier-in-cosmos.ts b/tests/cosmosLightClient/test-constantine-verifier-in-cosmos.ts index de4a00e28..2b04fd4d0 100644 --- a/tests/cosmosLightClient/test-constantine-verifier-in-cosmos.ts +++ b/tests/cosmosLightClient/test-constantine-verifier-in-cosmos.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import glob_ from 'glob'; const glob = glob_.sync; import { promisify } from 'node:util'; diff --git a/tests/cosmosLightClient/test-nim-light-client-in-cosmos.ts b/tests/cosmosLightClient/test-nim-light-client-in-cosmos.ts index 56c16942f..2f077ce7a 100644 --- a/tests/cosmosLightClient/test-nim-light-client-in-cosmos.ts +++ b/tests/cosmosLightClient/test-nim-light-client-in-cosmos.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import glob_ from 'glob'; const glob = glob_.sync; import { promisify } from 'node:util'; diff --git a/tests/cosmosLightClient/test-verifier-in-cosmos-relay.ts b/tests/cosmosLightClient/test-verifier-in-cosmos-relay.ts index d0a005617..cd9870679 100644 --- a/tests/cosmosLightClient/test-verifier-in-cosmos-relay.ts +++ b/tests/cosmosLightClient/test-verifier-in-cosmos-relay.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import glob_ from 'glob'; const glob = glob_.sync; import { promisify } from 'node:util'; diff --git a/tests/cosmosLightClient/test-verifier-in-cosmos.ts b/tests/cosmosLightClient/test-verifier-in-cosmos.ts index ceb4be57b..b17422c30 100644 --- a/tests/cosmosLightClient/test-verifier-in-cosmos.ts +++ b/tests/cosmosLightClient/test-verifier-in-cosmos.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import glob_ from 'glob'; const glob = glob_.sync; import { promisify } from 'node:util'; diff --git a/tests/eosLightClient/test-verifier-in-EOS-relay.ts b/tests/eosLightClient/test-verifier-in-EOS-relay.ts index 15084c7fc..b86d0748d 100644 --- a/tests/eosLightClient/test-verifier-in-EOS-relay.ts +++ b/tests/eosLightClient/test-verifier-in-EOS-relay.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import glob_ from 'glob'; const glob = glob_.sync; import { promisify } from 'node:util'; @@ -8,7 +10,6 @@ import { } from '../helpers/helpers'; import { getRootDir, sleep } from '../../libs/typescript/ts-utils/common-utils'; import { EOSContract } from '../../relay/implementations/eos-contract'; -import { getDataFromPrintHeaderResult } from '../../libs/typescript/cosmos-utils/cosmos-utils'; import { bytesToHex } from '../../libs/typescript/ts-utils/bls'; const exec = promisify(exec_); diff --git a/tests/eosLightClient/test-verifier-in-EOS.ts b/tests/eosLightClient/test-verifier-in-EOS.ts index c121429ff..7e29da5ac 100644 --- a/tests/eosLightClient/test-verifier-in-EOS.ts +++ b/tests/eosLightClient/test-verifier-in-EOS.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import glob_ from 'glob'; const glob = glob_.sync; import { promisify } from 'node:util'; diff --git a/tests/test-nim-light-client.ts b/tests/test-nim-light-client.ts index 77046796e..734d15db9 100644 --- a/tests/test-nim-light-client.ts +++ b/tests/test-nim-light-client.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import { dirname, basename } from 'node:path'; import { fileURLToPath } from 'node:url'; import glob_ from 'glob'; diff --git a/tests/test-nim-to-wasm.ts b/tests/test-nim-to-wasm.ts index 7d0f0524a..11c128c94 100644 --- a/tests/test-nim-to-wasm.ts +++ b/tests/test-nim-to-wasm.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import { dirname, basename } from 'node:path'; import { fileURLToPath } from 'node:url'; import glob_ from 'glob'; diff --git a/tests/verify_proof/verify_given_proof_test.ts b/tests/verify_proof/verify_given_proof_test.ts index 0e690fa91..0ece05fbc 100644 --- a/tests/verify_proof/verify_given_proof_test.ts +++ b/tests/verify_proof/verify_given_proof_test.ts @@ -1,3 +1,5 @@ +import { beforeAll, describe, expect, test } from '@jest/globals'; + import { VerifyFromPaths } from './../../libs/typescript/verify-utils/verify-given-proof-ffjavascript'; import { getRootDir } from '../../libs/typescript/ts-utils/common-utils'; From ab0460e821b6f260bc050ed23f1b5a6ee3c3dbb3 Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Tue, 20 Feb 2024 15:08:02 +0200 Subject: [PATCH 48/59] feat(commitment_mapper/balance_verification): various enhancements feat(plonky2): Make commitment mapper redis serialization hex non-working stuff more changes got the commitment mapper inner proofs working Use reduce Rename addInnerProofs to updateBranches and don't call it for every batch Delete an obsolete branch change order of task parameters continually process the head slot's epoch Implement tasks fetching data for old epochs Add a script for pruning data for old epochs Add search merkle path extractor script & store data in Redis as a json data type instead of string. Fix commitment mapper zero proofs computation Added epoch syncing up to head Delete an unused constant Fixed spamming zero validator tasks on script start Added slot as an optional argument for balances script Delete unused code Fixed fetching many validators and writing to Redis Make balance_verification build and make it use json redis data type Change the indexing scheme for balance verification tree and reduce the size of the inner tasks fix balances generation for validator_balacnce_input fix(commitment_mapper): save leaf validator proofs before calculating them feat(balance_verification): command-line option to delete intermediary proofs refactor(balance_verification): delete logging feat(beacon-api): fetch validators from a different source depending on the requesteded count feat(scripts): create a common config for default options perf(commitment_mapper): optimize validator changed predicate improve(commitment_mapper): logging in get_changed_validators.ts script feat(config): use common_config.json in the worker improve(balances): improve logging and disconnect from ioredis instance refactor(crud): delete unnecessary syntex refactor(commitment_mapper): remove CommitmentMapperTaskType::None and use options instead refactor(crud): delete an unused function validator_proof_to_json refactor(commitment_mapper): refactor, rename and split into multiple files refactor(crud): delete unused imports improve(commitment_mapper): improve error logging fix(balance_verification): fix crash on inner level proofs if lower level not yet completed improve(balance_verification): improve logging refactor(): renaming refactor(commitment_mapper): partially remove dependency on the redis package and move commitment mapper to a separate file fix(commitment_mapper): wrong hash when odd number of validators fix(final_layer): patch the final layer proof generation refactor(commitment_mapper): rename utils.ts to scheduler.ts refactor(commitment_mapper): no longer implement the dispose interface feat(commitment_mapper): add incomplete zero tasks to redis and improve logging refactor: delete obsolete parameter from the commitment_mapper inner level circuit feat: offset option refactor: use just relay/redis in the get_balances_input script improve: colorful logging fix(commitment_mapper): save zero validator proof in redis when not calculated fix: push leased tasks in from of the work queue fix: refetch proof on each retry feat: make light clean duration configurable refactor: less hacky way to query validators and don't fetch 0 validator on startup fix(redis): waitForConnection fix: load validators for an epoch parameter wihtout duplicating validators fix: pass a missing argument feat(commitment_mapper/balance_verification): light cleaner script that returns tasks to the front of the queue refactor(commitment_mapper/balance_verification): use ProofStorage Co-authored-by: Aneta Tsvetkova --- .../plonky2/circuits/Cargo.lock | 779 +++++++----- .../plonky2/circuits/Cargo.toml | 3 +- .../examples/is_valid_merkle_branch.rs | 2 +- .../src/build_balance_inner_level_circuit.rs | 8 +- ...d_commitment_mapper_first_level_circuit.rs | 2 +- ...d_commitment_mapper_inner_level_circuit.rs | 34 +- .../plonky2/circuits/src/hash_tree_root.rs | 2 +- .../plonky2/circuits/src/lib.rs | 8 +- .../plonky2/circuits/src/sha256.rs | 2 +- .../src/validator_commitment_mapper.rs | 31 +- .../circuits/src/validator_hash_tree_root.rs | 6 +- .../src/validator_hash_tree_root_poseidon.rs | 2 +- .../plonky2/circuits_executables/Cargo.lock | 1075 ++++++++++------- .../plonky2/circuits_executables/Cargo.toml | 16 +- .../bin/balance_verification.rs | 222 ++-- .../bin/commitment_mapper.rs | 352 ++++-- .../circuits_executables/bin/final_layer.rs | 95 +- .../examples/balance_verification_example.rs | 4 +- .../examples/read_circuit_data_example.rs | 4 +- .../src/commitment_mapper_task.rs | 108 ++ .../circuits_executables/src/crud/common.rs | 416 +++++-- .../crud/proof_storage/aws_proof_storage.rs | 18 +- .../crud/proof_storage/azure_proof_storage.rs | 10 + .../crud/proof_storage/file_proof_storage.rs | 15 + .../src/crud/proof_storage/mod.rs | 4 +- .../src/crud/proof_storage/proof_storage.rs | 4 + .../crud/proof_storage/redis_proof_storage.rs | 20 +- .../plonky2/circuits_executables/src/lib.rs | 2 + .../circuits_executables/src/provers.rs | 11 - .../plonky2/circuits_executables/src/utils.rs | 13 + .../circuits_executables/src/validator.rs | 27 +- .../src/validator_balances_input.rs | 4 +- .../src/validator_commitment_constants.rs | 27 +- .../plonky2/common_config.json | 5 + .../validator_commitment_constants.json | 6 +- .../get_balances_input/get_balances_input.ts | 180 ++- .../{ligth_cleaner.ts => light_cleaner.ts} | 29 +- .../plonky2/light_cleaner_common.ts | 63 + .../delete_old_data.ts | 42 + .../get_changed_validators.ts | 351 +----- .../get_validator_merkle_path.ts | 99 ++ .../light_cleaner.ts | 26 + .../ligth_cleaner.ts | 42 - .../request_the_zero_validators.ts | 77 -- .../scheduler.ts | 278 +++++ package.json | 6 +- relay/implementations/beacon-api.ts | 63 +- relay/implementations/redis.ts | 256 ++-- relay/package.json | 4 + relay/types/types.ts | 6 + yarn-project.nix | 2 +- yarn.lock | 46 +- 52 files changed, 3061 insertions(+), 1846 deletions(-) create mode 100644 beacon-light-client/plonky2/circuits_executables/src/commitment_mapper_task.rs create mode 100644 beacon-light-client/plonky2/circuits_executables/src/utils.rs create mode 100644 beacon-light-client/plonky2/common_config.json mode change 100755 => 100644 beacon-light-client/plonky2/get_balances_input/get_balances_input.ts rename beacon-light-client/plonky2/get_balances_input/{ligth_cleaner.ts => light_cleaner.ts} (52%) create mode 100644 beacon-light-client/plonky2/light_cleaner_common.ts create mode 100644 beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts create mode 100644 beacon-light-client/plonky2/validators_commitment_mapper_tree/get_validator_merkle_path.ts create mode 100644 beacon-light-client/plonky2/validators_commitment_mapper_tree/light_cleaner.ts delete mode 100644 beacon-light-client/plonky2/validators_commitment_mapper_tree/ligth_cleaner.ts delete mode 100644 beacon-light-client/plonky2/validators_commitment_mapper_tree/request_the_zero_validators.ts create mode 100644 beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts diff --git a/beacon-light-client/plonky2/circuits/Cargo.lock b/beacon-light-client/plonky2/circuits/Cargo.lock index b9a5627b0..35ace1c1c 100644 --- a/beacon-light-client/plonky2/circuits/Cargo.lock +++ b/beacon-light-client/plonky2/circuits/Cargo.lock @@ -19,21 +19,22 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" dependencies = [ "cfg-if", "const-random", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" [[package]] name = "arc-swap" @@ -48,36 +49,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 2.5.3", "futures-core", ] +[[package]] +name = "async-channel" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +dependencies = [ + "concurrent-queue", + "event-listener 5.1.0", + "event-listener-strategy 0.5.0", + "futures-core", + "pin-project-lite", +] + [[package]] name = "async-executor" -version = "1.5.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ - "async-lock", + "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand", - "futures-lite", + "fastrand 2.0.1", + "futures-lite 2.2.0", "slab", ] [[package]] name = "async-global-executor" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel", + "async-channel 2.2.0", "async-executor", - "async-io", - "async-lock", + "async-io 2.3.1", + "async-lock 3.3.0", "blocking", - "futures-lite", + "futures-lite 2.2.0", "once_cell", ] @@ -87,27 +101,57 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", "cfg-if", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "log", "parking", - "polling", - "rustix", + "polling 2.8.0", + "rustix 0.37.27", "slab", - "socket2 0.4.9", + "socket2 0.4.10", "waker-fn", ] +[[package]] +name = "async-io" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.2.0", + "parking", + "polling 3.5.0", + "rustix 0.38.31", + "slab", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "async-lock" version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ - "event-listener", + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", ] [[package]] @@ -116,15 +160,15 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" dependencies = [ - "async-channel", + "async-channel 1.9.0", "async-global-executor", - "async-io", - "async-lock", + "async-io 1.13.0", + "async-lock 2.8.0", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite", + "futures-lite 1.13.0", "gloo-timers", "kv-log-macro", "log", @@ -138,26 +182,26 @@ dependencies = [ [[package]] name = "async-task" -version = "4.4.0" +version = "4.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.50", ] [[package]] name = "atomic-waker" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" @@ -186,6 +230,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + [[package]] name = "block-buffer" version = "0.9.0" @@ -197,45 +247,43 @@ dependencies = [ [[package]] name = "blocking" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ - "async-channel", - "async-lock", + "async-channel 2.2.0", + "async-lock 3.3.0", "async-task", - "atomic-waker", - "fastrand", - "futures-lite", - "log", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.2.0", + "piper", + "tracing", ] [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "c764d619ca78fccbf3069b37bd7af92577f044bb15236036662d79b6559f25b7" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730" [[package]] name = "cfg-if" @@ -248,7 +296,7 @@ name = "circuits" version = "0.1.0" dependencies = [ "anyhow", - "futures-lite", + "futures-lite 1.13.0", "hex", "itertools 0.10.5", "jemallocator", @@ -257,7 +305,7 @@ dependencies = [ "plonky2", "plonky2_u32", "rand", - "redis 0.22.3", + "redis", "redis-work-queue", "serde", "serde_json", @@ -282,86 +330,66 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ "crossbeam-utils", ] [[package]] name = "const-random" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" +checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" dependencies = [ "const-random-macro", - "proc-macro-hack", ] [[package]] name = "const-random-macro" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ "getrandom", "once_cell", - "proc-macro-hack", "tiny-keccak", ] [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -380,9 +408,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "equivalent" @@ -392,30 +420,61 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.3" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "errno-dragonfly", "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "event-listener" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" dependencies = [ - "cc", - "libc", + "concurrent-queue", + "parking", + "pin-project-lite", ] [[package]] name = "event-listener" -version = "2.5.3" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "b7ad6fd685ce13acd6d9541a30f6db6567a7a24c9ffd4ba2955d29e3f22c8b27" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +dependencies = [ + "event-listener 5.1.0", + "pin-project-lite", +] [[package]] name = "fastrand" @@ -426,6 +485,12 @@ dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + [[package]] name = "fixed-hash" version = "0.7.0" @@ -437,18 +502,18 @@ dependencies = [ [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -461,9 +526,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -471,15 +536,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -488,9 +553,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" @@ -498,7 +563,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "futures-io", "memchr", @@ -507,34 +572,47 @@ dependencies = [ "waker-fn", ] +[[package]] +name = "futures-lite" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +dependencies = [ + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.50", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -560,9 +638,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "js-sys", @@ -573,9 +651,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "gloo-timers" @@ -591,9 +669,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", "rayon", @@ -602,9 +680,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" [[package]] name = "hex" @@ -614,9 +692,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -624,9 +702,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" dependencies = [ "equivalent", "hashbrown", @@ -649,7 +727,7 @@ checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -672,9 +750,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jemalloc-sys" @@ -698,9 +776,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] @@ -726,9 +804,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.147" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "linux-raw-sys" @@ -736,6 +814,12 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + [[package]] name = "log" version = "0.4.20" @@ -747,37 +831,28 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.2" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5486aed0026218e61b8a01d5fbd5a0a134649abb71a0e53b7bc088529dced86e" - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -808,9 +883,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "num-traits", "rand", @@ -818,19 +893,18 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", @@ -851,37 +925,27 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "object" -version = "0.32.0" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" @@ -891,34 +955,34 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "parking" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.50", ] [[package]] @@ -933,6 +997,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + [[package]] name = "plonky2" version = "0.1.3" @@ -1006,13 +1081,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", - "bitflags", + "bitflags 1.3.2", "cfg-if", "concurrent-queue", "libc", "log", "pin-project-lite", - "windows-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.31", + "tracing", + "windows-sys 0.52.0", ] [[package]] @@ -1031,26 +1120,20 @@ dependencies = [ "uint", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -1087,9 +1170,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", @@ -1097,35 +1180,19 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "redis" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa8455fa3621f6b41c514946de66ea0531f57ca017b2e6c7cc368035ea5b46df" -dependencies = [ - "combine", - "itoa", - "percent-encoding", - "ryu", - "sha1_smol", - "url", ] [[package]] name = "redis" -version = "0.23.2" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd6543a7bc6428396845f6854ccf3d1ae8823816592e2cbe74f20f50f209d02" +checksum = "4f49cdc0bb3f412bf8e7d1bd90fe1d9eb10bc5c399ba90973c14662a27b3f8ba" dependencies = [ "arc-swap", "async-std", @@ -1138,8 +1205,10 @@ dependencies = [ "percent-encoding", "pin-project-lite", "ryu", + "serde", + "serde_json", "sha1_smol", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tokio-retry", "tokio-util", @@ -1153,7 +1222,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf912baed64806b519b0b1e2e6879f02727319f6917f150d0440abc6a2ca1042" dependencies = [ "futures", - "redis 0.23.2", + "redis", "serde", "serde_json", "uuid", @@ -1167,55 +1236,62 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.37.23" +version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", - "linux-raw-sys", - "windows-sys", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", ] [[package]] -name = "ryu" -version = "1.0.15" +name = "rustix" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", +] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "ryu" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.50", ] [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -1224,9 +1300,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.25" +version = "0.9.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f" dependencies = [ "indexmap", "itoa", @@ -1265,9 +1341,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -1275,12 +1351,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1302,9 +1378,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.29" +version = "2.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" dependencies = [ "proc-macro2", "quote", @@ -1337,17 +1413,17 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", "libc", "mio", "pin-project-lite", - "socket2 0.5.3", - "windows-sys", + "socket2 0.5.5", + "windows-sys 0.48.0", ] [[package]] @@ -1363,9 +1439,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -1377,29 +1453,28 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-core", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uint" @@ -1415,21 +1490,21 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -1446,15 +1521,15 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" +checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -1463,9 +1538,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" dependencies = [ "getrandom", "rand", @@ -1474,20 +1549,20 @@ dependencies = [ [[package]] name = "uuid-macro-internal" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e1ba1f333bd65ce3c9f27de592fcbc256dafe3af2717f56d7c87761fbaccf4" +checksum = "7abb14ae1a50dad63eaa768a458ef43d298cd1bd44951677bd10b732a9ba2a2d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.50", ] [[package]] name = "value-bag" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" +checksum = "126e423afe2dd9ac52142e7e9d5ce4135d7e13776c529d27fd6bc49f19e3280b" [[package]] name = "version_check" @@ -1497,9 +1572,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "waker-fn" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "wasi" @@ -1509,9 +1584,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1519,24 +1594,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.50", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -1546,9 +1621,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1556,28 +1631,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.50", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" dependencies = [ "js-sys", "wasm-bindgen", @@ -1611,7 +1686,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -1620,13 +1704,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -1635,38 +1734,100 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] diff --git a/beacon-light-client/plonky2/circuits/Cargo.toml b/beacon-light-client/plonky2/circuits/Cargo.toml index 76e6a5c9b..e63dcc2cd 100644 --- a/beacon-light-client/plonky2/circuits/Cargo.toml +++ b/beacon-light-client/plonky2/circuits/Cargo.toml @@ -21,5 +21,6 @@ num = { version = "0.4.0", default-features = false } log = "0.4.14" redis-work-queue = "0.1.3" futures-lite = "1" -redis = "0.22" +redis = { version = "0.23", features = ["json", "aio", "tokio-comp"] } typenum = "1.16.0" + diff --git a/beacon-light-client/plonky2/circuits/examples/is_valid_merkle_branch.rs b/beacon-light-client/plonky2/circuits/examples/is_valid_merkle_branch.rs index 0b921cab9..2d1b3aa96 100644 --- a/beacon-light-client/plonky2/circuits/examples/is_valid_merkle_branch.rs +++ b/beacon-light-client/plonky2/circuits/examples/is_valid_merkle_branch.rs @@ -6,7 +6,7 @@ use plonky2::field::goldilocks_field::GoldilocksField; use plonky2::field::types::Field; use plonky2::iop::witness::{PartialWitness, WitnessWrite}; use plonky2::plonk::circuit_builder::CircuitBuilder; -use plonky2::plonk::circuit_data::{CircuitConfig}; +use plonky2::plonk::circuit_data::CircuitConfig; use plonky2::plonk::config::PoseidonGoldilocksConfig; use serde::Deserialize; use std::fs::File; diff --git a/beacon-light-client/plonky2/circuits/src/build_balance_inner_level_circuit.rs b/beacon-light-client/plonky2/circuits/src/build_balance_inner_level_circuit.rs index 180fa4893..24e45d808 100644 --- a/beacon-light-client/plonky2/circuits/src/build_balance_inner_level_circuit.rs +++ b/beacon-light-client/plonky2/circuits/src/build_balance_inner_level_circuit.rs @@ -10,13 +10,11 @@ use plonky2::{ }; use crate::{ - biguint::{CircuitBuilderBiguint}, - build_validator_balance_circuit::{ - set_public_variables, ValidatorBalanceProofTargetsExt, - }, + biguint::CircuitBuilderBiguint, + build_validator_balance_circuit::{set_public_variables, ValidatorBalanceProofTargetsExt}, sha256::make_circuits, targets_serialization::{ReadTargets, WriteTargets}, - utils::{ETH_SHA256_BIT_SIZE}, + utils::ETH_SHA256_BIT_SIZE, }; pub struct BalanceInnerCircuitTargets { diff --git a/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_first_level_circuit.rs b/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_first_level_circuit.rs index afd720e53..b78235664 100644 --- a/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_first_level_circuit.rs +++ b/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_first_level_circuit.rs @@ -108,7 +108,7 @@ pub fn build_commitment_mapper_first_level_circuit() -> ( #[cfg(test)] mod test { use anyhow::Result; - use plonky2::iop::witness::{PartialWitness}; + use plonky2::iop::witness::PartialWitness; use crate::{ build_commitment_mapper_first_level_circuit::build_commitment_mapper_first_level_circuit, diff --git a/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_inner_level_circuit.rs b/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_inner_level_circuit.rs index b8ba935a5..6fd793ef0 100644 --- a/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_inner_level_circuit.rs +++ b/beacon-light-client/plonky2/circuits/src/build_commitment_mapper_inner_level_circuit.rs @@ -1,6 +1,6 @@ use plonky2::{ - hash::{poseidon::PoseidonHash}, - iop::target::{BoolTarget, Target}, + hash::poseidon::PoseidonHash, + iop::target::Target, plonk::{ circuit_builder::CircuitBuilder, circuit_data::{CircuitConfig, CircuitData, VerifierCircuitTarget}, @@ -11,19 +11,16 @@ use plonky2::{ }; use crate::{ - build_commitment_mapper_first_level_circuit::{ - CommitmentMapperProofTargetExt, - }, + build_commitment_mapper_first_level_circuit::CommitmentMapperProofTargetExt, sha256::make_circuits, targets_serialization::{ReadTargets, WriteTargets}, - utils::{ETH_SHA256_BIT_SIZE}, + utils::ETH_SHA256_BIT_SIZE, }; pub struct CommitmentMapperInnerCircuitTargets { pub proof1: ProofWithPublicInputsTarget<2>, pub proof2: ProofWithPublicInputsTarget<2>, pub verifier_circuit_target: VerifierCircuitTarget, - pub is_zero: BoolTarget, } impl ReadTargets for CommitmentMapperInnerCircuitTargets { @@ -32,7 +29,6 @@ impl ReadTargets for CommitmentMapperInnerCircuitTargets { proof1: data.read_target_proof_with_public_inputs()?, proof2: data.read_target_proof_with_public_inputs()?, verifier_circuit_target: data.read_target_verifier_circuit()?, - is_zero: data.read_target_bool()?, }) } } @@ -44,7 +40,6 @@ impl WriteTargets for CommitmentMapperInnerCircuitTargets { data.write_target_proof_with_public_inputs(&self.proof1)?; data.write_target_proof_with_public_inputs(&self.proof2)?; data.write_target_verifier_circuit(&self.verifier_circuit_target)?; - data.write_target_bool(self.is_zero)?; Ok(data) } @@ -83,29 +78,19 @@ pub fn build_commitment_mapper_inner_circuit( builder.add_virtual_proof_with_pis(&inner_circuit_data.common); builder.verify_proof::(&pt1, &verifier_circuit_target, &inner_circuit_data.common); - builder.verify_proof::(&pt2, &verifier_circuit_target, &inner_circuit_data.common); - let is_zero = builder.add_virtual_bool_target_safe(); - let is_one = builder.not(is_zero); - - let poseidon_hash = pt1 - .get_commitment_mapper_poseidon_hash_tree_root() - .elements - .map(|x| builder.mul(x, is_one.target)); + let poseidon_hash = pt1.get_commitment_mapper_poseidon_hash_tree_root().elements; let sha256_hash = pt1 .get_commitment_mapper_sha256_hash_tree_root() - .map(|x| builder.mul(x.target, is_one.target)); + .map(|x| x.target); - let poseidon_hash2 = pt2 - .get_commitment_mapper_poseidon_hash_tree_root() - .elements - .map(|x| builder.mul(x, is_one.target)); + let poseidon_hash2 = pt2.get_commitment_mapper_poseidon_hash_tree_root().elements; let sha256_hash2 = pt2 .get_commitment_mapper_sha256_hash_tree_root() - .map(|x| builder.mul(x.target, is_one.target)); + .map(|x| x.target); let hasher = make_circuits(&mut builder, (2 * ETH_SHA256_BIT_SIZE) as u64); @@ -140,8 +125,7 @@ pub fn build_commitment_mapper_inner_circuit( CommitmentMapperInnerCircuitTargets { proof1: pt1, proof2: pt2, - verifier_circuit_target: verifier_circuit_target, - is_zero, + verifier_circuit_target, }, data, ) diff --git a/beacon-light-client/plonky2/circuits/src/hash_tree_root.rs b/beacon-light-client/plonky2/circuits/src/hash_tree_root.rs index b2e5b35d4..3771040db 100644 --- a/beacon-light-client/plonky2/circuits/src/hash_tree_root.rs +++ b/beacon-light-client/plonky2/circuits/src/hash_tree_root.rs @@ -64,7 +64,7 @@ mod tests { use anyhow::Result; use plonky2::{ field::goldilocks_field::GoldilocksField, - iop::witness::{PartialWitness}, + iop::witness::PartialWitness, plonk::{ circuit_builder::CircuitBuilder, circuit_data::CircuitConfig, config::PoseidonGoldilocksConfig, diff --git a/beacon-light-client/plonky2/circuits/src/lib.rs b/beacon-light-client/plonky2/circuits/src/lib.rs index cc8c4c724..2b94f9a71 100644 --- a/beacon-light-client/plonky2/circuits/src/lib.rs +++ b/beacon-light-client/plonky2/circuits/src/lib.rs @@ -1,18 +1,18 @@ pub mod biguint; +pub mod build_balance_inner_level_circuit; pub mod build_commitment_mapper_first_level_circuit; pub mod build_commitment_mapper_inner_level_circuit; +pub mod build_final_circuit; pub mod build_validator_balance_circuit; pub mod generator_serializer; pub mod hash_tree_root; pub mod hash_tree_root_poseidon; +pub mod is_active_validator; pub mod is_valid_merkle_branch; pub mod sha256; +pub mod targets_serialization; pub mod utils; pub mod validator_balance_circuit; pub mod validator_commitment_mapper; pub mod validator_hash_tree_root; pub mod validator_hash_tree_root_poseidon; -pub mod build_balance_inner_level_circuit; -pub mod is_active_validator; -pub mod build_final_circuit; -pub mod targets_serialization; diff --git a/beacon-light-client/plonky2/circuits/src/sha256.rs b/beacon-light-client/plonky2/circuits/src/sha256.rs index 3d75a00e6..0e2472860 100644 --- a/beacon-light-client/plonky2/circuits/src/sha256.rs +++ b/beacon-light-client/plonky2/circuits/src/sha256.rs @@ -1,7 +1,7 @@ +use plonky2::field::extension::Extendable; use plonky2::hash::hash_types::RichField; use plonky2::iop::target::BoolTarget; use plonky2::plonk::circuit_builder::CircuitBuilder; -use plonky2::field::extension::Extendable; use plonky2_u32::gadgets::arithmetic_u32::{CircuitBuilderU32, U32Target}; #[rustfmt::skip] diff --git a/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs b/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs index 265334662..e399b719b 100644 --- a/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs @@ -16,6 +16,7 @@ use crate::{ }, }; pub struct ValidatorCommitmentTargets { + pub validator_is_zero: BoolTarget, pub validator: ValidatorShaTargets, pub sha256_hash_tree_root: [BoolTarget; 256], pub poseidon_hash_tree_root: HashOutTarget, @@ -27,6 +28,7 @@ impl ReadTargets for ValidatorCommitmentTargets { Self: Sized, { Ok(ValidatorCommitmentTargets { + validator_is_zero: data.read_target_bool()?, validator: ValidatorShaTargets::read_targets(data)?, sha256_hash_tree_root: data.read_target_bool_vec()?.try_into().unwrap(), poseidon_hash_tree_root: data.read_target_hash()?, @@ -36,8 +38,10 @@ impl ReadTargets for ValidatorCommitmentTargets { impl WriteTargets for ValidatorCommitmentTargets { fn write_targets(&self) -> IoResult> { - let mut data = self.validator.write_targets()?; + let mut data = Vec::new(); + data.write_target_bool(self.validator_is_zero)?; + data.extend(self.validator.write_targets()?); data.write_target_bool_vec(&self.sha256_hash_tree_root)?; data.write_target_hash(&self.poseidon_hash_tree_root)?; @@ -111,10 +115,25 @@ pub fn validator_commitment_mapper, const D: usize> &validator_poseidon_mapped.withdrawable_epoch, ); + let validator_is_zero = builder.add_virtual_bool_target_safe(); + let zero = builder.zero(); + + let poseidon_hash_tree_root = validator_poseidon + .hash_tree_root + .elements + .map(|x| builder._if(validator_is_zero, zero, x)); + + let sha256_hash_tree_root = hash_tree_root_sha256 + .hash_tree_root + .map(|x| BoolTarget::new_unsafe(builder._if(validator_is_zero, zero, x.target))); + ValidatorCommitmentTargets { - validator: validator, - sha256_hash_tree_root: hash_tree_root_sha256.hash_tree_root, - poseidon_hash_tree_root: validator_poseidon.hash_tree_root, + validator_is_zero, + validator, + sha256_hash_tree_root, + poseidon_hash_tree_root: HashOutTarget { + elements: poseidon_hash_tree_root, + }, } } @@ -123,9 +142,7 @@ mod test { use anyhow::Result; use plonky2::{ field::goldilocks_field::GoldilocksField, - iop::{ - witness::{PartialWitness}, - }, + iop::witness::PartialWitness, plonk::{ circuit_builder::CircuitBuilder, circuit_data::CircuitConfig, config::PoseidonGoldilocksConfig, diff --git a/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root.rs b/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root.rs index d5379a250..c1e77ffa8 100644 --- a/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root.rs +++ b/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root.rs @@ -146,7 +146,7 @@ mod test { use anyhow::Result; use plonky2::{ field::goldilocks_field::GoldilocksField, - iop::witness::{PartialWitness}, + iop::witness::PartialWitness, plonk::{ circuit_builder::CircuitBuilder, circuit_data::CircuitConfig, config::PoseidonGoldilocksConfig, @@ -154,7 +154,8 @@ mod test { }; use crate::{ - utils::{ETH_SHA256_BIT_SIZE, SetBytesArray}, validator_hash_tree_root::hash_tree_root_validator_sha256, + utils::{SetBytesArray, ETH_SHA256_BIT_SIZE}, + validator_hash_tree_root::hash_tree_root_validator_sha256, }; #[test] @@ -239,7 +240,6 @@ mod test { pw.set_bytes_array(&targets.validator.withdrawable_epoch, &withdrawable_epoch); - for i in 0..ETH_SHA256_BIT_SIZE { if validator_hash_tree_root[i] == "1" { builder.assert_one(targets.hash_tree_root[i].target); diff --git a/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root_poseidon.rs b/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root_poseidon.rs index 6f458ad82..1cee457ec 100644 --- a/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root_poseidon.rs +++ b/beacon-light-client/plonky2/circuits/src/validator_hash_tree_root_poseidon.rs @@ -4,7 +4,7 @@ use plonky2::{ hash_types::{HashOutTarget, RichField}, poseidon::PoseidonHash, }, - iop::target::{BoolTarget}, + iop::target::BoolTarget, plonk::circuit_builder::CircuitBuilder, util::serialization::{Buffer, IoResult, Read, Write}, }; diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.lock b/beacon-light-client/plonky2/circuits_executables/Cargo.lock index deca9dbb1..fd788e132 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.lock +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.lock @@ -10,9 +10,9 @@ checksum = "8b5ace29ee3216de37c0546865ad08edef58b0f9e76838ed8959a84a990e58c5" [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -25,14 +25,15 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" dependencies = [ "cfg-if", "const-random", "once_cell", "version_check", + "zerocopy", ] [[package]] @@ -46,9 +47,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" [[package]] name = "arc-swap" @@ -67,32 +68,45 @@ dependencies = [ "futures-core", ] +[[package]] +name = "async-channel" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +dependencies = [ + "concurrent-queue", + "event-listener 5.1.0", + "event-listener-strategy 0.5.0", + "futures-core", + "pin-project-lite", +] + [[package]] name = "async-executor" -version = "1.5.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ - "async-lock 2.7.0", + "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand 1.9.0", - "futures-lite", + "fastrand 2.0.1", + "futures-lite 2.2.0", "slab", ] [[package]] name = "async-global-executor" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel", + "async-channel 2.2.0", "async-executor", - "async-io", - "async-lock 2.7.0", + "async-io 2.3.1", + "async-lock 3.3.0", "blocking", - "futures-lite", + "futures-lite 2.2.0", "once_cell", ] @@ -102,37 +116,56 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock 2.7.0", + "async-lock 2.8.0", "autocfg", "cfg-if", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "log", "parking", - "polling", - "rustix 0.37.23", + "polling 2.8.0", + "rustix 0.37.27", "slab", - "socket2 0.4.9", + "socket2 0.4.10", "waker-fn", ] +[[package]] +name = "async-io" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.2.0", + "parking", + "polling 3.5.0", + "rustix 0.38.31", + "slab", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "async-lock" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ "event-listener 2.5.3", ] [[package]] name = "async-lock" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" dependencies = [ - "event-listener 4.0.2", - "event-listener-strategy", + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", "pin-project-lite", ] @@ -142,15 +175,15 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" dependencies = [ - "async-channel", + "async-channel 1.9.0", "async-global-executor", - "async-io", - "async-lock 2.7.0", + "async-io 1.13.0", + "async-lock 2.8.0", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite", + "futures-lite 1.13.0", "gloo-timers", "kv-log-macro", "log", @@ -164,26 +197,26 @@ dependencies = [ [[package]] name = "async-task" -version = "4.4.0" +version = "4.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] name = "atomic-waker" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atty" @@ -204,12 +237,11 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "aws-config" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11382bd8ac4c6c182a9775990935f96c916a865f1414486595f18eb8cfa9d90b" +checksum = "3182c19847238b50b62ae0383a6dbfc14514e552eb5e307e1ea83ccf5840b8a6" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-sdk-sso", "aws-sdk-ssooidc", @@ -224,7 +256,7 @@ dependencies = [ "bytes", "fastrand 2.0.1", "hex", - "http", + "http 0.2.11", "hyper", "ring", "time", @@ -235,9 +267,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a1629320d319dc715c6189b172349186557e209d2a7b893ff3d14efd33a47c" +checksum = "e5635d8707f265c773282a22abe1ecd4fbe96a8eb2f0f14c0796f8016f11a41a" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -245,30 +277,13 @@ dependencies = [ "zeroize", ] -[[package]] -name = "aws-http" -version = "0.60.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e4199d5d62ab09be6a64650c06cc5c4aa45806fed4c74bc4a5c8eaf039a6fa" -dependencies = [ - "aws-smithy-runtime-api", - "aws-smithy-types", - "aws-types", - "bytes", - "http", - "http-body", - "pin-project-lite", - "tracing", -] - [[package]] name = "aws-runtime" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87116d357c905b53f1828d15366363fd27b330a0393cbef349e653f686d36bad" +checksum = "6f82b9ae2adfd9d6582440d0eeb394c07f74d21b4c0cc72bdb73735c9e1a9c0e" dependencies = [ "aws-credential-types", - "aws-http", "aws-sigv4", "aws-smithy-async", "aws-smithy-eventstream", @@ -276,21 +291,23 @@ dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", "aws-types", + "bytes", "fastrand 2.0.1", - "http", + "http 0.2.11", + "http-body", "percent-encoding", + "pin-project-lite", "tracing", "uuid", ] [[package]] name = "aws-sdk-s3" -version = "1.10.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37dc95e83ed001fd28f90c925ee30fc6eedd31886fa769476594604e5f89dffd" +checksum = "5076637347e7d0218e61facae853110682ae58efabd2f4e2a9e530c203d5fa7b" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-sigv4", "aws-smithy-async", @@ -304,7 +321,7 @@ dependencies = [ "aws-smithy-xml", "aws-types", "bytes", - "http", + "http 0.2.11", "http-body", "once_cell", "percent-encoding", @@ -315,12 +332,11 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.9.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9d9a8ac4cdb8df39f9777fd41e15a9ae0d0b622b00909ae0322b4d2f9e6ac8" +checksum = "ca7e8097448832fcd22faf6bb227e97d76b40e354509d1307653a885811c7151" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", "aws-smithy-http", @@ -330,7 +346,7 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "http", + "http 0.2.11", "once_cell", "regex-lite", "tracing", @@ -338,12 +354,11 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.9.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ba4a42aa91acecd5ca43b330b5c8eb7f8808d720b6a6f796a35faa302fc73d" +checksum = "a75073590e23d63044606771afae309fada8eb10ded54a1ce4598347221d3fef" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", "aws-smithy-http", @@ -353,7 +368,7 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "http", + "http 0.2.11", "once_cell", "regex-lite", "tracing", @@ -361,12 +376,11 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.9.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3c7c3dcec7cccd24a13953eedf0f2964c2d728d22112744274cf0098ad2e35" +checksum = "650e4aaae41547151dea4d8142f7ffcc8ab8ba76d5dccc8933936ef2102c3356" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", "aws-smithy-http", @@ -377,7 +391,7 @@ dependencies = [ "aws-smithy-types", "aws-smithy-xml", "aws-types", - "http", + "http 0.2.11", "once_cell", "regex-lite", "tracing", @@ -385,9 +399,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d222297ca90209dc62245f0a490355795f29de362eb5c19caea4f7f55fe69078" +checksum = "404c64a104188ac70dd1684718765cb5559795458e446480e41984e68e57d888" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -399,7 +413,8 @@ dependencies = [ "form_urlencoded", "hex", "hmac", - "http", + "http 0.2.11", + "http 1.0.0", "once_cell", "p256", "percent-encoding", @@ -413,9 +428,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9f65000917e3aa94c259d67fe01fa9e4cd456187d026067d642436e6311a81" +checksum = "8ec441341e019c441aa78472ed6d206cfe198026c495277a95ac5bebda520742" dependencies = [ "futures-util", "pin-project-lite", @@ -424,9 +439,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.60.1" +version = "0.60.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2a63681f82fb85ca58d566534b7dc619c782fee0c61c1aa51e2b560c21cb4f" +checksum = "6ee554133eca2611b66d23548e48f9b44713befdb025ab76bc00185b878397a1" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -434,7 +449,7 @@ dependencies = [ "crc32c", "crc32fast", "hex", - "http", + "http 0.2.11", "http-body", "md-5", "pin-project-lite", @@ -445,9 +460,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.1" +version = "0.60.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85e16fa903c70c49ab3785e5f4ac2ad2171b36e0616f321011fa57962404bb6" +checksum = "e6363078f927f612b970edf9d1903ef5cef9a64d1e8423525ebb1f0a1633c858" dependencies = [ "aws-smithy-types", "bytes", @@ -456,9 +471,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.1" +version = "0.60.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4e816425a6b9caea4929ac97d0cb33674849bd5f0086418abc0d02c63f7a1bf" +checksum = "85d6a0619f7b67183067fa3b558f94f90753da2df8c04aeb7336d673f804b0b8" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -466,7 +481,7 @@ dependencies = [ "bytes", "bytes-utils", "futures-core", - "http", + "http 0.2.11", "http-body", "once_cell", "percent-encoding", @@ -477,18 +492,18 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.60.1" +version = "0.60.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ab3f6d49e08df2f8d05e1bb5b68998e1e67b76054d3c43e7b954becb9a5e9ac" +checksum = "a1c1b5186b6f5c579bf0de1bcca9dd3d946d6d51361ea1d18131f6a0b64e13ae" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-query" -version = "0.60.1" +version = "0.60.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f94a7a3aa509ff9e8b8d80749851d04e5eee0954c43f2e7d6396c4740028737" +checksum = "1c0a2ce65882e788d2cf83ff28b9b16918de0460c47bf66c5da4f6c17b4c9694" dependencies = [ "aws-smithy-types", "urlencoding", @@ -496,9 +511,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da5b0a3617390e769576321816112f711c13d7e1114685e022505cf51fe5e48" +checksum = "3b36f1f98c8d7b6256b86d4a3c8c4abb120670267baa9712a485ba477eaac9e9" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -507,7 +522,7 @@ dependencies = [ "bytes", "fastrand 2.0.1", "h2", - "http", + "http 0.2.11", "http-body", "hyper", "hyper-rustls", @@ -521,14 +536,15 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2404c9eb08bfe9af255945254d9afc69a367b7ee008b8db75c05e3bca485fc65" +checksum = "180898ed701a773fb3fadbd94b9e9559125cf88eeb1815ab99e35d4f5f34f7fb" dependencies = [ "aws-smithy-async", "aws-smithy-types", "bytes", - "http", + "http 0.2.11", + "http 1.0.0", "pin-project-lite", "tokio", "tracing", @@ -537,15 +553,15 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8136605d14ac88f57dc3a693a9f8a4eab4a3f52bc03ff13746f0cd704e97" +checksum = "897f1db4020ad91f2c2421945ec49b7e3eb81cc3fea99e8b5dd5be721e697fed" dependencies = [ "base64-simd", "bytes", "bytes-utils", "futures-core", - "http", + "http 0.2.11", "http-body", "itoa", "num-integer", @@ -560,24 +576,24 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.1" +version = "0.60.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e8f03926587fc881b12b102048bb04305bf7fb8c83e776f0ccc51eaa2378263" +checksum = "d16f94c9673412b7a72e3c3efec8de89081c320bf59ea12eed34c417a62ad600" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5d5ee29077e0fcd5ddd0c227b521a33aaf02434b7cdba1c55eec5c1f18ac47" +checksum = "8fbb5d48aae496f628e7aa2e41991dd4074f606d9e3ade1ce1059f293d40f9a2" dependencies = [ "aws-credential-types", "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", - "http", + "http 0.2.11", "rustc_version", "tracing", ] @@ -589,11 +605,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6218987c374650fdad0b476bfc675729762c28dfb35f58608a38a2b1ea337dd" dependencies = [ "async-trait", - "base64 0.21.5", + "base64 0.21.7", "bytes", "dyn-clone", "futures", - "getrandom 0.2.10", + "getrandom 0.2.12", "hmac", "http-types", "log", @@ -619,7 +635,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ade8f2653e408de88b9eafec9f48c3c26b94026375e88adbd34523a7dd9795a1" dependencies = [ "RustyXML", - "async-lock 3.2.0", + "async-lock 3.3.0", "async-trait", "azure_core", "bytes", @@ -670,9 +686,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -697,9 +713,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64-simd" @@ -726,6 +742,15 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -734,9 +759,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bitvec" @@ -770,36 +795,37 @@ dependencies = [ [[package]] name = "blocking" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ - "async-channel", - "async-lock 2.7.0", + "async-channel 2.2.0", + "async-lock 3.3.0", "async-task", - "atomic-waker", - "fastrand 1.9.0", - "futures-lite", - "log", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.2.0", + "piper", + "tracing", ] [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "c764d619ca78fccbf3069b37bd7af92577f044bb15236036662d79b6559f25b7" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bytes-utils" @@ -813,12 +839,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730" [[package]] name = "cfg-if" @@ -831,7 +854,7 @@ name = "circuits" version = "0.1.0" dependencies = [ "anyhow", - "futures-lite", + "futures-lite 1.13.0", "hex", "itertools 0.10.5", "jemallocator", @@ -860,21 +883,29 @@ dependencies = [ "azure_core", "azure_storage", "azure_storage_blobs", - "base64 0.21.5", + "base64 0.21.7", + "bincode", "circuits", "clap", + "colored", "dotenv", "futures", - "futures-lite", + "futures-lite 1.13.0", + "glob", "hex", "jemallocator", "jsonm", "num", + "num-derive", + "num-traits", + "num_enum", + "once_cell", "plonky2", "redis", "redis-work-queue", "serde", "serde-binary", + "serde_bytes", "serde_json", "ssz_rs", "tokio", @@ -904,6 +935,16 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + [[package]] name = "combine" version = "4.6.6" @@ -920,9 +961,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ "crossbeam-utils", ] @@ -935,23 +976,21 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const-random" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" +checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" dependencies = [ "const-random-macro", - "proc-macro-hack", ] [[package]] name = "const-random-macro" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.12", "once_cell", - "proc-macro-hack", "tiny-keccak", ] @@ -973,73 +1012,55 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc32c" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" +checksum = "89254598aa9b9fa608de44b3ae54c810f0f06d755e24c50177f1f8f31ff50ce2" dependencies = [ "rustc_version", ] [[package]] name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", - "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -1091,9 +1112,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -1145,9 +1166,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "elliptic-curve" @@ -1202,9 +1223,20 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "4.0.2" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "218a870470cce1469024e9fb66b901aa983929d81304a1cdb299f28118e550d5" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ad6fd685ce13acd6d9541a30f6db6567a7a24c9ffd4ba2955d29e3f22c8b27" dependencies = [ "concurrent-queue", "parking", @@ -1217,7 +1249,17 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" dependencies = [ - "event-listener 4.0.2", + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +dependencies = [ + "event-listener 5.1.0", "pin-project-lite", ] @@ -1278,9 +1320,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1354,6 +1396,19 @@ dependencies = [ "waker-fn", ] +[[package]] +name = "futures-lite" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +dependencies = [ + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.30" @@ -1362,7 +1417,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] @@ -1418,9 +1473,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "js-sys", @@ -1431,9 +1486,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "glob" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "gloo-timers" @@ -1460,17 +1521,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http", - "indexmap 2.0.0", + "http 0.2.11", + "indexmap 2.2.3", "slab", "tokio", "tokio-util", @@ -1485,9 +1546,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", "rayon", @@ -1505,9 +1566,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" [[package]] name = "hex" @@ -1535,6 +1596,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.6" @@ -1542,7 +1614,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.11", "pin-project-lite", ] @@ -1553,9 +1625,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" dependencies = [ "anyhow", - "async-channel", + "async-channel 1.9.0", "base64 0.13.1", - "futures-lite", + "futures-lite 1.13.0", "infer", "pin-project-lite", "rand 0.7.3", @@ -1589,7 +1661,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "httparse", "httpdate", @@ -1609,7 +1681,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http", + "http 0.2.11", "hyper", "log", "rustls", @@ -1633,9 +1705,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1653,12 +1725,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.3", ] [[package]] @@ -1682,7 +1754,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.6", "libc", "windows-sys 0.48.0", ] @@ -1713,9 +1785,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jemalloc-sys" @@ -1739,9 +1811,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] @@ -1784,9 +1856,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "linux-raw-sys" @@ -1796,9 +1868,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1812,9 +1884,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" dependencies = [ "value-bag", ] @@ -1831,18 +1903,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memoffset" -version = "0.9.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -1852,9 +1915,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] @@ -1904,9 +1967,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -1917,30 +1980,46 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "num-traits", "rand 0.8.5", "serde", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", @@ -1962,9 +2041,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -1975,24 +2054,45 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.6", "libc", ] +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.50", +] + [[package]] name = "object" -version = "0.31.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" @@ -2002,11 +2102,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.62" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cfg-if", "foreign-types", "libc", @@ -2023,7 +2123,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] @@ -2034,9 +2134,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.98" +version = "0.9.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7" +checksum = "ae94056a791d0e1217d18b6cbdccb02c61e3054fc69893607f4067e3bb0b1fd1" dependencies = [ "cc", "libc", @@ -2046,9 +2146,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "outref" @@ -2069,9 +2169,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" @@ -2093,7 +2193,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -2104,28 +2204,28 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] @@ -2140,6 +2240,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + [[package]] name = "pkcs8" version = "0.9.0" @@ -2152,9 +2263,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plonky2" @@ -2163,8 +2274,8 @@ source = "git+https://github.com/metacraft-labs/plonky2#12402078a460c41cd11013d0 dependencies = [ "ahash", "anyhow", - "getrandom 0.2.10", - "hashbrown 0.14.0", + "getrandom 0.2.12", + "hashbrown 0.14.3", "itertools 0.11.0", "keccak-hash", "log", @@ -2238,6 +2349,20 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "polling" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.31", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -2261,16 +2386,19 @@ dependencies = [ ] [[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" +name = "proc-macro-crate" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2287,9 +2415,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2359,7 +2487,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.12", ] [[package]] @@ -2373,9 +2501,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", @@ -2383,21 +2511,19 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] name = "redis" -version = "0.22.3" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa8455fa3621f6b41c514946de66ea0531f57ca017b2e6c7cc368035ea5b46df" +checksum = "4f49cdc0bb3f412bf8e7d1bd90fe1d9eb10bc5c399ba90973c14662a27b3f8ba" dependencies = [ "arc-swap", "async-std", @@ -2410,17 +2536,21 @@ dependencies = [ "percent-encoding", "pin-project-lite", "ryu", + "serde", + "serde_json", "sha1_smol", + "socket2 0.4.10", "tokio", + "tokio-retry", "tokio-util", "url", ] [[package]] name = "redis-work-queue" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444f5017107a0595ff76892e2c0290a9349576520039705589d5b413a3bc506" +checksum = "cf912baed64806b519b0b1e2e6879f02727319f6917f150d0440abc6a2ca1042" dependencies = [ "futures", "redis", @@ -2440,9 +2570,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.4" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2452,9 +2582,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.7" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2469,23 +2599,23 @@ checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.23" +version = "0.11.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "hyper", "hyper-tls", @@ -2497,9 +2627,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -2526,16 +2658,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "getrandom 0.2.10", + "cfg-if", + "getrandom 0.2.12", "libc", "spin", "untrusted", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2555,9 +2688,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.23" +version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" dependencies = [ "bitflags 1.3.2", "errno", @@ -2569,14 +2702,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", - "linux-raw-sys 0.4.12", + "linux-raw-sys 0.4.13", "windows-sys 0.52.0", ] @@ -2610,7 +2743,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] [[package]] @@ -2625,17 +2758,17 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2693,15 +2826,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -2717,24 +2850,33 @@ dependencies = [ "thiserror", ] +[[package]] +name = "serde_bytes" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.2.3", "itoa", "ryu", "serde", @@ -2765,11 +2907,11 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.25" +version = "0.9.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.2.3", "itoa", "ryu", "serde", @@ -2838,24 +2980,24 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -2943,15 +3085,21 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "system-configuration" version = "0.5.1" @@ -2981,61 +3129,61 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.9.0" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" +checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" dependencies = [ "cfg-if", "fastrand 2.0.1", - "redox_syscall", - "rustix 0.38.28", + "rustix 0.38.31", "windows-sys 0.52.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] name = "time" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ "deranged", "itoa", "js-sys", + "num-conv", "powerfmt", "serde", "time-core", @@ -3050,10 +3198,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] @@ -3083,9 +3232,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -3108,7 +3257,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] @@ -3121,6 +3270,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand 0.8.5", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.24.1" @@ -3133,9 +3293,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -3145,6 +3305,23 @@ dependencies = [ "tracing", ] +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.3", + "toml_datetime", + "winnow", +] + [[package]] name = "tower-service" version = "0.3.2" @@ -3153,11 +3330,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3171,14 +3347,14 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] @@ -3191,9 +3367,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uint" @@ -3209,21 +3385,21 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -3240,9 +3416,9 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" +checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" [[package]] name = "untrusted" @@ -3252,9 +3428,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -3270,11 +3446,11 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "uuid" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.12", "rand 0.8.5", "serde", "uuid-macro-internal", @@ -3282,20 +3458,20 @@ dependencies = [ [[package]] name = "uuid-macro-internal" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e1ba1f333bd65ce3c9f27de592fcbc256dafe3af2717f56d7c87761fbaccf4" +checksum = "7abb14ae1a50dad63eaa768a458ef43d298cd1bd44951677bd10b732a9ba2a2d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", ] [[package]] name = "value-bag" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" +checksum = "126e423afe2dd9ac52142e7e9d5ce4135d7e13776c529d27fd6bc49f19e3280b" [[package]] name = "vcpkg" @@ -3317,9 +3493,9 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "waker-fn" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "want" @@ -3344,9 +3520,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3354,24 +3530,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -3381,9 +3557,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3391,28 +3567,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.50", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "wasm-streams" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" dependencies = [ "futures-util", "js-sys", @@ -3423,9 +3599,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" dependencies = [ "js-sys", "wasm-bindgen", @@ -3449,9 +3625,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -3468,7 +3644,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -3482,17 +3658,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -3512,9 +3688,9 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" @@ -3524,9 +3700,9 @@ checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" @@ -3536,9 +3712,9 @@ checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" @@ -3548,9 +3724,9 @@ checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" @@ -3560,9 +3736,9 @@ checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" @@ -3572,9 +3748,9 @@ checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" @@ -3584,9 +3760,9 @@ checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" @@ -3594,6 +3770,15 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" @@ -3619,6 +3804,26 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + [[package]] name = "zeroize" version = "1.7.0" diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.toml b/beacon-light-client/plonky2/circuits_executables/Cargo.toml index bcdeaa2c8..003fe5876 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.toml +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" circuits = { path = "../circuits" } num = { version = "0.4.0", features = ["serde"] } plonky2 = { git = "https://github.com/metacraft-labs/plonky2" } -redis = "0.22" +redis = { version = "0.23", features = ["json", "aio", "tokio-comp"] } serde = "1.0.164" serde_json = "1.0.96" anyhow = "1.0.71" @@ -31,6 +31,14 @@ azure_core = "0.18.0" azure_storage = "0.18.0" futures = "0.3.30" dotenv = "0.15.0" +serde_bytes = "0.11.12" +bincode = "1.3.3" +once_cell = "1.19.0" +num_enum = "0.7.2" +num-derive = "0.4.1" +num-traits = "0.2.17" +colored = "2.1.0" +glob = "0.3.1" [[bin]] name = "balance_verification" @@ -44,9 +52,9 @@ path = "bin/commitment_mapper.rs" name = "balance_verification_circuit_data_generation" path = "bin/balance_verification_circuit_data_generation.rs" -# [[bin]] -# name = "final_layer" -# path = "bin/final_layer.rs" +[[bin]] +name = "final_layer" +path = "bin/final_layer.rs" [[bin]] name = "commitment_mapper_circuit_data_generation" diff --git a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs index 5b10b145f..a18bda21a 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/balance_verification.rs @@ -1,3 +1,19 @@ +use circuits_executables::{ + crud::{ + common::{ + delete_balance_verification_proof_dependencies, fetch_proofs_balances, + fetch_validator_balance_input, load_circuit_data, read_from_file, save_balance_proof, + BalanceProof, + }, + proof_storage::proof_storage::{create_proof_storage, ProofStorage}, + }, + provers::{handle_balance_inner_level_proof, SetPWValues}, + utils::parse_config_file, + validator::VALIDATOR_REGISTRY_LIMIT, + validator_balances_input::ValidatorBalancesInput, + validator_commitment_constants::VALIDATOR_COMMITMENT_CONSTANTS, +}; +use colored::Colorize; use std::{ println, thread, time::{Duration, Instant}, @@ -9,18 +25,6 @@ use circuits::{ targets_serialization::ReadTargets, validator_balance_circuit::ValidatorBalanceVerificationTargets, }; -use circuits_executables::{ - crud::{ - common::{ - fetch_proofs, fetch_validator_balance_input, load_circuit_data, read_from_file, - save_balance_proof, BalanceProof, - }, - proof_storage::proof_storage::{create_proof_storage, ProofStorage}, - }, - provers::{handle_balance_inner_level_proof, SetPWValues}, - validator_balances_input::ValidatorBalancesInput, - validator_commitment_constants::get_validator_commitment_constants, -}; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::PartialWitness, @@ -52,6 +56,7 @@ enum Targets { #[tokio::main] async fn main() -> Result<()> { + let config = parse_config_file("../common_config.json".to_owned())?; let matches = App::new("") .arg( Arg::with_name("redis_connection") @@ -60,7 +65,7 @@ async fn main() -> Result<()> { .value_name("Redis Connection") .help("Sets a custom Redis connection") .takes_value(true) - .default_value("redis://127.0.0.1:6379/"), + .default_value(&format!("redis://{}:{}/", config["redis-host"], config["redis-port"])), ) .arg( Arg::with_name("circuit_level") @@ -75,7 +80,7 @@ async fn main() -> Result<()> { Arg::with_name("stop_after") .long("stop-after") .value_name("Stop after") - .help("Sets how much seconds to wait until the program stops if no new tasks are found in the queue") + .help("Sets how many seconds to wait until the program stops if no new tasks are found in the queue") .takes_value(true) .default_value("20") ) @@ -143,19 +148,25 @@ async fn main() -> Result<()> { .help("Sets the aws region") .takes_value(true) ) + .arg( Arg::with_name("aws_bucket_name") .long("aws-bucket-name") - .value_name("aws_bucket_name") + .value_name("aws_bucket_name") .help("Sets the aws bucket name") .takes_value(true) ) + .arg( + Arg::with_name("preserve_intermediary_proofs") + .long("preserve-intermediary-proofs") + .action(clap::ArgAction::SetTrue) + ) .get_matches(); let level = matches .value_of("circuit_level") .unwrap() - .parse::() + .parse::() .unwrap(); let run_for_input = matches.value_of("run_for_minutes").unwrap(); @@ -181,22 +192,18 @@ async fn main() -> Result<()> { .unwrap(); let mock = matches.value_of("mock").unwrap().parse::().unwrap(); + let preserve_intermediary_proofs = matches.get_flag("preserve_intermediary_proofs"); let redis_connection = matches.value_of("redis_connection").unwrap(); - let start = Instant::now(); + println!("{}", "Connecting to Redis...".yellow()); let client = redis::Client::open(redis_connection)?; let mut con = client.get_async_connection().await?; let mut proof_storage = create_proof_storage(&matches).await; - let elapsed = start.elapsed(); - - println!("Redis connection took: {:?}", elapsed); - - let start = Instant::now(); - + println!("{}", "Loading circuit data...".yellow()); let circuit_data = load_circuit_data(&level.to_string())?; let (inner_circuit_data, targets) = if level == 0 { @@ -208,20 +215,16 @@ async fn main() -> Result<()> { ) }; - let elapsed = start.elapsed(); - - println!("Circuit generation took: {:?}", elapsed); - + println!( + "{}", + format!("Starting worker for level {}...", level).yellow() + ); let queue = WorkQueue::new(KeyPrefix::new(format!( "{}:{}", - get_validator_commitment_constants().balance_verification_queue, - level + VALIDATOR_COMMITMENT_CONSTANTS.balance_verification_queue, level ))); - println!("level {}", level); - let start: Instant = Instant::now(); - process_queue( &mut con, proof_storage.as_mut(), @@ -235,6 +238,7 @@ async fn main() -> Result<()> { stop_after, lease_for, mock, + preserve_intermediary_proofs, ) .await } @@ -246,15 +250,16 @@ async fn process_queue( circuit_data: &CircuitData, inner_circuit_data: Option<&CircuitData>, targets: &Targets, - level: usize, + level: u64, start: Instant, time_to_run: Option, stop_after: u64, lease_for: u64, mock: bool, + preserve_intermediary_proofs: bool, ) -> Result<()> { while time_to_run.is_none() || start.elapsed() < time_to_run.unwrap() { - let job = match queue + let queue_item = match queue .lease( con, Some(Duration::from_secs(stop_after)), @@ -262,58 +267,70 @@ async fn process_queue( ) .await? { - Some(job) => job, + Some(item) => item, None => { - println!("No jobs left in queue"); + println!("{}", "No tasks left in queue".bright_green().bold()); return Ok(()); } }; - if job.data.is_empty() { - println!("Skipping empty data job"); - queue.complete(con, &job).await?; + if queue_item.data.is_empty() { + println!("{}", "Skipping empty data task".yellow()); + queue.complete(con, &queue_item).await?; continue; } - println!("Processing job data: {:?}", job.data); - match targets { Targets::FirstLevel(targets) => { - match process_first_level_job( + match process_first_level_task( con, proof_storage, queue, - job, + queue_item, circuit_data, targets.as_ref().unwrap(), mock, ) .await { - Err(_err) => { - println!("Error processing first level job {:?}", _err); + Err(err) => { + println!( + "{}", + format!("Error processing first level task {:?}", err) + .red() + .bold() + ); continue; } Ok(_) => {} }; } Targets::InnerLevel(inner_circuit_targets) => { - match process_inner_level_job( + match process_inner_level_task( con, proof_storage, queue, - job, + queue_item, circuit_data, inner_circuit_data.unwrap(), inner_circuit_targets, level, mock, + preserve_intermediary_proofs, ) .await { - Err(_err) => continue, + Err(err) => { + println!( + "{}", + format!("Error processing inner level task {:?}", err) + .red() + .bold() + ); + continue; + } Ok(_) => {} }; } @@ -323,18 +340,30 @@ async fn process_queue( Ok(()) } -async fn process_first_level_job( +async fn process_first_level_task( con: &mut Connection, proof_storage: &mut dyn ProofStorage, queue: &WorkQueue, - job: Item, + queue_item: Item, circuit_data: &CircuitData, targets: &ValidatorBalanceVerificationTargets, mock: bool, ) -> Result<()> { - let balance_input_index = u64::from_be_bytes(job.data[0..8].try_into().unwrap()) as usize; - - let start = Instant::now(); + let balance_input_index = u64::from_be_bytes(queue_item.data[0..8].try_into().unwrap()); + + if balance_input_index as usize != VALIDATOR_REGISTRY_LIMIT { + println!( + "{}", + format!( + "Processing task for index {}...", + balance_input_index.to_string().magenta() + ) + .blue() + .bold() + ); + } else { + println!("{}", "Processing task for zero proof...".blue().bold()); + } let validator_balance_input_mock: ValidatorBalancesInput = serde_json::from_str(r#"{"validators":[{"pubkey":"28155455410776443498482448245529435809359956175169908048702124937172512699631467778238641261986684575799579397993811","withdrawalCredentials":"382737961640003689533910812141398037732875097701826973858731813319968970850","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"26979846440152886011310362764920484765984271438301878724818610563677684689774592103308019846399354324216936243366261","withdrawalCredentials":"334836033201229227961245502702526419573885144848257583169567123681803257233","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"27801740282514395063227256283476233197453489056913878482578327955357746398789954319627803579173623839636086204205312","withdrawalCredentials":"452312848583266388373324161311539720301441557426889082580326305166421027472","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"21527346288222609476208495591203643471148391088705253248992136372752069313676131849343273583439774745199246011648576","withdrawalCredentials":"367671889103706031716807112321536209552784367704779136855912917662270427673","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"22320248583573513380499645876659337063375986179485491270050641054377962534820064449058321021365382800967547431872178","withdrawalCredentials":"452312848583266388373324160271404058109911226905144332655132243525891128419","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"21619640184761671406845477913809792923864724567879069222980681511978293118339791878883269161616622145838709233406408","withdrawalCredentials":"13798419507846026553622359324325711518785000279005931307706727393517509549","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"28315493868134351375148990743790149058304089158549908131347185017299284710487426690336332785304639119792063400013028","withdrawalCredentials":"3043153795794382687251851273790182871169017274083796406622225121057728559","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"},{"pubkey":"25138136466776665720292214356534543105788238163001562454030604153595944200262426495626688131184611875744151551092852","withdrawalCredentials":"452312848583266388373324160200794100136802167846724101891059603667205939461","effectiveBalance":"32000000000","slashed":0,"activationEligibilityEpoch":"0","activationEpoch":"0","exitEpoch":"18446744073709551615","withdrawableEpoch":"18446744073709551615"}],"balances":[[0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,0,1,1,0,0,0,1,1,1,1,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,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,1,0,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,0,1,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,0,0,0,0,1,1,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,0,1,1,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,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,0,0,0,0],[0,0,0,0,1,0,1,0,1,0,0,0,1,1,1,1,1,0,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,0,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,1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,1,0,0,1,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,0,0,0,0,0,0,1,0,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,1,0,0,0,0,1,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,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,1,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"withdrawalCredentials":"452312848583266388373324160315533450859862645952655026790676503269398455083","currentEpoch":"217293","validatorIsZero":[0,0,0,0,0,0,0,0]}"#).unwrap(); let validator_balance_input = if mock { @@ -343,12 +372,6 @@ async fn process_first_level_job( fetch_validator_balance_input(con, balance_input_index).await? }; - let elapsed = start.elapsed(); - - println!("Fetching validator balance input took: {:?}", elapsed); - - let start = Instant::now(); - let mut pw = PartialWitness::new(); targets.set_pw_values(&mut pw, &validator_balance_input); @@ -363,49 +386,62 @@ async fn process_first_level_job( match save_balance_proof(con, proof_storage, proof, 0, balance_input_index).await { Err(err) => { - print!("Error: {}", err); + println!( + "{}", + format!("Error while saving balance proof: {}", err) + .red() + .bold() + ); thread::sleep(Duration::from_secs(5)); return Err(err); } Ok(_) => { - queue.complete(con, &job).await?; + queue.complete(con, &queue_item).await?; } } - let elapsed = start.elapsed(); - - println!("Proof generation took: {:?}", elapsed); - Ok(()) } -async fn process_inner_level_job( +async fn process_inner_level_task( con: &mut Connection, proof_storage: &mut dyn ProofStorage, queue: &WorkQueue, - job: Item, + queue_item: Item, circuit_data: &CircuitData, inner_circuit_data: &CircuitData, inner_circuit_targets: &Option, - level: usize, + level: u64, mock: bool, + preserve_intermediary_proofs: bool, ) -> Result<()> { - let proof_indexes = job - .data - .chunks(8) - .map(|chunk| u64::from_be_bytes(chunk.try_into().unwrap()) as usize) - .collect::>(); - - println!("Got indexes: {:?}", proof_indexes); + let index = u64::from_be_bytes(queue_item.data[0..8].try_into().unwrap()); + + if index as usize != VALIDATOR_REGISTRY_LIMIT { + println!( + "{}", + format!( + "Processing task for index {}...", + index.to_string().magenta() + ) + .blue() + .bold() + ); + } else { + println!("{}", "Processing task for zero proof...".blue().bold()); + } - match fetch_proofs::(con, proof_storage, &proof_indexes).await { + match fetch_proofs_balances::(con, proof_storage, level, index).await { Err(err) => { - print!("Error: {}", err); + println!( + "{}", + format!("Error while fetching balance proofs: {}", err) + .red() + .bold() + ); return Err(err); } Ok(proofs) => { - let start = Instant::now(); - let proof = if mock { let inner_proof_mock: ProofWithPublicInputs< GoldilocksField, @@ -423,21 +459,31 @@ async fn process_inner_level_job( &circuit_data, )? }; - - match save_balance_proof(con, proof_storage, proof, level, proof_indexes[1]).await { + match save_balance_proof(con, proof_storage, proof, level, index).await { Err(err) => { - print!("Error: {}", err); + println!( + "{}", + format!("Error while saving balance proof: {}", err) + .red() + .bold() + ); thread::sleep(Duration::from_secs(5)); return Err(err); } Ok(_) => { - queue.complete(con, &job).await?; + queue.complete(con, &queue_item).await?; + if !preserve_intermediary_proofs { + // delete child nodes + delete_balance_verification_proof_dependencies( + con, + proof_storage, + level, + index, + ) + .await?; + } } } - - let elapsed = start.elapsed(); - println!("Proof generation took: {:?}", elapsed); - Ok(()) } } @@ -452,7 +498,7 @@ fn get_first_level_targets() -> Result { ))) } -fn get_inner_level_targets(level: usize) -> Result { +fn get_inner_level_targets(level: u64) -> Result { let target_bytes = read_from_file(&format!("{}.plonky2_targets", level))?; let mut target_buffer = Buffer::new(&target_bytes); diff --git a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs index a03cf70aa..0b7c2a56d 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/commitment_mapper.rs @@ -4,21 +4,25 @@ use circuits::{ targets_serialization::ReadTargets, validator_commitment_mapper::ValidatorCommitmentTargets, }; use circuits_executables::{ + commitment_mapper_task::{deserialize_task, CommitmentMapperTask}, crud::{ common::{ - fetch_proofs, fetch_validator, load_circuit_data, read_from_file, save_validator_proof, - ValidatorProof, + fetch_proofs, fetch_validator, fetch_zero_proof, get_depth_for_gindex, + load_circuit_data, read_from_file, save_validator_proof, save_zero_validator_proof, + ProofProvider, ValidatorProof, }, proof_storage::proof_storage::create_proof_storage, }, provers::{handle_commitment_mapper_inner_level_proof, SetPWValues}, + utils::{gindex_from_validator_index, parse_config_file}, validator::VALIDATOR_REGISTRY_LIMIT, - validator_commitment_constants::get_validator_commitment_constants, + validator_commitment_constants::VALIDATOR_COMMITMENT_CONSTANTS, }; use clap::{App, Arg}; +use colored::Colorize; use plonky2::{ field::goldilocks_field::GoldilocksField, - iop::witness::PartialWitness, + iop::witness::{PartialWitness, WitnessWrite}, plonk::{ circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs, }, @@ -26,7 +30,7 @@ use plonky2::{ }; use redis_work_queue::{KeyPrefix, WorkQueue}; -use std::{format, print, println, thread, time::Duration}; +use std::{format, println, thread, time::Duration}; use jemallocator::Jemalloc; @@ -37,6 +41,7 @@ static GLOBAL: Jemalloc = Jemalloc; #[tokio::main] async fn main() -> Result<()> { + let config = parse_config_file("../common_config.json".to_owned())?; let matches = App::new("") .arg( Arg::with_name("redis_connection") @@ -45,7 +50,7 @@ async fn main() -> Result<()> { .value_name("Redis Connection") .help("Sets a custom Redis connection") .takes_value(true) - .default_value("redis://127.0.0.1:6379/"), + .default_value(&format!("redis://{}:{}/", config["redis-host"], config["redis-port"])), ) .arg( Arg::with_name("stop_after") @@ -131,7 +136,9 @@ async fn main() -> Result<()> { println!("Connected to redis"); let queue = WorkQueue::new(KeyPrefix::new( - get_validator_commitment_constants().validator_proofs_queue, + VALIDATOR_COMMITMENT_CONSTANTS + .validator_proofs_queue + .to_owned(), )); let first_level_circuit_data = load_circuit_data("commitment_mapper_0")?; @@ -168,145 +175,238 @@ async fn main() -> Result<()> { loop { if !mock { - println!("Waiting for job..."); + println!("{}", "Waiting for task...".yellow()); } - let job = match queue + let Some(queue_item) = queue .lease( &mut con, Some(Duration::from_secs(stop_after)), Duration::from_secs(lease_for), ) .await? - { - Some(job) => job, - None => continue, + else { + continue; }; - if job.data.len() == 8 { - let validator_index = u64::from_be_bytes(job.data[0..8].try_into().unwrap()) as usize; - - if !mock { - println!("Validator index {}", validator_index); - } else if validator_index % 10000 == 0 { - println!("Validator index {}", validator_index); - } + let Some(task) = deserialize_task(&queue_item.data) else { + println!("{}", "Invalid task data".red().bold()); + println!("{}", format!("Got bytes: {:?}", queue_item.data).red()); + queue.complete(&mut con, &queue_item).await?; + continue; + }; - match fetch_validator(&mut con, validator_index).await { - Err(err) => { - print!("Error: {}", err); - thread::sleep(Duration::from_secs(10)); - continue; - } - Ok(validator) => { - let mut pw = PartialWitness::new(); - - validator_commitment - .validator - .set_pw_values(&mut pw, &validator); - - let proof = if mock { - serde_binary::from_slice(proof_mock_binary, binary_stream::Endian::Big) - .unwrap() - } else { - first_level_circuit_data.prove(pw)? - }; - - match save_validator_proof( - &mut con, - proof_storage.as_mut(), - proof, - 0, - validator_index, - ) - .await - { - Err(err) => { - print!("Error: {}", err); - thread::sleep(Duration::from_secs(10)); - continue; - } - Ok(_) => { - queue.complete(&mut con, &job).await?; + task.log(); + + match task { + CommitmentMapperTask::UpdateValidatorProof(validator_index, epoch) => { + match fetch_validator(&mut con, validator_index, epoch).await { + Ok(validator) => { + let mut pw = PartialWitness::new(); + + validator_commitment + .validator + .set_pw_values(&mut pw, &validator); + + pw.set_bool_target( + validator_commitment.validator_is_zero, + validator_index == VALIDATOR_REGISTRY_LIMIT as u64, + ); + + let proof = if mock { + serde_binary::from_slice(proof_mock_binary, binary_stream::Endian::Big) + .unwrap() + } else { + first_level_circuit_data.prove(pw)? + }; + + if validator_index as usize != VALIDATOR_REGISTRY_LIMIT { + match save_validator_proof( + &mut con, + proof_storage.as_mut(), + proof, + gindex_from_validator_index(validator_index), + epoch, + ) + .await + { + Ok(_) => { + queue.complete(&mut con, &queue_item).await?; + } + Err(err) => { + println!( + "{}", + format!("Error while proving zero validator: {}", err) + .red() + .bold() + ); + thread::sleep(Duration::from_secs(10)); + continue; + } + } + } else { + match save_zero_validator_proof( + &mut con, + proof_storage.as_mut(), + proof, + 40, + ) + .await + { + Ok(_) => { + queue.complete(&mut con, &queue_item).await?; + } + Err(err) => { + println!( + "{}", + format!("Error while proving validator: {}", err) + .red() + .bold() + ); + thread::sleep(Duration::from_secs(10)); + continue; + } + } } } - } - } - } else if job.data.len() == 24 { - let proof_indexes = job - .data - .chunks(8) - .map(|chunk| u64::from_be_bytes(chunk.try_into().unwrap()) as usize) - .collect::>(); - - if !mock { - println!("Got indexes: {:?}", proof_indexes); - } else if proof_indexes[1] % 2048 == 0 { - println!("Got indexes: {:?}", proof_indexes); + Err(err) => { + println!( + "{}", + format!("Error while fetching validator: {}", err) + .red() + .bold() + ); + thread::sleep(Duration::from_secs(10)); + continue; + } + }; } - - match fetch_proofs::(&mut con, proof_storage.as_mut(), &proof_indexes) + CommitmentMapperTask::UpdateProofNode(gindex, epoch) => { + let level = 39 - get_depth_for_gindex(gindex) as usize; + + match fetch_proofs::( + &mut con, + proof_storage.as_mut(), + gindex, + epoch, + ) .await - { - Err(err) => { - print!("Error: {}", err); - continue; - } - Ok(proofs) => { - let inner_circuit_data = if proof_indexes[0] > 0 { - &inner_circuits[proof_indexes[0] - 1].1 - } else { - &first_level_circuit_data - }; - - let proof = if mock { - let inner_proof_mock: ProofWithPublicInputs< - GoldilocksField, - PoseidonGoldilocksConfig, - 2, - > = serde_binary::from_slice( - inner_proof_mock_binary, - binary_stream::Endian::Big, + { + Ok(proofs) => { + let inner_circuit_data = if level > 0 { + &inner_circuits[level - 1].1 + } else { + &first_level_circuit_data + }; + + let proof = if mock { + let inner_proof_mock: ProofWithPublicInputs< + GoldilocksField, + PoseidonGoldilocksConfig, + 2, + > = serde_binary::from_slice( + inner_proof_mock_binary, + binary_stream::Endian::Big, + ) + .unwrap(); + inner_proof_mock + } else { + handle_commitment_mapper_inner_level_proof( + proofs.0, + proofs.1, + inner_circuit_data, + &inner_circuits[level].0, + &inner_circuits[level].1, + )? + }; + + if let Err(err) = save_validator_proof( + &mut con, + proof_storage.as_mut(), + proof, + gindex, + epoch, ) - .unwrap(); - inner_proof_mock - } else { - handle_commitment_mapper_inner_level_proof( - proofs.0, - proofs.1, - inner_circuit_data, - &inner_circuits[proof_indexes[0]].0, - &inner_circuits[proof_indexes[0]].1, - proof_indexes[2] == VALIDATOR_REGISTRY_LIMIT && proof_indexes[0] == 0, - )? - }; - - match save_validator_proof( - &mut con, - proof_storage.as_mut(), - proof, - proof_indexes[0] + 1, - proof_indexes[1], - ) - .await - { - Err(err) => { - print!("Error: {}", err); - thread::sleep(Duration::from_secs(10)); + .await + { + println!( + "{}", + format!("Error while saving validator proof: {}", err) + .red() + .bold() + ); + thread::sleep(Duration::from_secs(1)); continue; + } else { + queue.complete(&mut con, &queue_item).await? } - Ok(_) => { - queue.complete(&mut con, &job).await?; + } + Err(err) => { + println!( + "{}", + format!("Error while fetching validator proof: {}", err) + .red() + .bold() + ); + thread::sleep(Duration::from_secs(1)); + continue; + } + }; + } + CommitmentMapperTask::ProveZeroForDepth(depth) => { + // the level in the inner proofs tree + let level = 39 - depth as usize; + + match fetch_zero_proof::(&mut con, depth + 1).await { + Ok(proof) => { + let inner_circuit_data = if level > 0 { + &inner_circuits[level - 1].1 + } else { + &first_level_circuit_data + }; + + let proof = handle_commitment_mapper_inner_level_proof( + proof.get_proof(proof_storage.as_mut()).await, + proof.get_proof(proof_storage.as_mut()).await, + inner_circuit_data, + &inner_circuits[level].0, + &inner_circuits[level].1, + )?; + + match save_zero_validator_proof( + &mut con, + proof_storage.as_mut(), + proof, + depth, + ) + .await + { + Ok(_) => queue.complete(&mut con, &queue_item).await?, + Err(err) => { + println!( + "{}", + format!("Error while saving zero validator proof: {}", err) + .red() + .bold() + ); + thread::sleep(Duration::from_secs(1)); + continue; + } } } - } - }; - } else { - println!("Invalid job data"); - println!("This is bug from somewhere"); - - queue.complete(&mut con, &job).await?; - } + Err(err) => { + println!( + "{}", + format!("Error while proving zero for depth {}: {}", depth, err) + .red() + .bold() + ); + thread::sleep(Duration::from_secs(1)); + continue; + } + }; + } + }; } } diff --git a/beacon-light-client/plonky2/circuits_executables/bin/final_layer.rs b/beacon-light-client/plonky2/circuits_executables/bin/final_layer.rs index 214ffa479..8bb9be004 100644 --- a/beacon-light-client/plonky2/circuits_executables/bin/final_layer.rs +++ b/beacon-light-client/plonky2/circuits_executables/bin/final_layer.rs @@ -1,22 +1,28 @@ +use colored::Colorize; use std::{println, time::Instant}; use anyhow::Result; -use base64::{engine::general_purpose, Engine}; use circuits::build_final_circuit::build_final_circuit; use circuits_executables::{ crud::{ - fetch_final_layer_input, fetch_proof, load_circuit_data, save_final_proof, BalanceProof, - ValidatorProof, + common::{ + fetch_final_layer_input, fetch_proof, fetch_proof_balances, load_circuit_data, + save_final_proof, BalanceProof, ValidatorProof, + }, + proof_storage::proof_storage::create_proof_storage, }, provers::SetPWValues, }; use clap::{App, Arg}; use futures_lite::future; +use num::BigUint; +use num_traits::ToPrimitive; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::{PartialWitness, WitnessWrite}, plonk::{config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs}, }; +use std::ops::Div; fn main() -> Result<()> { future::block_on(async_main()) @@ -33,17 +39,73 @@ async fn async_main() -> Result<()> { .takes_value(true) .default_value("redis://127.0.0.1:6379/"), ) + .arg( + Arg::with_name("proof_storage_type") + .long("proof-storage-type") + .value_name("proof_storage_type") + .help("Sets the type of proof storage") + .takes_value(true) + .required(true) + .possible_values(&["redis", "file", "azure", "aws"]), + ) + .arg( + Arg::with_name("folder_name") + .long("folder-name") + .value_name("folder_name") + .help("Sets the name of the folder proofs will be stored in") + .takes_value(true), + ) + .arg( + Arg::with_name("azure_account") + .long("azure-account-name") + .value_name("azure_account") + .help("Sets the name of the azure account") + .takes_value(true), + ) + .arg( + Arg::with_name("azure_container") + .long("azure-container-name") + .value_name("azure_container") + .help("Sets the name of the azure container") + .takes_value(true), + ) + .arg( + Arg::with_name("aws_endpoint_url") + .long("aws-endpoint-url") + .value_name("aws_endpoint_url") + .help("Sets the aws endpoint url") + .takes_value(true), + ) + .arg( + Arg::with_name("aws_region") + .long("aws-region") + .value_name("aws_region") + .help("Sets the aws region") + .takes_value(true), + ) + .arg( + Arg::with_name("aws_bucket_name") + .long("aws-bucket-name") + .value_name("aws_bucket_name") + .help("Sets the aws bucket name") + .takes_value(true), + ) .get_matches(); let redis_connection = matches.value_of("redis_connection").unwrap(); + let mut proof_storage = create_proof_storage(&matches).await; + let start = Instant::now(); let client = redis::Client::open(redis_connection)?; let mut con = client.get_async_connection().await?; let elapsed = start.elapsed(); - println!("Redis connection took: {:?}", elapsed); + println!( + "{}", + format!("Redis connection took: {:?}", elapsed).yellow() + ); let balance_data = load_circuit_data("37").unwrap(); let commitment_data = load_circuit_data("commitment_mapper_40").unwrap(); @@ -56,11 +118,12 @@ async fn async_main() -> Result<()> { circuit_targets.set_pw_values(&mut pw, &final_input_data); - let balance_proof: BalanceProof = fetch_proof(&mut con, 37, 0).await?; + let balance_proof: BalanceProof = fetch_proof_balances(&mut con, 37, 0).await?; + let balance_proof_bytes = proof_storage.get_proof(balance_proof.proof_index).await?; let balance_final_proof = ProofWithPublicInputs::::from_bytes( - balance_proof.proof_index, + balance_proof_bytes, &balance_data.common, )?; @@ -85,13 +148,17 @@ async fn async_main() -> Result<()> { balance_data.verifier_only.circuit_digest, ); - let commitment_proof: ValidatorProof = fetch_proof(&mut con, 40, 0).await?; + let epoch = BigUint::div(final_input_data.slot, 32u32).to_u64().unwrap(); + let commitment_proof: ValidatorProof = fetch_proof(&mut con, 0, epoch).await?; + let commitment_proof_bytes = proof_storage + .get_proof(commitment_proof.proof_index) + .await?; let commitment_final_proof = ProofWithPublicInputs::< GoldilocksField, PoseidonGoldilocksConfig, 2, - >::from_bytes(general_purpose::STANDARD_NO_PAD.decode(&commitment_proof.proof).unwrap(), &commitment_data.common)?; + >::from_bytes(commitment_proof_bytes, &commitment_data.common)?; pw.set_proof_with_pis_target( &circuit_targets.commitment_mapper_circuit_targets.proof, @@ -118,9 +185,17 @@ async fn async_main() -> Result<()> { save_final_proof(&mut con, &proof).await?; - println!("Proof size: {}", proof.to_bytes().len()); + println!( + "{}", + format!( + "Proof size: {}", + proof.to_bytes().len().to_string().magenta() + ) + .blue() + .bold() + ); - println!("Final proof saved!"); + println!("{}", "Final proof saved!".blue().bold()); Ok(()) } diff --git a/beacon-light-client/plonky2/circuits_executables/examples/balance_verification_example.rs b/beacon-light-client/plonky2/circuits_executables/examples/balance_verification_example.rs index 61118238a..6b5441fa4 100644 --- a/beacon-light-client/plonky2/circuits_executables/examples/balance_verification_example.rs +++ b/beacon-light-client/plonky2/circuits_executables/examples/balance_verification_example.rs @@ -11,9 +11,7 @@ use circuits_executables::{ provers::SetPWValues, }; use futures_lite::future; -use plonky2::{ - iop::witness::PartialWitness, plonk::config::PoseidonGoldilocksConfig, -}; +use plonky2::{iop::witness::PartialWitness, plonk::config::PoseidonGoldilocksConfig}; use jemallocator::Jemalloc; diff --git a/beacon-light-client/plonky2/circuits_executables/examples/read_circuit_data_example.rs b/beacon-light-client/plonky2/circuits_executables/examples/read_circuit_data_example.rs index aa69e8963..7020d3bbd 100644 --- a/beacon-light-client/plonky2/circuits_executables/examples/read_circuit_data_example.rs +++ b/beacon-light-client/plonky2/circuits_executables/examples/read_circuit_data_example.rs @@ -14,9 +14,7 @@ use futures_lite::future; use plonky2::{ field::goldilocks_field::GoldilocksField, iop::witness::PartialWitness, - plonk::{ - circuit_data::CircuitData, config::PoseidonGoldilocksConfig, - }, + plonk::{circuit_data::CircuitData, config::PoseidonGoldilocksConfig}, util::serialization::Buffer, }; diff --git a/beacon-light-client/plonky2/circuits_executables/src/commitment_mapper_task.rs b/beacon-light-client/plonky2/circuits_executables/src/commitment_mapper_task.rs new file mode 100644 index 000000000..b1cbe1340 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/commitment_mapper_task.rs @@ -0,0 +1,108 @@ +use colored::Colorize; +use std::fmt::Display; + +use num::FromPrimitive; +use num_derive::FromPrimitive; + +use crate::validator::VALIDATOR_REGISTRY_LIMIT; + +#[derive(FromPrimitive)] +#[repr(u8)] +enum CommitmentMapperTaskType { + UpdateProofNode, + ProveZeroForDepth, + UpdateValidatorProof, +} + +type Gindex = u64; +type Epoch = u64; +type ValidatorIndex = u64; +type Depth = u64; + +#[derive(Debug)] +pub enum CommitmentMapperTask { + UpdateProofNode(Gindex, Epoch), + ProveZeroForDepth(Depth), + UpdateValidatorProof(ValidatorIndex, Epoch), +} + +impl CommitmentMapperTask { + pub fn log(&self) { + match *self { + CommitmentMapperTask::UpdateProofNode(gindex, epoch) => println!( + "{}", + format!( + "Updating proof node at gindex {} for epoch {}...", + gindex.to_string().magenta(), + epoch.to_string().cyan() + ) + .blue() + .bold() + ), + CommitmentMapperTask::ProveZeroForDepth(depth) => { + println!( + "{}", + format!("Proving zero for depth {}...", depth.to_string().magenta()) + .blue() + .bold(), + ) + } + CommitmentMapperTask::UpdateValidatorProof(validator_index, epoch) => { + if validator_index != VALIDATOR_REGISTRY_LIMIT as u64 { + println!( + "{}", + format!( + "Updating validator proof at index {} for epoch {}...", + validator_index.to_string().magenta(), + epoch.to_string().cyan() + ) + .blue() + .bold() + ); + } else { + println!("{}", "Proving zero validator...".blue().bold()); + } + } + }; + } +} + +impl Display for CommitmentMapperTask { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> ::std::result::Result<(), ::std::fmt::Error> { + match *self { + CommitmentMapperTask::UpdateProofNode(gindex, epoch) => f.write_str(&format!( + "UpdateProofNode(gindex = {}, epoch = {})", + gindex, epoch + )), + CommitmentMapperTask::ProveZeroForDepth(_) => f.write_str(&format!("{:?}", *self)), + CommitmentMapperTask::UpdateValidatorProof(validator_index, epoch) => { + f.write_str(&format!( + "UpdateValidatorProof(validator_index = {}, epoch = {})", + validator_index, epoch + )) + } + } + } +} + +pub fn deserialize_task(bytes: &[u8]) -> Option { + match FromPrimitive::from_u8(u8::from_be_bytes(bytes[0..1].try_into().unwrap()))? { + CommitmentMapperTaskType::UpdateProofNode => { + let gindex = u64::from_be_bytes(bytes[1..9].try_into().unwrap()); + let epoch = u64::from_be_bytes(bytes[9..17].try_into().unwrap()); + Some(CommitmentMapperTask::UpdateProofNode(gindex, epoch)) + } + CommitmentMapperTaskType::ProveZeroForDepth => { + let depth = u64::from_be_bytes(bytes[1..9].try_into().unwrap()); + Some(CommitmentMapperTask::ProveZeroForDepth(depth)) + } + CommitmentMapperTaskType::UpdateValidatorProof => { + let validator_index = u64::from_be_bytes(bytes[1..9].try_into().unwrap()); + let epoch = u64::from_be_bytes(bytes[9..17].try_into().unwrap()); + Some(CommitmentMapperTask::UpdateValidatorProof( + validator_index, + epoch, + )) + } + } +} diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs index 67272de3c..58fec034e 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs @@ -6,9 +6,9 @@ use crate::{ VALIDATOR_REGISTRY_LIMIT, }, validator_balances_input::ValidatorBalancesInput, - validator_commitment_constants::get_validator_commitment_constants, + validator_commitment_constants::VALIDATOR_COMMITMENT_CONSTANTS, }; -use anyhow::{Ok, Result}; +use anyhow::{ensure, Result}; use async_trait::async_trait; use circuits::{ @@ -24,12 +24,12 @@ use plonky2::{ circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs, }, }; -use redis::{aio::Connection, AsyncCommands, RedisError}; +use redis::{aio::Connection, AsyncCommands, JsonAsyncCommands}; use serde::{de::DeserializeOwned, Deserialize, Deserializer, Serialize, Serializer}; use super::proof_storage::proof_storage::ProofStorage; -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "camelCase")] pub struct ValidatorProof { pub needs_change: bool, @@ -38,7 +38,7 @@ pub struct ValidatorProof { pub proof_index: String, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "camelCase")] pub struct BalanceProof { pub needs_change: bool, @@ -72,7 +72,7 @@ where .map_err(serde::de::Error::custom) } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "camelCase")] pub struct FinalCircuitInput { #[serde(with = "bool_vec_as_int_vec")] @@ -122,7 +122,9 @@ impl NeedsChange for ValidatorProof { impl KeyProvider for ValidatorProof { fn get_key() -> String { - get_validator_commitment_constants().validator_proof_key + VALIDATOR_COMMITMENT_CONSTANTS + .validator_proof_key + .to_owned() } } @@ -134,7 +136,9 @@ impl NeedsChange for BalanceProof { impl KeyProvider for BalanceProof { fn get_key() -> String { - get_validator_commitment_constants().balance_verification_proof_key + VALIDATOR_COMMITMENT_CONSTANTS + .balance_verification_proof_key + .to_owned() } } @@ -160,44 +164,43 @@ impl ProofProvider for BalanceProof { pub async fn fetch_validator_balance_input( con: &mut Connection, - index: usize, + index: u64, ) -> Result { - let json_str: String = con - .get(format!( + Ok(fetch_redis_json_object::( + con, + format!( "{}:{}", - get_validator_commitment_constants().validator_balance_input_key, + VALIDATOR_COMMITMENT_CONSTANTS + .validator_balance_input_key + .to_owned(), index - )) - .await?; - - let validator_balance_input: ValidatorBalancesInput = serde_json::from_str(&json_str)?; - - Ok(validator_balance_input) + ), + ) + .await?) } pub async fn fetch_final_layer_input(con: &mut Connection) -> Result { - let json_str: String = con - .get(get_validator_commitment_constants().final_proof_input_key) + let result: String = con + .json_get(VALIDATOR_COMMITMENT_CONSTANTS.final_proof_input_key, "$") .await?; - - let final_layer_input: FinalCircuitInput = serde_json::from_str(&json_str)?; - - Ok(final_layer_input) + let result_vec = &serde_json::from_str::>(&result)?; + ensure!(!result_vec.is_empty(), "Could not fetch json object"); + Ok(result_vec[0].clone()) } pub async fn save_balance_proof( con: &mut Connection, proof_storage: &mut dyn ProofStorage, proof: ProofWithPublicInputs, - depth: usize, - index: usize, + level: u64, + index: u64, ) -> Result<()> { let proof_index = format!( "{}:{}:{}", - "balance_verification_proof_storage", depth, index + VALIDATOR_COMMITMENT_CONSTANTS.balance_verification_proof_storage, level, index ); - let balance_proof = serde_json::to_string(&BalanceProof { + let balance_proof = BalanceProof { needs_change: false, range_total_value: proof.get_range_total_value(), balances_hash: proof.get_range_balances_root().to_vec(), @@ -205,131 +208,348 @@ pub async fn save_balance_proof( validators_commitment: proof.get_range_validator_commitment().to_vec(), current_epoch: proof.get_current_epoch(), proof_index: proof_index.clone(), - })?; + }; proof_storage .set_proof(proof_index, &proof.to_bytes()) .await?; - let _: () = con - .set( - format!( - "{}:{}:{}", - get_validator_commitment_constants().balance_verification_proof_key, - depth, - index - ), - balance_proof, - ) - .await?; + con.json_set( + format!( + "{}:{}:{}", + VALIDATOR_COMMITMENT_CONSTANTS + .balance_verification_proof_key + .to_owned(), + level, + index + ), + "$", + &balance_proof, + ) + .await?; Ok(()) } pub async fn save_final_proof( - con: &mut redis::aio::Connection, + con: &mut Connection, proof: &ProofWithPublicInputs, ) -> Result<()> { - let final_proof = serde_json::to_string(&FinalProof { + let final_proof = FinalProof { needs_change: false, state_root: proof.get_final_circuit_state_root().to_vec(), withdrawal_credentials: proof.get_final_circuit_withdrawal_credentials(), balance_sum: proof.get_final_circuit_balance_sum(), proof: proof.to_bytes(), - })?; + }; - let _: () = con - .set( - get_validator_commitment_constants().final_layer_proof_key, - final_proof, - ) + con.json_set( + VALIDATOR_COMMITMENT_CONSTANTS + .final_layer_proof_key + .to_owned(), + "$", + &final_proof, + ) + .await?; + + Ok(()) +} + +pub async fn delete_balance_verification_proof_dependencies( + con: &mut Connection, + proof_storage: &mut dyn ProofStorage, + level: u64, + index: u64, +) -> Result<()> { + let proof_prefix = format!( + "{}:{}", + VALIDATOR_COMMITMENT_CONSTANTS + .balance_verification_proof_storage + .to_owned(), + level - 1 + ); + + let redis_prefix = format!( + "{}:{}", + VALIDATOR_COMMITMENT_CONSTANTS + .balance_verification_proof_key + .to_owned(), + level - 1 + ); + + con.del(format!("{}:{}", redis_prefix, index * 2)).await?; + con.del(format!("{}:{}", redis_prefix, index * 2 + 1)) .await?; + let _ = proof_storage + .del_proof(format!("{}:{}", proof_prefix, index * 2)) + .await; + + let _ = proof_storage + .del_proof(format!("{}:{}", proof_prefix, index * 2 + 1)) + .await; + + if proof_storage + .get_keys_count(format!( + "{}:{}:*", + VALIDATOR_COMMITMENT_CONSTANTS.balance_verification_proof_storage, + level - 1 + )) + .await + == 1 + { + con.del(format!("{}:{}", redis_prefix, VALIDATOR_REGISTRY_LIMIT)) + .await?; + + let _ = proof_storage + .del_proof(format!("{}:{}", proof_prefix, VALIDATOR_REGISTRY_LIMIT)) + .await; + } + Ok(()) } +pub async fn get_latest_epoch(con: &mut Connection, key: &String, epoch: u64) -> Result { + let result: Vec = con + .zrevrangebyscore_limit( + format!( + "{}:{}", + key, + VALIDATOR_COMMITMENT_CONSTANTS.epoch_lookup_key.to_owned(), + ), + epoch, + 0, + 0, + 1, + ) + .await?; + + ensure!(!result.is_empty(), "Could not find data for epoch"); + Ok(result[0].clone()) +} + pub async fn fetch_validator( con: &mut Connection, - validator_index: usize, + validator_index: u64, + epoch: u64, ) -> Result { - let json_str: String = con - .get(format!( - "{}:{}", - get_validator_commitment_constants().validator_key, - validator_index - )) + let key = format!( + "{}:{}", + VALIDATOR_COMMITMENT_CONSTANTS.validator_key.to_owned(), + validator_index + ); + + let latest_epoch = get_latest_epoch(con, &key, epoch).await?; + Ok( + fetch_redis_json_object::(con, format!("{}:{}", key, latest_epoch)) + .await?, + ) +} + +pub async fn save_zero_validator_proof( + con: &mut Connection, + proof_storage: &mut dyn ProofStorage, + proof: ProofWithPublicInputs, + depth: u64, +) -> Result<()> { + let proof_index = format!( + "{}:zeroes:{}", + VALIDATOR_COMMITMENT_CONSTANTS.validator_proof_storage, depth + ); + + let validator_proof = ValidatorProof { + poseidon_hash: proof + .get_commitment_mapper_poseidon_hash_tree_root() + .to_vec(), + sha256_hash: proof.get_commitment_mapper_sha256_hash_tree_root().to_vec(), + needs_change: false, + proof_index: proof_index.clone(), + }; + + proof_storage + .set_proof(proof_index, &proof.to_bytes()) .await?; - let validator: ValidatorShaInput = serde_json::from_str(&json_str)?; - Ok(validator) + con.json_set( + format!( + "{}:zeroes:{}", + VALIDATOR_COMMITMENT_CONSTANTS + .validator_proof_key + .to_owned(), + depth, + ), + "$", + &validator_proof, + ) + .await?; + + Ok(()) } pub async fn save_validator_proof( con: &mut Connection, proof_storage: &mut dyn ProofStorage, proof: ProofWithPublicInputs, - depth: usize, - index: usize, + gindex: u64, + epoch: u64, ) -> Result<()> { - let proof_index = format!("{}:{}:{}", "validator_proof_storage", depth, index); - - let validator_proof = serde_json::to_string(&ValidatorProof { + let proof_index = format!( + "{}:{}:{}", + VALIDATOR_COMMITMENT_CONSTANTS.validator_proof_storage, gindex, epoch + ); + let validator_proof = ValidatorProof { poseidon_hash: proof .get_commitment_mapper_poseidon_hash_tree_root() .to_vec(), sha256_hash: proof.get_commitment_mapper_sha256_hash_tree_root().to_vec(), proof_index: proof_index.clone(), needs_change: false, - })?; + }; proof_storage .set_proof(proof_index, &proof.to_bytes()) .await?; - let _: () = con - .set( - format!( - "{}:{}:{}", - get_validator_commitment_constants().validator_proof_key, - depth, - index - ), - validator_proof, - ) - .await?; + con.json_set( + format!( + "{}:{}:{}", + VALIDATOR_COMMITMENT_CONSTANTS + .validator_proof_key + .to_owned(), + gindex, + epoch + ), + "$", + &validator_proof, + ) + .await?; Ok(()) } -pub async fn fetch_proof( +pub async fn fetch_zero_proof( con: &mut Connection, - depth: usize, - index: usize, + depth: u64, ) -> Result { let mut retries = 0; + loop { + let proof = + fetch_redis_json_object::(con, format!("{}:zeroes:{}", T::get_key(), depth)).await?; + + if retries > 5 { + return Err(anyhow::anyhow!("Not able to complete, try again")); + } + + if proof.needs_change() { + // Wait a bit and try again + thread::sleep(Duration::from_secs(10)); + retries += 1; + continue; + } + return Ok(proof); + } +} + +pub async fn fetch_redis_json_object( + con: &mut Connection, + key: String, +) -> Result { + let result: String = con.json_get(key, "$").await?; + let result_vec = &serde_json::from_str::>(&result)?; + ensure!(!result_vec.is_empty(), "Could not fetch json object"); + Ok(result_vec[0].clone()) +} + +pub async fn fetch_proof( + con: &mut Connection, + gindex: u64, + epoch: u64, +) -> Result { + let key = format!("{}:{}", T::get_key(), gindex); + let mut retries = 0; loop { if retries > 5 { return Err(anyhow::anyhow!("Not able to complete, try again")); } - let mut proof_result: Result = con - .get(format!("{}:{}:{}", T::get_key(), depth, index)) - .await; + let latest_epoch_result = get_latest_epoch(con, &key, epoch).await; + + let proof = match latest_epoch_result { + Ok(latest_epoch) => { + let proof_result = fetch_redis_json_object::( + con, + format!("{}:{}:{}", T::get_key(), gindex, latest_epoch), + ) + .await; + + match proof_result { + Ok(res) => res, + Err(_) => fetch_zero_proof::(con, get_depth_for_gindex(gindex)).await?, + } + } + Err(_) => fetch_zero_proof::(con, get_depth_for_gindex(gindex)).await?, + }; + + if proof.needs_change() { + // Wait a bit and try again + thread::sleep(Duration::from_secs(10)); + retries += 1; + + continue; + } + + return Ok(proof); + } +} + +pub async fn fetch_proofs< + T: NeedsChange + KeyProvider + ProofProvider + DeserializeOwned + Clone, +>( + con: &mut Connection, + proof_storage: &mut dyn ProofStorage, + gindex: u64, + epoch: u64, +) -> Result<(Vec, Vec)> { + let left_child_gindex = gindex * 2 + 1; + let right_child_gindex = gindex * 2 + 2; + + let proof1 = fetch_proof::(con, left_child_gindex, epoch).await?; + let proof2 = fetch_proof::(con, right_child_gindex, epoch).await?; + + Ok(( + proof1.get_proof(proof_storage).await, + proof2.get_proof(proof_storage).await, + )) +} + +// @TODO: Rename this later +pub async fn fetch_proof_balances( + con: &mut Connection, + level: u64, + index: u64, +) -> Result { + let mut retries = 0; + + loop { + if retries > 5 { + return Err(anyhow::anyhow!("Not able to complete, try again")); + } + + let mut proof_result = + fetch_redis_json_object::(con, format!("{}:{}:{}", T::get_key(), level, index)) + .await; if proof_result.is_err() { // get the zeroth proof - proof_result = con - .get(format!( - "{}:{}:{}", - T::get_key(), - depth, - VALIDATOR_REGISTRY_LIMIT - )) - .await; + proof_result = fetch_redis_json_object::( + con, + format!("{}:{}:{}", T::get_key(), level, VALIDATOR_REGISTRY_LIMIT), + ) + .await; } - let proof = serde_json::from_str::(&proof_result?)?; + let proof = proof_result?; if proof.needs_change() { // Wait a bit and try again @@ -343,13 +563,19 @@ pub async fn fetch_proof( } } -pub async fn fetch_proofs( +// @TODO: Rename this later +pub async fn fetch_proofs_balances< + T: NeedsChange + KeyProvider + ProofProvider + DeserializeOwned + Clone, +>( con: &mut Connection, proof_storage: &mut dyn ProofStorage, - indexes: &Vec, + level: u64, + index: u64, ) -> Result<(Vec, Vec)> { - let proof1 = fetch_proof::(con, indexes[0], indexes[1]).await?; - let proof2 = fetch_proof::(con, indexes[0], indexes[2]).await?; + let (left_child_index, right_child_index) = (index * 2, index * 2 + 1); + + let proof1 = fetch_proof_balances::(con, level - 1, left_child_index).await?; + let proof2 = fetch_proof_balances::(con, level - 1, right_child_index).await?; Ok(( proof1.get_proof(proof_storage).await, @@ -386,3 +612,7 @@ pub fn load_circuit_data( .unwrap(), ) } + +pub fn get_depth_for_gindex(gindex: u64) -> u64 { + (gindex + 1).ilog2() as u64 +} diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs index d01c261a2..a99bdafdf 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs @@ -58,9 +58,23 @@ impl ProofStorage for AwsStorage { .key(identifier) .body(byte_stream) .send() - .await - .unwrap(); + .await?; + + Ok(()) + } + + async fn del_proof(&mut self, identifier: String) -> Result<()> { + self.client + .delete_object() + .bucket(self.bucket_name.clone()) + .key(identifier) + .send() + .await?; Ok(()) } + + async fn get_keys_count(&mut self, _pattern: String) -> usize { + unimplemented!() + } } diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs index 8e38a8648..172cea2b8 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs @@ -49,4 +49,14 @@ impl ProofStorage for AzureStorage { Ok(()) } + + async fn del_proof(&mut self, identifier: String) -> Result<()> { + let blob_client = self.container_client.blob_client(identifier); + blob_client.delete().await?; + Ok(()) + } + + async fn get_keys_count(&mut self, _pattern: String) -> usize { + unimplemented!() + } } diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs index 7a5866ba8..2831a9919 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs @@ -1,6 +1,7 @@ use super::proof_storage::ProofStorage; use anyhow::Result; use async_trait::async_trait; +use glob::glob; use std::fs; pub struct FileStorage { @@ -34,4 +35,18 @@ impl ProofStorage for FileStorage { Ok(()) } + + async fn del_proof(&mut self, identifier: String) -> Result<()> { + Ok(fs::remove_file(format!( + "{}/{}.{}", + self.folder_name, identifier, "bin" + ))?) + } + + async fn get_keys_count(&mut self, pattern: String) -> usize { + glob(&format!("{}/{}", self.folder_name, pattern)) + .unwrap() + .filter(|path| matches!(path, Ok(_))) + .count() + } } diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/mod.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/mod.rs index 7366f8b9d..7f850b50f 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/mod.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/mod.rs @@ -1,5 +1,5 @@ -pub mod proof_storage; pub mod aws_proof_storage; -pub mod file_proof_storage; pub mod azure_proof_storage; +pub mod file_proof_storage; +pub mod proof_storage; pub mod redis_proof_storage; diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs index 11cec84b0..c840ddd92 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs @@ -15,6 +15,10 @@ pub trait ProofStorage { async fn get_proof(&mut self, identifier: String) -> Result>; async fn set_proof(&mut self, identifier: String, proof: &[u8]) -> Result<()>; + + async fn del_proof(&mut self, identifier: String) -> Result<()>; + + async fn get_keys_count(&mut self, pattern: String) -> usize; } pub enum ProofStorageType { diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/redis_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/redis_proof_storage.rs index 09b59830a..b4f2ab88b 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/redis_proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/redis_proof_storage.rs @@ -1,8 +1,7 @@ use super::proof_storage::ProofStorage; use anyhow::Result; use async_trait::async_trait; -use redis::aio::Connection; -use redis::AsyncCommands; +use redis::{aio::Connection, AsyncCommands}; pub struct RedisStorage { connection: Connection, @@ -11,9 +10,7 @@ pub struct RedisStorage { impl RedisStorage { pub async fn new(connection_string: String) -> Result { let client = redis::Client::open(connection_string)?; - let connection = client.get_async_connection().await?; - Ok(RedisStorage { connection }) } } @@ -21,14 +18,19 @@ impl RedisStorage { #[async_trait(?Send)] impl ProofStorage for RedisStorage { async fn get_proof(&mut self, identifier: String) -> Result> { - let result: Vec = self.connection.get(&identifier).await?; - - Ok(result) + Ok(self.connection.get(&identifier).await?) } async fn set_proof(&mut self, identifier: String, proof: &[u8]) -> Result<()> { - self.connection.set(&identifier, proof).await?; + Ok(self.connection.set(&identifier, proof).await?) + } + + async fn del_proof(&mut self, identifier: String) -> Result<()> { + Ok(self.connection.del(&identifier).await?) + } - Ok(()) + async fn get_keys_count(&mut self, pattern: String) -> usize { + let result: Vec = self.connection.keys(pattern).await.unwrap(); + result.len() } } diff --git a/beacon-light-client/plonky2/circuits_executables/src/lib.rs b/beacon-light-client/plonky2/circuits_executables/src/lib.rs index 26e5dc6b5..afa54874a 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/lib.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/lib.rs @@ -1,5 +1,7 @@ +pub mod commitment_mapper_task; pub mod crud; pub mod provers; +pub mod utils; pub mod validator; pub mod validator_balances_input; pub mod validator_commitment_constants; diff --git a/beacon-light-client/plonky2/circuits_executables/src/provers.rs b/beacon-light-client/plonky2/circuits_executables/src/provers.rs index 84f616870..dff92249c 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/provers.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/provers.rs @@ -35,8 +35,6 @@ pub fn handle_generic_inner_level_proof( proof1_target: &ProofWithPublicInputsTarget<2>, proof2_target: &ProofWithPublicInputsTarget<2>, verifier_circuit_target: &VerifierCircuitTarget, - is_zero_target: Option, - is_zero: Option, circuit_data: &CircuitData, ) -> Result> { let inner_proof1 = @@ -66,10 +64,6 @@ pub fn handle_generic_inner_level_proof( inner_circuit_data.verifier_only.circuit_digest, ); - if let (Some(target), Some(value)) = (is_zero_target, is_zero) { - pw.set_bool_target(target, value); - } - Ok(circuit_data.prove(pw)?) } @@ -79,7 +73,6 @@ pub fn handle_commitment_mapper_inner_level_proof( inner_circuit_data: &CircuitData, inner_circuit_targets: &CommitmentMapperInnerCircuitTargets, circuit_data: &CircuitData, - is_zero: bool, ) -> Result> { handle_generic_inner_level_proof( proof1_bytes, @@ -88,8 +81,6 @@ pub fn handle_commitment_mapper_inner_level_proof( &inner_circuit_targets.proof1, &inner_circuit_targets.proof2, &inner_circuit_targets.verifier_circuit_target, - Some(inner_circuit_targets.is_zero), - Some(is_zero), circuit_data, ) } @@ -108,8 +99,6 @@ pub fn handle_balance_inner_level_proof( &inner_circuit_targets.proof1, &inner_circuit_targets.proof2, &inner_circuit_targets.verifier_circuit_target, - None, - None, circuit_data, ) } diff --git a/beacon-light-client/plonky2/circuits_executables/src/utils.rs b/beacon-light-client/plonky2/circuits_executables/src/utils.rs new file mode 100644 index 000000000..e0f8d6154 --- /dev/null +++ b/beacon-light-client/plonky2/circuits_executables/src/utils.rs @@ -0,0 +1,13 @@ +use anyhow::Result; +use std::{collections::HashMap, fs::File, io::Read}; + +pub fn parse_config_file(filepath: String) -> Result> { + let mut content = String::new(); + let mut file = File::open(filepath)?; + file.read_to_string(&mut content)?; + Ok(serde_json::from_str(&content.as_str())?) +} + +pub fn gindex_from_validator_index(index: u64) -> u64 { + return 2u64.pow(40) - 1 + index; +} diff --git a/beacon-light-client/plonky2/circuits_executables/src/validator.rs b/beacon-light-client/plonky2/circuits_executables/src/validator.rs index b63b50f2f..d2f2165f8 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/validator.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/validator.rs @@ -125,7 +125,7 @@ pub mod bool_vec_as_int_vec_nested { pub const VALIDATOR_REGISTRY_LIMIT: usize = 1099511627776; -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "camelCase")] pub struct ValidatorShaInput { pub pubkey: String, @@ -170,14 +170,29 @@ mod tests { deserialized.withdrawal_credentials, "0100000000000000000000000d369bb49efa5100fd3b86a9f828c55da04d2d50" ); - assert_eq!(deserialized.effective_balance, "0040597307000000000000000000000000000000000000000000000000000000"); - assert_eq!(deserialized.slashed, "0000000000000000000000000000000000000000000000000000000000000000"); + assert_eq!( + deserialized.effective_balance, + "0040597307000000000000000000000000000000000000000000000000000000" + ); + assert_eq!( + deserialized.slashed, + "0000000000000000000000000000000000000000000000000000000000000000" + ); assert_eq!( deserialized.activation_eligibility_epoch, "0000000000000000000000000000000000000000000000000000000000000000" ); - assert_eq!(deserialized.activation_epoch, "0000000000000000000000000000000000000000000000000000000000000000"); - assert_eq!(deserialized.exit_epoch, "ffffffffffffffff000000000000000000000000000000000000000000000000"); - assert_eq!(deserialized.withdrawable_epoch, "ffffffffffffffff000000000000000000000000000000000000000000000000"); + assert_eq!( + deserialized.activation_epoch, + "0000000000000000000000000000000000000000000000000000000000000000" + ); + assert_eq!( + deserialized.exit_epoch, + "ffffffffffffffff000000000000000000000000000000000000000000000000" + ); + assert_eq!( + deserialized.withdrawable_epoch, + "ffffffffffffffff000000000000000000000000000000000000000000000000" + ); } } diff --git a/beacon-light-client/plonky2/circuits_executables/src/validator_balances_input.rs b/beacon-light-client/plonky2/circuits_executables/src/validator_balances_input.rs index cfbbb058d..69b5685b6 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/validator_balances_input.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/validator_balances_input.rs @@ -23,7 +23,7 @@ where string_vec.serialize(s) } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] #[serde(rename_all = "camelCase")] pub struct ValidatorPoseidonInput { #[serde(serialize_with = "biguint_to_str", deserialize_with = "parse_biguint")] @@ -43,7 +43,7 @@ pub struct ValidatorPoseidonInput { pub withdrawable_epoch: BigUint, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] #[serde(rename_all = "camelCase")] pub struct ValidatorBalancesInput { pub validators: Vec, diff --git a/beacon-light-client/plonky2/circuits_executables/src/validator_commitment_constants.rs b/beacon-light-client/plonky2/circuits_executables/src/validator_commitment_constants.rs index 3794af59f..6c01b83ee 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/validator_commitment_constants.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/validator_commitment_constants.rs @@ -1,21 +1,28 @@ +use once_cell::sync::Lazy; use serde::Deserialize; #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] -pub struct ValidatorCommitmentConstants { - pub validator_key: String, - pub validator_proof_key: String, - pub validator_proofs_queue: String, - pub validator_balance_input_key: String, - pub balance_verification_queue: String, - pub balance_verification_proof_key: String, - pub final_proof_input_key: String, - pub final_layer_proof_key: String, +pub struct ValidatorCommitmentConstants<'a> { + pub validator_key: &'a str, + pub validator_proof_key: &'a str, + pub validator_proofs_queue: &'a str, + pub validator_balance_input_key: &'a str, + pub balance_verification_queue: &'a str, + pub balance_verification_proof_key: &'a str, + pub final_proof_input_key: &'a str, + pub final_layer_proof_key: &'a str, + pub epoch_lookup_key: &'a str, + pub validator_proof_storage: &'a str, + pub balance_verification_proof_storage: &'a str, } -pub fn get_validator_commitment_constants() -> ValidatorCommitmentConstants { +pub fn get_validator_commitment_constants() -> ValidatorCommitmentConstants<'static> { serde_json::from_str(include_str!( "../../constants/validator_commitment_constants.json" )) .unwrap() } + +pub static VALIDATOR_COMMITMENT_CONSTANTS: Lazy = + Lazy::new(|| get_validator_commitment_constants()); diff --git a/beacon-light-client/plonky2/common_config.json b/beacon-light-client/plonky2/common_config.json new file mode 100644 index 000000000..596e4ca68 --- /dev/null +++ b/beacon-light-client/plonky2/common_config.json @@ -0,0 +1,5 @@ +{ + "redis-host": "127.0.0.1", + "redis-port": "6379", + "beacon-node": "http://testing.mainnet.beacon-api.nimbus.team" +} diff --git a/beacon-light-client/plonky2/constants/validator_commitment_constants.json b/beacon-light-client/plonky2/constants/validator_commitment_constants.json index 6b63040b6..9fd7069e1 100644 --- a/beacon-light-client/plonky2/constants/validator_commitment_constants.json +++ b/beacon-light-client/plonky2/constants/validator_commitment_constants.json @@ -7,5 +7,9 @@ "balanceVerificationQueue": "balance_verification_queue", "balanceVerificationProofKey": "balance_verification_proof", "finalProofInputKey": "final_proof_input", - "finalLayerProofKey": "final_layer_proof" + "finalLayerProofKey": "final_layer_proof", + "zeroHashesForLevelKey": "zero_hashes_for_level", + "epochLookupKey": "epoch_lookup", + "validatorProofStorage": "validator_proof_storage", + "balanceVerificationProofStorage": "balance_verification_proof_storage" } diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts old mode 100755 new mode 100644 index ab4009eb5..12f148d46 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -1,21 +1,23 @@ +import yargs from 'yargs'; import { Tree } from '@chainsafe/persistent-merkle-tree'; -import { Redis as RedisLocal } from '../../../relay/implementations/redis'; -import Redis from 'ioredis'; -import { BeaconApi } from '../../../relay/implementations/beacon-api'; -import { bytesToHex } from '../../../libs/typescript/ts-utils/bls'; -import { hexToBits } from '../../../libs/typescript/ts-utils/hex-utils'; -import { bigint_to_array } from '../../solidity/test/utils/bls'; -import * as fs from 'fs'; const { KeyPrefix, WorkQueue, Item, } = require('@mevitae/redis-work-queue/dist/WorkQueue'); -import validator_commitment_constants from '../constants/validator_commitment_constants.json'; -import yargs from 'yargs'; +import chalk from 'chalk'; +import * as fs from 'fs'; +import { Redis as RedisLocal } from '../../../relay/implementations/redis'; +import { BeaconApi } from '../../../relay/implementations/beacon-api'; +import { bytesToHex } from '../../../libs/typescript/ts-utils/bls'; +import { hexToBits } from '../../../libs/typescript/ts-utils/hex-utils'; import { computeEpochAt } from '../../../libs/typescript/ts-utils/ssz-utils'; +import validator_commitment_constants from '../constants/validator_commitment_constants.json'; +import config from "../common_config.json"; +import { Validator } from '../../../relay/types/types'; + const CIRCUIT_SIZE = 8; -let TAKE; +let TAKE: number; (async () => { const { ssz } = await import('@lodestar/types'); @@ -28,23 +30,30 @@ let TAKE; alias: 'redis-host', describe: 'The Redis host', type: 'string', - default: '127.0.0.1', + default: config['redis-host'], description: 'Sets a custom redis connection', }) .option('redis-port', { alias: 'redis-port', describe: 'The Redis port', type: 'number', - default: 6379, + default: Number(config['redis-port']), description: 'Sets a custom redis connection', }) .option('beacon-node', { alias: 'beacon-node', describe: 'The beacon node url', type: 'string', - default: 'http://unstable.mainnet.beacon-api.nimbus.team', + default: config['beacon-node'], description: 'Sets a custom beacon node url', }) + .option('slot', { + alias: 'slot', + describe: 'The state slot', + type: 'number', + default: undefined, + description: 'Fetches the balances for this slot', + }) .option('take', { alias: 'take', describe: 'The number of validators to take', @@ -58,17 +67,18 @@ let TAKE; type: 'boolean', default: false, description: 'Runs the tool without doing actual calculations.', + }) + .options('offset', { + alias: 'offset', + describe: 'Index offset in the validator set', + type: 'number', + default: undefined, }).argv; const redis = new RedisLocal(options['redis-host'], options['redis-port']); - const db = new Redis( - `redis://${options['redis-host']}:${options['redis-port']}`, - ); - TAKE = options['take']; let MOCK = options['mock']; - let GRANULITY = MOCK ? 1000 : 1; const queues: any[] = []; @@ -95,19 +105,22 @@ let TAKE; const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') ? '../mock_data/beaconState.bin' : 'mock_data/beaconState.bin'; + const { beaconState } = MOCK ? { - beaconState: ssz.capella.BeaconState.deserialize( - fs.readFileSync(beaconState_bin), - ), - } - : await beaconApi.getBeaconState(6953401); - - const validators = beaconState.validators.slice(0, TAKE); - TAKE = validators.length; + beaconState: ssz.capella.BeaconState.deserialize( + fs.readFileSync(beaconState_bin), + ), + } + : await beaconApi.getBeaconState(options['slot'] !== undefined ? options['slot'] : Number(await beaconApi.getHeadSlot())); + const offset = Number(options['offset']) || 0; + const take = TAKE !== Infinity ? TAKE + offset : Infinity; + const validators = beaconState.validators.slice(offset, take); + beaconState.balances = beaconState.balances.slice(offset, take); beaconState.validators = validators; - beaconState.balances = beaconState.balances.slice(0, TAKE); + + TAKE = validators.length; const balancesView = ssz.capella.BeaconState.fields.balances.toViewDU( beaconState.balances, @@ -129,11 +142,14 @@ let TAKE; ); } - console.log('Adding tasks about zeros'); + if (balances.length % (CIRCUIT_SIZE / 4) !== 0) { + balances.push(''.padStart(256, '0').split('').map(Number)); + } + await redis.saveValidatorBalancesInput([ { index: Number(validator_commitment_constants.validatorRegistryLimit), - input: JSON.stringify({ + input: { balances: Array(CIRCUIT_SIZE / 4) .fill('') .map(() => ''.padStart(256, '0').split('').map(Number)), @@ -145,10 +161,12 @@ let TAKE; ).toString(), currentEpoch: computeEpochAt(beaconState.slot).toString(), validatorIsZero: Array(CIRCUIT_SIZE).fill(1), - }), + }, }, ]); + console.log(chalk.bold.blue('Adding zero tasks...')); + const buffer = new ArrayBuffer(8); const dataView = new DataView(buffer); @@ -158,29 +176,22 @@ let TAKE; false, ); - await queues[0].addItem(db, new Item(buffer)); + await queues[0].addItem(redis.client, new Item(buffer)); for (let i = 0; i < 38; i++) { - const buffer = new ArrayBuffer(24); + const buffer = new ArrayBuffer(8); const dataView = new DataView(buffer); - dataView.setBigUint64(0, BigInt(i), false); dataView.setBigUint64( - 8, + 0, BigInt(validator_commitment_constants.validatorRegistryLimit), false, ); - dataView.setBigUint64( - 16, - BigInt(validator_commitment_constants.validatorRegistryLimit), - false, - ); - - await queues[i + 1].addItem(db, new Item(buffer)); - if (i % (GRANULITY / 10) === 0 && i !== 0) console.log('Added zeros tasks'); + await queues[i + 1].addItem(redis.client, new Item(buffer)); } + console.log(chalk.bold.blue('Saving validator balance input...')); const batchSize = 100; for (let i = 0; i <= TAKE / CIRCUIT_SIZE / batchSize; i++) { let batch: any[] = []; @@ -197,8 +208,8 @@ let TAKE; let array = new Array(size).fill(0); batch.push({ - index: j * CIRCUIT_SIZE, - input: JSON.stringify({ + index: j, + input: { balances: balances.slice( j * (CIRCUIT_SIZE / 4), (j + 1) * (CIRCUIT_SIZE / 4), @@ -206,10 +217,10 @@ let TAKE; validators: [ ...validators .slice(j * CIRCUIT_SIZE, (j + 1) * CIRCUIT_SIZE) - .map(v => convertValidator(v)), + .map((v: Validator) => convertValidator(v)), ...Array( (j + 1) * CIRCUIT_SIZE - - Math.min((j + 1) * CIRCUIT_SIZE, validators.length), + Math.min((j + 1) * CIRCUIT_SIZE, validators.length), ).fill(getZeroValidator()), ], withdrawalCredentials: computeNumberFromLittleEndianBits( @@ -219,64 +230,46 @@ let TAKE; ).toString(), currentEpoch: computeEpochAt(beaconState.slot).toString(), validatorIsZero: array.concat(new Array(CIRCUIT_SIZE - size).fill(1)), - }), + }, }); } await redis.saveValidatorBalancesInput(batch); - - if (i % GRANULITY === 0 && i !== 0) console.log('saved batch', i); } + await redis.saveBalanceProof(0n, BigInt(validator_commitment_constants.validatorRegistryLimit)) + for (let i = 0; i < TAKE / CIRCUIT_SIZE; i++) { const buffer = new ArrayBuffer(8); const view = new DataView(buffer); - view.setBigUint64(0, BigInt(i * CIRCUIT_SIZE), false); + view.setBigUint64(0, BigInt(i), false); + + await redis.saveBalanceProof(0n, BigInt(i)); - await queues[0].addItem(db, new Item(buffer)); - if (i % (GRANULITY * 100) === 0 && i !== 0) - console.log(`added ${i * CIRCUIT_SIZE}`); + await queues[0].addItem(redis.client, new Item(buffer)); } - for (let j = 1; j < 38; j++) { - console.log('Added inner level of proofs', j); - let prev_index = 2199023255552n; + console.log(chalk.bold.blue('Adding inner proofs...')); + for (let level = 1; level < 38; level++) { + await redis.saveBalanceProof(BigInt(level), BigInt(validator_commitment_constants.validatorRegistryLimit)) - for (let i = 0; i < TAKE / CIRCUIT_SIZE; i++) { - const buffer = new ArrayBuffer(24); + const range = [...new Array(Math.ceil((TAKE / CIRCUIT_SIZE) / (2 ** level))).keys()]; + for (const key of range) { + const buffer = new ArrayBuffer(8); const view = new DataView(buffer); - let index = BigInt(i * CIRCUIT_SIZE); - - if ( - index / 2n ** (BigInt(j) + 3n) == - prev_index / 2n ** (BigInt(j) + 3n) - ) { - continue; - } - - const { first, second } = calculateIndexes( - BigInt(i * CIRCUIT_SIZE), - BigInt(j), - ); - if (i % (GRANULITY * 100) === 0 && i !== 0) - console.log(`added ${j}:${first}:${second}`); - - view.setBigUint64(0, BigInt(j - 1), false); - view.setBigUint64(8, first, false); - view.setBigUint64(16, second, false); - - await redis.saveBalanceProof(BigInt(j - 1), first); - await queues[j].addItem(db, new Item(buffer)); + await redis.saveBalanceProof(BigInt(level), BigInt(key)); - prev_index = first; + view.setBigUint64(0, BigInt(key), false); + await queues[level].addItem(redis.client, new Item(buffer)); } } const beaconStateView = ssz.capella.BeaconState.toViewDU(beaconState); const beaconStateTree = new Tree(beaconStateView.node); + console.log(chalk.bold.blue('Adding final proof input...')); await redis.saveFinalProofInput({ stateRoot: hexToBits( bytesToHex(ssz.capella.BeaconState.hashTreeRoot(beaconState)), @@ -299,13 +292,11 @@ let TAKE; validatorsSizeBits: hexToBits(bytesToHex(ssz.UintNum64.hashTreeRoot(TAKE))), }); - queues[39].addItem(db, new Item(new ArrayBuffer(0))); + queues[39].addItem(redis.client, new Item(new ArrayBuffer(0))); - console.log('Added final proof input'); + console.log(chalk.bold.greenBright('Done')); - console.log('ready'); - - process.exit(0); + await redis.disconnect(); })(); function getZeroValidator() { @@ -321,7 +312,7 @@ function getZeroValidator() { }; } -function convertValidator(validator): any { +function convertValidator(validator: Validator): any { return { pubkey: computeNumberFromLittleEndianBits( hexToBits(bytesToHex(validator.pubkey), 384), @@ -348,18 +339,3 @@ function computeNumberFromLittleEndianBits(bits: number[]) { return BigInt('0b' + bits.join('')); } -function calculateIndexes(index: bigint, depth: bigint) { - let first: bigint = index; - let second: bigint = index + 8n; - - for (let k = 3n; k < depth + 3n; k++) { - if (first % 2n ** (k + 1n) == 0n) { - second = first + 2n ** k; - } else { - second = first; - first = first - 2n ** k; - } - } - - return { first, second }; -} diff --git a/beacon-light-client/plonky2/get_balances_input/ligth_cleaner.ts b/beacon-light-client/plonky2/get_balances_input/light_cleaner.ts similarity index 52% rename from beacon-light-client/plonky2/get_balances_input/ligth_cleaner.ts rename to beacon-light-client/plonky2/get_balances_input/light_cleaner.ts index 151835d1e..26f77e110 100644 --- a/beacon-light-client/plonky2/get_balances_input/ligth_cleaner.ts +++ b/beacon-light-client/plonky2/get_balances_input/light_cleaner.ts @@ -1,32 +1,16 @@ const { KeyPrefix, WorkQueue, - Item, } = require('@mevitae/redis-work-queue/dist/WorkQueue'); import Redis from 'ioredis'; import { sleep } from '../../../libs/typescript/ts-utils/common-utils'; import validator_commitment_constants from '../constants/validator_commitment_constants.json'; -import yargs from 'yargs'; +import { getOptions, lightClean } from '../light_cleaner_common'; (async () => { - const options = yargs - .usage('Usage: -redis-host -redis-port ') - .option('redis-host ', { - alias: 'redis-host', - describe: 'The Redis host', - type: 'string', - default: '127.0.0.1', - description: 'Sets a custom redis connection', - }) - .option('redis-port', { - alias: 'redis-port', - describe: 'The Redis port', - type: 'number', - default: 6379, - description: 'Sets a custom redis connection', - }).argv; + const options = getOptions().argv; - const db = new Redis( + const redis = new Redis( `redis://${options['redis-host']}:${options['redis-port']}`, ); const queues: any[] = []; @@ -44,10 +28,11 @@ import yargs from 'yargs'; console.log('Performing light clean'); for (let i = 0; i < 39; i++) { - await queues[i].lightClean(db); + const prefix = new KeyPrefix(`${validator_commitment_constants.balanceVerificationQueue}:${i}`); + await lightClean.call(queues[i], redis, prefix); } - console.log('Waiting 5 seconds'); - await sleep(5000); + console.log(`Waiting ${options['clean-duration'] / 1000} seconds`); + await sleep(options['clean-duration']); } })(); diff --git a/beacon-light-client/plonky2/light_cleaner_common.ts b/beacon-light-client/plonky2/light_cleaner_common.ts new file mode 100644 index 000000000..f37699ef4 --- /dev/null +++ b/beacon-light-client/plonky2/light_cleaner_common.ts @@ -0,0 +1,63 @@ +import Redis from 'ioredis'; +import yargs from 'yargs'; + +export async function lightClean(this: any, db: Redis, prefix: any) { + const processingKey = prefix.of(":processing"); + const mainQueueKey = prefix.of(":queue"); + const cleaningKey = prefix.of(":cleaning"); + + + const processing: Array = await db.lrange( + processingKey, + 0, + -1 + ); + for (const itemId of processing) { + if (!(await this.leaseExists(db, itemId))) { + await db.lpush(cleaningKey, itemId); + const removed = await db.lrem(processingKey, 0, itemId); + if (removed > 0) { + await db.rpush(mainQueueKey, itemId); + } + await db.lrem(cleaningKey, 0, itemId); + } + } + + const forgot: Array = await db.lrange(cleaningKey, 0, -1); + for (const itemId of forgot) { + const leaseExists: boolean = await this.leaseExists(db, itemId); + if ( + !leaseExists && + (await db.lpos(mainQueueKey, itemId)) == null && + (await db.lpos(processingKey, itemId)) == null + ) { + await db.rpush(mainQueueKey, itemId); + } + await db.lrem(cleaningKey, 0, itemId); + } +} + +export function getOptions() { + return yargs + .usage('Usage: -redis-host -redis-port ') + .option('redis-host ', { + alias: 'redis-host', + describe: 'The Redis host', + type: 'string', + default: '127.0.0.1', + description: 'Sets a custom redis connection', + }) + .option('redis-port', { + alias: 'redis-port', + describe: 'The Redis port', + type: 'number', + default: 6379, + description: 'Sets a custom redis connection', + }) + .option('clean-duration', { + alias: 'clean-duration', + describe: 'The time between each clean in ms', + type: 'number', + default: 5000, + }); +} diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts new file mode 100644 index 000000000..278116f98 --- /dev/null +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts @@ -0,0 +1,42 @@ +import { Redis as RedisLocal } from '../../../relay/implementations/redis'; + +import validator_commitment_constants from '../constants/validator_commitment_constants.json'; +import yargs from 'yargs'; + +(async () => { + const options = yargs + .usage( + 'Usage: -redis-host -redis-port -take ', + ) + .option('redis-host ', { + alias: 'redis-host', + describe: 'The Redis host', + type: 'string', + default: '127.0.0.1', + description: 'Sets a custom redis connection', + }) + .option('redis-port', { + alias: 'redis-port', + describe: 'The Redis port', + type: 'number', + default: 6379, + description: 'Sets a custom redis connection', + }) + .option('oldest-epoch', { + alias: 'oldest-epoch', + describe: 'The oldest epoch for which we keep data', + type: 'number', + demandOption: true, + }).argv; + + const redis = new RedisLocal(options['redis-host'], options['redis-port']); + + const validatorKeys = await redis.getAllKeys(`${validator_commitment_constants.validatorKey}:*:${validator_commitment_constants.epochLookupKey}`); + const validatorProofKeys = await redis.getAllKeys(`${validator_commitment_constants.validatorProofKey}:*:${validator_commitment_constants.epochLookupKey}`); + const keys = [...validatorKeys, ...validatorProofKeys].map((key) => key.substring(0, key.lastIndexOf(':'))); + + const deleted = await Promise.all(keys.map(async (key) => redis.pruneOldEpochs(key, options['oldest-epoch']))); + const deletedCount = deleted.reduce((sum, value) => sum + value); + console.log(`Deleted ${deletedCount} database entries`); + await redis.disconnect(); +})(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index dff08e367..b801e2333 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -1,32 +1,8 @@ -import { - sleep, - splitIntoBatches, -} from '../../../libs/typescript/ts-utils/common-utils'; -import { Redis as RedisLocal } from '../../../relay/implementations/redis'; -import { bytesToHex } from '../../../libs/typescript/ts-utils/bls'; -import { Validator } from '../../../relay/types/types'; -import { hexToBits } from '../../../libs/typescript/ts-utils/hex-utils'; -import * as fs from 'fs'; -import Redis from 'ioredis'; -const { - KeyPrefix, - WorkQueue, - Item, -} = require('@mevitae/redis-work-queue/dist/WorkQueue'); - -import colors from 'colors/safe'; - -import { BeaconApi } from '../../../relay/implementations/beacon-api'; - -import validator_commitment_constants from '../constants/validator_commitment_constants.json'; import yargs from 'yargs'; - -let TAKE: number | undefined; -let MOCK: boolean; +import config from "../common_config.json"; +import { CommitmentMapperScheduler } from './scheduler'; (async () => { - const { ssz } = await import('@lodestar/types'); - const options = yargs .usage( 'Usage: -redis-host -redis-port -take ', @@ -35,23 +11,36 @@ let MOCK: boolean; alias: 'redis-host', describe: 'The Redis host', type: 'string', - default: '127.0.0.1', + default: config['redis-host'], description: 'Sets a custom redis connection', }) .option('redis-port', { alias: 'redis-port', describe: 'The Redis port', type: 'number', - default: 6379, + default: Number(config['redis-port']), description: 'Sets a custom redis connection', }) .option('beacon-node', { alias: 'beacon-node', describe: 'The beacon node url', type: 'string', - default: 'http://unstable.mainnet.beacon-api.nimbus.team', + default: config['beacon-node'], description: 'Sets a custom beacon node url', }) + .option('sync-epoch', { + alias: 'sync-epoch', + describe: 'The sync epoch', + type: 'number', + default: undefined, + description: 'Starts syncing from this epoch', + }) + .options('offset', { + alias: 'offset', + describe: 'Index offset in the validator set', + type: 'number', + default: undefined, + }) .option('take', { alias: 'take', describe: 'The number of validators to take', @@ -65,297 +54,17 @@ let MOCK: boolean; type: 'boolean', default: false, description: 'Runs the tool without doing actual calculations.', - }).argv; - - const redis = new RedisLocal(options['redis-host'], options['redis-port']); - - const db = new Redis( - `redis://${options['redis-host']}:${options['redis-port']}`, - ); - - TAKE = options['take']; - MOCK = options['mock']; - let GRANULITY = MOCK ? 1000 : 1; - - const work_queue = new WorkQueue( - new KeyPrefix(`${validator_commitment_constants.validatorProofsQueue}`), - ); - - const beaconApi = new BeaconApi([options['beacon-node']]); - - // handle zeros validators - if (await redis.isZeroValidatorEmpty()) { - console.log('Adding tasks about zeros'); - await redis.saveValidators([ - { - index: Number(validator_commitment_constants.validatorRegistryLimit), - validator: JSON.stringify({ - pubkey: ''.padEnd(96, '0'), - withdrawalCredentials: ''.padEnd(64, '0'), - effectiveBalance: ''.padEnd(64, '0'), - slashed: ''.padEnd(64, '0'), - activationEligibilityEpoch: ''.padEnd(64, '0'), - activationEpoch: ''.padEnd(64, '0'), - exitEpoch: ''.padEnd(64, '0'), - withdrawableEpoch: ''.padEnd(64, '0'), - }), - }, - ]); - - const buffer = new ArrayBuffer(8); - const dataView = new DataView(buffer); - - dataView.setBigUint64( - 0, - BigInt(validator_commitment_constants.validatorRegistryLimit), - false, - ); - - await work_queue.addItem(db, new Item(buffer)); - - for (let i = 0; i < 40; i++) { - const buffer = new ArrayBuffer(24); - const dataView = new DataView(buffer); - - dataView.setBigUint64(0, BigInt(i), false); - dataView.setBigUint64( - 8, - BigInt(validator_commitment_constants.validatorRegistryLimit), - false, - ); - dataView.setBigUint64( - 16, - BigInt(validator_commitment_constants.validatorRegistryLimit), - false, - ); - - await work_queue.addItem(db, new Item(buffer)); - - if (i % 10 === 0 && i !== 0) { - console.log('Added zeros tasks'); - } - } - } - - console.log('Loading validators'); - - let prevValidators = await redis.getValidatorsBatched(ssz); - - console.log('Loaded all batches'); - - while (true) { - const timeBefore = Date.now(); - - let validators: Validator[]; - - if (MOCK) { - const beaconState_bin = fs.existsSync('../mock_data/beaconState.bin') - ? '../mock_data/beaconState.bin' - : 'mock_data/beaconState.bin'; - - const serializedState = fs.readFileSync(beaconState_bin); - - if (serializedState.byteLength < 1000) { - console.error( - colors.red( - 'Error: Unexpectedly small beacon state file.\n' + - 'Please ensure Git LFS is enabled and run the following:\n' + - colors.bold('git lfs fetch; git lfs checkout'), - ), - ); - process.exit(1); - } - - validators = - ssz.capella.BeaconState.deserialize(serializedState).validators; - } else { - validators = (await beaconApi.getValidators()).slice(0, TAKE); - } - - if (prevValidators.length === 0) { - console.log('prev validators are empty. Saving to redis'); - - const before = Date.now(); - - await saveValidatorsInBatches( - validators.map((validator, index) => ({ - index, - validator, - })), - ); - - const after = Date.now(); - - console.log('Saved validators to redis'); - console.log('Time taken', after - before, 'ms'); - - prevValidators = validators; - - if (!MOCK) { - await sleep(384000); - } - continue; - } - - const changedValidators = validators - .map((validator, index) => ({ validator, index })) - .filter(hasValidatorChanged(prevValidators)); - - await saveValidatorsInBatches(changedValidators); - - console.log('#changedValidators', changedValidators.length); - - if (MOCK) { - process.exit(0); - } - - prevValidators = validators; - - const timeAfter = Date.now(); - - // wait for the next epoch - if (timeAfter - timeBefore < 384000 && !MOCK) { - await sleep(384000 - (timeBefore - timeAfter)); - } - } - - async function saveValidatorsInBatches( - validators: { index: number; validator: Validator }[], - batchSize = 200, - ) { - const validatorBatches = splitIntoBatches(validators, batchSize); - - // Save each batch - for (let i = 0; i < validatorBatches.length; i++) { - await redis.saveValidators( - validatorBatches[i].map(vi => ({ - index: vi.index, - validator: convertValidatorToProof(vi.validator), - })), - ); - - for (const vi of validatorBatches[i]) { - const buffer = new ArrayBuffer(8); - const dataView = new DataView(buffer); - dataView.setBigUint64(0, BigInt(vi.index), false); - await work_queue.addItem(db, new Item(buffer)); - } - - if (i % GRANULITY == 0) { - console.log( - `Saved ${GRANULITY} batches and added first level of proofs`, - ); - } - } - - if (validators.length > 0) { - await addInnerLevelProofs(validators); - } - } - - async function addInnerLevelProofs( - validators: { index: number; validator: Validator }[], - ) { - for (let j = 0n; j < 40n; j++) { - if (j % 10n === 0n && j !== 0n) - console.log('Added inner level of proofs', j); - - let prev_index = 2199023255552n; - for (let i = 0; i < validators.length; i++) { - let validator_index = BigInt(validators[i].index); - - if (validator_index / 2n ** (j + 1n) == prev_index / 2n ** (j + 1n)) { - continue; - } - - const { first, second } = calculateIndexes(validator_index, j); - - const buffer = new ArrayBuffer(24); - const dataView = new DataView(buffer); - - dataView.setBigUint64(0, BigInt(j), false); - dataView.setBigUint64(8, first, false); - dataView.setBigUint64(16, second, false); - - await redis.saveValidatorProof(j + 1n, first); - - await work_queue.addItem(db, new Item(buffer)); - - prev_index = first; - } - } - } - - function calculateIndexes(validator_index: bigint, depth: bigint) { - let first: bigint, second: bigint; - - if (validator_index % 2n == 0n) { - first = validator_index; - second = validator_index + 1n; - } else { - first = validator_index - 1n; - second = validator_index; - } - - for (let k = 1n; k <= depth; k++) { - if (first % 2n ** (k + 1n) == 0n) { - second = first + 2n ** k; - } else { - second = first; - first = first - 2n ** k; - } - } - return { first, second }; - } - - function convertValidatorToProof(validator: Validator): string { - return JSON.stringify({ - pubkey: bytesToHex(validator.pubkey), - withdrawalCredentials: bytesToHex(validator.withdrawalCredentials), - effectiveBalance: bytesToHex( - ssz.phase0.Validator.fields.effectiveBalance.hashTreeRoot( - validator.effectiveBalance, - ), - ), - slashed: bytesToHex( - ssz.phase0.Validator.fields.slashed.hashTreeRoot(validator.slashed), - ), - activationEligibilityEpoch: bytesToHex( - ssz.phase0.Validator.fields.activationEligibilityEpoch.hashTreeRoot( - validator.activationEligibilityEpoch, - ), - ), - activationEpoch: bytesToHex( - ssz.phase0.Validator.fields.activationEpoch.hashTreeRoot( - validator.activationEpoch, - ), - ), - exitEpoch: bytesToHex( - ssz.phase0.Validator.fields.exitEpoch.hashTreeRoot(validator.exitEpoch), - ), - withdrawableEpoch: bytesToHex( - ssz.phase0.Validator.fields.withdrawableEpoch.hashTreeRoot( - validator.withdrawableEpoch, - ), - ), - }); - } + }) + .option('run-once', { + alias: 'run-once', + describe: 'Should run script for one epoch', + type: 'boolean', + default: false, + }) + .argv; - function hasValidatorChanged(prevValidators) { - return ({ validator, index }) => - prevValidators[index] === undefined || - validator.pubkey.some( - (byte, i) => byte !== prevValidators[index].pubkey[i], - ) || - validator.withdrawalCredentials.some( - (byte, i) => byte !== prevValidators[index].withdrawalCredentials[i], - ) || - validator.effectiveBalance !== prevValidators[index].effectiveBalance || - validator.slashed !== prevValidators[index].slashed || - validator.activationEligibilityEpoch !== - prevValidators[index].activationEligibilityEpoch || - validator.activationEpoch !== prevValidators[index].activationEpoch || - validator.exitEpoch !== prevValidators[index].exitEpoch || - validator.withdrawableEpoch !== prevValidators[index].withdrawableEpoch; - } + const scheduler = new CommitmentMapperScheduler(); + await scheduler.init(options); + await scheduler.start(options['run-once']); + await scheduler.dispose(); })(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_validator_merkle_path.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_validator_merkle_path.ts new file mode 100644 index 000000000..76ac09e52 --- /dev/null +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_validator_merkle_path.ts @@ -0,0 +1,99 @@ +import { Redis as RedisLocal } from '../../../relay/implementations/redis'; +import { BeaconApi } from '../../../relay/implementations/beacon-api'; + +import yargs from 'yargs'; +import { bytesToHex } from '../../../libs/typescript/ts-utils/bls'; + +type HashAlgorithm = 'sha256' | 'poseidon'; + +function bitArrayToByteArray(hash: number[]): Uint8Array { + const result = new Uint8Array(32); + + for (let byte = 0; byte < 32; ++byte) { + let value = 0; + for (let bit = 0; bit < 8; ++bit) { + value += (2 ** (7 - bit)) * hash[byte * 8 + bit]; + } + result[byte] = value; + } + return result; +} + +(async () => { + const options = yargs + .usage( + 'Usage: -redis-host -redis-port -take ', + ) + .option('redis-host ', { + alias: 'redis-host', + describe: 'The Redis host', + type: 'string', + default: '127.0.0.1', + description: 'Sets a custom redis connection', + }) + .option('redis-port', { + alias: 'redis-port', + describe: 'The Redis port', + type: 'number', + default: 6379, + description: 'Sets a custom redis connection', + }) + .option('beacon-node', { + alias: 'beacon-node', + describe: 'The beacon node url', + type: 'string', + default: 'http://testing.mainnet.beacon-api.nimbus.team', + description: 'Sets a custom beacon node url', + }) + .option('validator-index', { + alias: 'validator-index', + describe: 'The index of the validator', + type: 'number', + demandOption: true, + description: 'Gets merkle path for the given validator index', + }) + .option('epoch', { + alias: 'epoch', + describe: 'The epoch for which to generate a merkle proof', + type: 'number', + default: undefined, + }) + .option('hash-algorithm', { + alias: 'hash-algorithm', + describe: 'The type of hashes to return', + type: 'string', + default: 'sha256', + choices: ['sha256', 'poseidon'], + }) + .argv; + + const redis = new RedisLocal(options['redis-host'], options['redis-port']); + + const beaconApi = new BeaconApi([options['beacon-node']]); + const epoch = options['epoch'] ? BigInt(options['epoch']) : await beaconApi.getHeadSlot() / 32n; + let gindex = 2n ** 40n - 1n + BigInt(options['validator-index']); + + const hashAlg: HashAlgorithm = options['hash-algorithm']; + let path: (number[] | string)[] = []; + + while (gindex !== 0n) { + const siblingGindex = (gindex % 2n === 0n) + ? gindex - 1n + : gindex + 1n; + + const hash = await redis.extractHashFromCommitmentMapperProof(siblingGindex, epoch, hashAlg) + if (hash !== null) { + path.push(hash); + } + + gindex = (gindex - 1n) / 2n; + } + + if (hashAlg == 'sha256') { + path = (path as number[][]).map(bitArrayToByteArray).map(bytesToHex); + } + + console.log(path) + + await redis.disconnect(); +})(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/light_cleaner.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/light_cleaner.ts new file mode 100644 index 000000000..7043b3b9a --- /dev/null +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/light_cleaner.ts @@ -0,0 +1,26 @@ +const { + KeyPrefix, + WorkQueue, +} = require('@mevitae/redis-work-queue/dist/WorkQueue'); +import Redis from 'ioredis'; +import { sleep } from '../../../libs/typescript/ts-utils/common-utils'; +import validator_commitment_constants from '../constants/validator_commitment_constants.json'; +import { getOptions, lightClean } from '../light_cleaner_common'; + +(async () => { + const options = getOptions().argv; + + const prefix = new KeyPrefix(`${validator_commitment_constants.validatorProofsQueue}`); + const first_level_proofs = new WorkQueue(prefix); + + const redis = new Redis( + `redis://${options['redis-host']}:${options['redis-port']}`, + ); + + while (true) { + console.log('Performing light clean'); + await lightClean.call(first_level_proofs, redis, prefix); + console.log(`Waiting ${options['clean-duration'] / 1000} seconds`); + await sleep(options['clean-duration']); + } +})(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/ligth_cleaner.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/ligth_cleaner.ts deleted file mode 100644 index f1706671a..000000000 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/ligth_cleaner.ts +++ /dev/null @@ -1,42 +0,0 @@ -const { - KeyPrefix, - WorkQueue, -} = require('@mevitae/redis-work-queue/dist/WorkQueue'); -import Redis from 'ioredis'; -import { sleep } from '../../../libs/typescript/ts-utils/common-utils'; -import validator_commitment_constants from '../constants/validator_commitment_constants.json'; -import yargs from 'yargs'; - -(async () => { - const options = yargs - .usage('Usage: -redis-host -redis-port ') - .option('redis-host ', { - alias: 'redis-host', - describe: 'The Redis host', - type: 'string', - default: '127.0.0.1', - description: 'Sets a custom redis connection', - }) - .option('redis-port', { - alias: 'redis-port', - describe: 'The Redis port', - type: 'number', - default: 6379, - description: 'Sets a custom redis connection', - }).argv; - - const first_level_proofs = new WorkQueue( - new KeyPrefix(`${validator_commitment_constants.validatorProofsQueue}`), - ); - - const db = new Redis( - `redis://${options['redis-host']}:${options['redis-port']}`, - ); - - while (true) { - console.log('Performing light clean'); - await first_level_proofs.lightClean(db); - console.log('Waiting 5 seconds'); - await sleep(5000); - } -})(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/request_the_zero_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/request_the_zero_validators.ts deleted file mode 100644 index ebdf3f634..000000000 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/request_the_zero_validators.ts +++ /dev/null @@ -1,77 +0,0 @@ -const { - KeyPrefix, - WorkQueue, - Item, -} = require('@mevitae/redis-work-queue/dist/WorkQueue'); -import Redis from 'ioredis'; -import { Redis as RedisLocal } from '../../../relay/implementations/redis'; -import validator_commitment_constants from '../constants/validator_commitment_constants.json'; - -(async () => { - const validator_registry_limit = 1099511627776n; - - const proofs_queue = new WorkQueue( - new KeyPrefix(`${validator_commitment_constants.validatorProofsQueue}`), - ); - - const db = new Redis('redis://127.0.0.1:6379'); - - while ((await proofs_queue.queueLen(db)) > 0) { - let item = await proofs_queue.lease(db, 30); - - console.log(item.data); - - await proofs_queue.complete(db, item); - } - - console.log('done'); - - const redis = new RedisLocal('127.0.0.1', 6379); - - console.log('Saved validators to redis'); - - await redis.saveValidators([ - { - index: Number(validator_registry_limit), - validator: JSON.stringify({ - pubkey: Array(384).fill(0), - withdrawalCredentials: Array(256).fill(0), - effectiveBalance: Array(256).fill(0), - slashed: Array(256).fill(0), - activationEligibilityEpoch: Array(256).fill(0), - activationEpoch: Array(256).fill(0), - exitEpoch: Array(256).fill(0), - withdrawableEpoch: Array(256).fill(0), - }), - }, - ]); - - console.log('Saved validators to redis'); - - // Add the first level proofs to the queue - { - const buffer = new ArrayBuffer(8); - const dataView = new DataView(buffer); - - dataView.setBigUint64(0, validator_registry_limit, false); - - await proofs_queue.addItem(db, new Item(buffer)); - - console.log('Added first task to queue'); - } - - for (let i = 0; i < 40; i++) { - const buffer = new ArrayBuffer(24); - const dataView = new DataView(buffer); - - dataView.setBigUint64(0, BigInt(i), false); - dataView.setBigUint64(8, validator_registry_limit, false); - dataView.setBigUint64(16, validator_registry_limit, false); - - await proofs_queue.addItem(db, new Item(buffer)); - - console.log('Added task to queue'); - } - - console.log('Done adding tasks to queue'); -})(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts new file mode 100644 index 000000000..fff92d904 --- /dev/null +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts @@ -0,0 +1,278 @@ +import { bytesToHex } from '../../../libs/typescript/ts-utils/bls'; +import { splitIntoBatches } from '../../../libs/typescript/ts-utils/common-utils'; +import { BeaconApi } from '../../../relay/implementations/beacon-api'; +import { Redis } from '../../../relay/implementations/redis'; +import { Validator, IndexedValidator } from '../../../relay/types/types'; +import chalk from 'chalk'; +import fs from 'fs'; + +const { + KeyPrefix, + WorkQueue, + Item, +} = require('@mevitae/redis-work-queue/dist/WorkQueue'); + +import CONSTANTS from '../constants/validator_commitment_constants.json'; + +enum TaskTag { + UPDATE_PROOF_NODE = 0, + PROVE_ZERO_FOR_DEPTH = 1, + UPDATE_VALIDATOR_PROOF = 2, +} + +export class CommitmentMapperScheduler { + private redis: Redis; + private api: BeaconApi; + private queue: any; + private currentEpoch: bigint; + private headEpoch: bigint; + private take: number | undefined = undefined; + private offset: number | undefined = undefined; + private validators: Validator[] = []; + private mock: boolean; + private ssz: any; + + async init(options: any) { + this.redis = new Redis(options['redis-host'], options['redis-port']); + this.take = options['take']; + this.offset = options['offset']; + this.queue = new WorkQueue( + new KeyPrefix(`${CONSTANTS.validatorProofsQueue}`), + ); + this.api = new BeaconApi([options['beacon-node']]); + this.headEpoch = BigInt(await this.api.getHeadSlot()) / 32n; + this.currentEpoch = options['sync-epoch'] !== undefined + ? BigInt(options['sync-epoch']) : this.headEpoch; + this.mock = options['MOCK']; + this.ssz = (await import('@lodestar/types')).ssz; + } + + async dispose() { + return this.redis.disconnect(); + } + + async start(runOnce: boolean = false) { + console.log(chalk.bold.blue('Fetching validators from database...')); + if (!this.mock) { + this.validators = await this.redis.getValidatorsBatched(this.ssz, this.currentEpoch); + } else { + const beaconStateBin = fs.existsSync('../mock_data/beaconState.bin') + ? '../mock_data/beaconState.bin' + : 'mock_data/beaconState.bin'; + + const serializedState = fs.readFileSync(beaconStateBin); + + if (serializedState.byteLength < 1000) { + console.error( + chalk.red( + 'Error: Unexpectedly small beacon state file.\n' + + 'Please ensure Git LFS is enabled and run the following:\n' + + chalk.bold('git lfs fetch; git lfs checkout'), + ), + ); + return; + } + + this.validators = + this.ssz.capella.BeaconState.deserialize(serializedState).validators; + } + + console.log(`Loaded ${chalk.bold.yellow(this.validators.length)} validators from database`); + + if (await this.redis.isZeroValidatorEmpty()) { + console.log(chalk.bold.blue('Adding zero tasks...')); + await this.scheduleZeroTasks(); + } + + console.log(chalk.bold.blue(`Initial syncing (${chalk.cyan(this.currentEpoch)} epoch)...`)); + await this.updateValidators(); + + if (runOnce) { + return; + } + + if (!this.mock) { + await this.syncEpoch(); + + const es = await this.api.subscribeForEvents(['head']); + es.on('head', async (event) => { + this.headEpoch = BigInt(JSON.parse(event.data).slot) / 32n; + await this.syncEpoch(); + }); + } + } + + async scheduleZeroTasks() { + await this.redis.saveValidators([ + { + index: Number(CONSTANTS.validatorRegistryLimit), + data: { + pubkey: ''.padEnd(96, '0'), + withdrawalCredentials: ''.padEnd(64, '0'), + effectiveBalance: ''.padEnd(64, '0'), + slashed: ''.padEnd(64, '0'), + activationEligibilityEpoch: ''.padEnd(64, '0'), + activationEpoch: ''.padEnd(64, '0'), + exitEpoch: ''.padEnd(64, '0'), + withdrawableEpoch: ''.padEnd(64, '0'), + }, + }, + ], + this.currentEpoch, + ); + + await this.scheduleValidatorProof(BigInt(CONSTANTS.validatorRegistryLimit)); + await this.redis.saveZeroValidatorProof(40n); + + for (let depth = 39n; depth >= 0n; depth--) { + this.scheduleProveZeroForDepth(depth); + await this.redis.saveZeroValidatorProof(depth); + } + } + + async syncEpoch() { + while (this.currentEpoch < this.headEpoch) { + this.currentEpoch++; + console.log(chalk.bold.blue(`Syncing ${this.currentEpoch === this.headEpoch ? chalk.cyan(this.currentEpoch) : `${chalk.cyanBright(this.currentEpoch)}/${chalk.cyan(this.headEpoch)}`}...`)); + await this.updateValidators(); + } + } + + async updateValidators() { + const newValidators = await this.api.getValidators(Number(this.currentEpoch * 32n), this.take, this.offset) + const changedValidators = newValidators + .map((validator, index) => ({ validator, index })) + .filter(hasValidatorChanged(this.validators)); + + await this.saveValidatorsInBatches(changedValidators); + + console.log(`Changed validators count: ${chalk.bold.yellow(changedValidators.length)}`); + this.validators = newValidators; + } + + async saveValidatorsInBatches(validators: IndexedValidator[], batchSize = 200) { + for (const batch of splitIntoBatches(validators, batchSize)) { + await this.redis.saveValidators( + batch.map((validator: IndexedValidator) => ({ + index: validator.index, + data: this.convertValidatorToProof(validator.validator), + })), + this.currentEpoch + ); + await Promise.all(batch.map((validator) => this.scheduleValidatorProof(BigInt(validator.index)))); + } + + await this.updateBranches(validators); + } + + async scheduleValidatorProof(validatorIndex: bigint) { + const buffer = new ArrayBuffer(17); + const dataView = new DataView(buffer); + dataView.setUint8(0, TaskTag.UPDATE_VALIDATOR_PROOF); + dataView.setBigUint64(1, validatorIndex, false); + dataView.setBigUint64(9, this.currentEpoch, false); + this.queue.addItem(this.redis.client, new Item(buffer)); + + // Don't create an epoch lookup for the zero validator proof + if (validatorIndex !== BigInt(CONSTANTS.validatorRegistryLimit)) { + await this.redis.addToEpochLookup(`${CONSTANTS.validatorProofKey}:${gindexFromValidatorIndex(validatorIndex)}`, this.currentEpoch); + } + } + + async scheduleUpdateProofNodeTask(gindex: bigint) { + const buffer = new ArrayBuffer(17); + const dataView = new DataView(buffer); + + await this.redis.addToEpochLookup(`${CONSTANTS.validatorProofKey}:${gindex}`, this.currentEpoch); + + dataView.setUint8(0, TaskTag.UPDATE_PROOF_NODE); + dataView.setBigUint64(1, gindex, false); + dataView.setBigUint64(9, this.currentEpoch, false); + this.queue.addItem(this.redis.client, new Item(buffer)); + } + + async updateBranches(validators: IndexedValidator[]) { + const changedValidatorGindices = validators.map(validator => gindexFromValidatorIndex(BigInt(validator.index))); + await Promise.all(changedValidatorGindices.map(async (gindex) => this.redis.saveValidatorProof(gindex, this.currentEpoch))); + + let nodesNeedingUpdate = new Set(changedValidatorGindices.map(getParent)); + while (nodesNeedingUpdate.size !== 0) { + const newNodesNeedingUpdate = new Set(); + + for (const gindex of nodesNeedingUpdate) { + if (gindex !== 0n) { + newNodesNeedingUpdate.add(getParent(gindex)); + } + + await this.redis.saveValidatorProof(gindex, this.currentEpoch); + await this.scheduleUpdateProofNodeTask(gindex); + } + + nodesNeedingUpdate = newNodesNeedingUpdate; + } + } + + async scheduleProveZeroForDepth(depth: bigint) { + const buffer = new ArrayBuffer(9); + const dataView = new DataView(buffer); + + dataView.setUint8(0, TaskTag.PROVE_ZERO_FOR_DEPTH); + dataView.setBigUint64(1, depth, false); + + this.queue.addItem(this.redis.client, new Item(buffer)); + } + + convertValidatorToProof(validator: Validator) { + return { + pubkey: bytesToHex(validator.pubkey), + withdrawalCredentials: bytesToHex(validator.withdrawalCredentials), + effectiveBalance: bytesToHex( + this.ssz.phase0.Validator.fields.effectiveBalance.hashTreeRoot( + validator.effectiveBalance, + ), + ), + slashed: bytesToHex( + this.ssz.phase0.Validator.fields.slashed.hashTreeRoot(validator.slashed), + ), + activationEligibilityEpoch: bytesToHex(this.ssz.phase0.Validator.fields.activationEligibilityEpoch.hashTreeRoot( + validator.activationEligibilityEpoch, + ), + ), + activationEpoch: bytesToHex( + this.ssz.phase0.Validator.fields.activationEpoch.hashTreeRoot( + validator.activationEpoch, + ), + ), + exitEpoch: bytesToHex( + this.ssz.phase0.Validator.fields.exitEpoch.hashTreeRoot(validator.exitEpoch), + ), + withdrawableEpoch: bytesToHex( + this.ssz.phase0.Validator.fields.withdrawableEpoch.hashTreeRoot( + validator.withdrawableEpoch, + ), + ), + }; + } +} + +function gindexFromValidatorIndex(index: bigint) { + return (2n ** 40n) - 1n + index; +} + +function getParent(gindex: bigint) { + return (gindex - 1n) / 2n; +} + +// Returns a function that checks whether a validator at validator index has +// changed (doesn't check for pubkey and withdrawalCredentials since those +// never change according to the spec) +function hasValidatorChanged(prevValidators: Validator[]) { + return ({ validator, index }: IndexedValidator) => + prevValidators[index] === undefined + || validator.effectiveBalance !== prevValidators[index].effectiveBalance + || validator.slashed !== prevValidators[index].slashed + || validator.activationEligibilityEpoch !== prevValidators[index].activationEligibilityEpoch + || validator.activationEpoch !== prevValidators[index].activationEpoch + || validator.exitEpoch !== prevValidators[index].exitEpoch + || validator.withdrawableEpoch !== prevValidators[index].withdrawableEpoch; +} diff --git a/package.json b/package.json index b78e79e3b..e45a6e978 100644 --- a/package.json +++ b/package.json @@ -71,14 +71,14 @@ "@nomiclabs/hardhat-ethers": "^2.1.1", "@nomiclabs/hardhat-etherscan": "^3.1.0", "@nomiclabs/hardhat-waffle": "^2.0.3", - "@types/colors": "^1.2.1", "bullmq": "^3.7.1", + "chalk": "^4.1.2", "circom_tester": "^0.0.14", "circomlibjs": "^0.1.7", - "colors": "^1.4.0", "crypto-js": "^4.1.1", "dotenv": "^16.0.2", "ethers": "^5.7.0", + "eventsource": "^2.0.2", "express": "^4.18.2", "ffjavascript": "^0.2.59", "hardhat": "^2.20.1", @@ -86,7 +86,7 @@ "ioredis": "^5.3.2", "prom-client": "^14.2.0", "r1csfile": "^0.0.40", - "redis": "^4.6.5", + "redis": "^4.6.10", "redis-commander": "^0.8.0", "snarkit2": "^0.2.0", "snarkjs": "github:metacraft-labs/snarkjs", diff --git a/relay/implementations/beacon-api.ts b/relay/implementations/beacon-api.ts index 4a415a8af..f53ceff47 100644 --- a/relay/implementations/beacon-api.ts +++ b/relay/implementations/beacon-api.ts @@ -11,9 +11,11 @@ import { import { Tree } from '@chainsafe/persistent-merkle-tree'; import { bytesToHex } from '../../libs/typescript/ts-utils/bls'; import { computeSyncCommitteePeriodAt } from '../../libs/typescript/ts-utils/ssz-utils'; -import path from 'path'; import { getGenericLogger } from '../../libs/typescript/ts-utils/logger'; import { prometheusTiming } from '../../libs/typescript/ts-utils/prometheus-utils'; +import EventSource from 'eventsource'; +// @ts-ignore +import { StateId } from '@lodestar/api/beacon/routes/beacon'; const logger = getGenericLogger(); export class BeaconApi implements IBeaconApi { @@ -92,6 +94,12 @@ export class BeaconApi implements IBeaconApi { }; } + async subscribeForEvents(events: string[]): Promise { + return new EventSource( + this.concatUrl(`/eth/v1/events?topics=${events.join(',')}`), + ); + } + async getCurrentHeadSlot(): Promise { logger.info('Getting CurrentHeadSlot..'); @@ -220,8 +228,7 @@ export class BeaconApi implements IBeaconApi { const prevFinalizedHeaderResult = await ( await this.fetchWithFallback( - `/eth/v1/beacon/headers/${ - '0x' + bytesToHex(prevBeaconSate.finalizedCheckpoint.root) + `/eth/v1/beacon/headers/${'0x' + bytesToHex(prevBeaconSate.finalizedCheckpoint.root) }`, ) ).json(); @@ -270,7 +277,7 @@ export class BeaconApi implements IBeaconApi { bytesToHex( prevFinalizedBeaconState[ prevUpdateFinalizedSyncCommmitteePeriod === - currentSyncCommitteePeriod + currentSyncCommitteePeriod ? 'currentSyncCommittee' : 'nextSyncCommittee' ].aggregatePubkey, @@ -304,8 +311,7 @@ export class BeaconApi implements IBeaconApi { const finalizedHeaderResult = await ( await this.fetchWithFallback( - `/eth/v1/beacon/headers/${ - '0x' + bytesToHex(beaconState.finalizedCheckpoint.root) + `/eth/v1/beacon/headers/${'0x' + bytesToHex(beaconState.finalizedCheckpoint.root) }`, ) ).json(); @@ -395,28 +401,46 @@ export class BeaconApi implements IBeaconApi { return block.data.message.body.execution_payload.state_root; } + async getHeadSlot(): Promise { + const res = await (await this.fetchWithFallback('/eth/v1/beacon/headers/head')).json(); + return BigInt(res.data.header.message.slot); + } + async getValidators( - state_id: number | string = 'head', + stateId: StateId, + validatorsCount: number | undefined = undefined, + offset: number | undefined = undefined ): Promise { const { ssz } = await import('@lodestar/types'); - const validators = await ( - await this.fetchWithFallback( - `/eth/v1/beacon/states/${state_id}/validators`, - ) - ).json(); + if (validatorsCount !== undefined && validatorsCount < 10000) { + // use the validators endpoint + let url = `/eth/v1/beacon/states/${stateId}/validators`; + let range = [...Array(validatorsCount).keys()]; + if (offset !== undefined) { + range = range.map((index) => index + offset); - return ssz.phase0.Validators.fromJson( - validators.data.map(x => x.validator), - ); + } + url = url + `?id=${range.join(',')}`; + + const validators = await (await this.fetchWithFallback(url)).json(); + validators.data.sort((v1, v2) => +v1.index - +v2.index); + return ssz.phase0.Validators.fromJson( + validators.data.map(x => x.validator), + ); + } else { + // fetch an ssz beacon state to extract the validators from it + const { beaconState } = await this.getBeaconState(stateId); + return beaconState.validators.slice(offset || 0, validatorsCount); + } } - async getBeaconState(slot: number) { + async getBeaconState(state: StateId) { logger.info('Getting Beacon State..'); const { ssz } = await import('@lodestar/types'); const beaconStateSZZ = await this.fetchWithFallback( - `/eth/v2/debug/beacon/states/${slot}`, + `/eth/v2/debug/beacon/states/${state}`, { headers: { Accept: 'application/octet-stream', @@ -477,9 +501,6 @@ export class BeaconApi implements IBeaconApi { } private concatUrl(urlPath: string): string { - const url = new URL(this.getCurrentApi()); - url.pathname = path.join(url.pathname, urlPath); - - return url.href; + return this.getCurrentApi() + urlPath; } } diff --git a/relay/implementations/redis.ts b/relay/implementations/redis.ts index dc18b9649..fc2658680 100644 --- a/relay/implementations/redis.ts +++ b/relay/implementations/redis.ts @@ -1,5 +1,7 @@ +import { + splitIntoBatches, +} from '../../libs/typescript/ts-utils/common-utils'; import { hexToBytes } from '../../libs/typescript/ts-utils/bls'; -import { bitsToBytes } from '../../libs/typescript/ts-utils/hex-utils'; import { IRedis } from '../abstraction/redis-interface'; import { BalanceProof, @@ -7,19 +9,84 @@ import { Validator, ValidatorProof, } from '../types/types'; -import { createClient, RedisClientType } from 'redis'; -import validator_commitment_constants from '../../beacon-light-client/plonky2/constants/validator_commitment_constants.json'; +import { RedisClientType, createClient } from 'redis'; +import CONSTANTS from '../../beacon-light-client/plonky2/constants/validator_commitment_constants.json'; +import { Redis as RedisClient} from 'ioredis'; +import chalk from 'chalk'; export class Redis implements IRedis { - private redisClient: RedisClientType; - private pubSub: RedisClientType; + public readonly client: RedisClient; + private readonly pubSub: RedisClientType; constructor(redisHost: string, redisPort: number) { - this.redisClient = createClient({ + this.client = new RedisClient({ + host: redisHost, + port: redisPort, + }); + + this.pubSub = createClient({ url: `redis://${redisHost}:${redisPort}`, }); + } + + async disconnect() { + await this.waitForConnection(); + await this.pubSub.disconnect(); + this.client.disconnect(); + } + + async addToEpochLookup(key: string, epoch: bigint) { + await this.waitForConnection(); + + await this.client.zadd(`${key}:${CONSTANTS.epochLookupKey}`, Number(epoch), epoch.toString()); + } + + async getLatestEpoch(key: string, epoch: bigint): Promise { + await this.waitForConnection(); + + const values = await this.client.zrange(`${key}:${CONSTANTS.epochLookupKey}`, epoch.toString(), 0, 'BYSCORE', 'REV', 'LIMIT', 0, 1); + if (values.length === 0) { + return null; + } + return BigInt(values[0]); + } + + async pruneOldEpochs(key: string, newOldestEpoch: bigint): Promise { + await this.waitForConnection(); + + const latestEpoch = await this.getLatestEpoch(key, newOldestEpoch); + if (latestEpoch !== null) { + const range = await this.client.zrange(`${key}:${CONSTANTS.epochLookupKey}`, 0, (latestEpoch - 1n).toString(), 'BYSCORE'); + if (range.length !== 0) { + await this.client.zrem(`${key}:${CONSTANTS.epochLookupKey}`, range); + return await this.client.del(range.map((suffix) => `${key}:${suffix}`)); + } + } + return 0; + } + + async getAllKeys(pattern: string): Promise { + await this.waitForConnection(); + return this.client.keys(pattern); + } + + async extractHashFromCommitmentMapperProof(gindex: bigint, epoch: bigint, hashAlgorithm: 'sha256' | 'poseidon'): Promise { + const hashAlgorithmOptionMap = { + sha256: 'sha256Hash', + poseidon: 'poseidonHash', + }; + + const hashKey = hashAlgorithmOptionMap[hashAlgorithm]; - this.pubSub = this.redisClient.duplicate(); + const latestEpoch = await this.getLatestEpoch(`${CONSTANTS.validatorProofKey}:${gindex}`, BigInt(epoch)); + if (latestEpoch === null) { + const depth = Math.floor(Math.log2(Number(gindex) + 1)); + const result = await this.client.json_get(`${CONSTANTS.validatorProofKey}:zeroes:${depth}`, hashKey) as any; + return result; + } + + const key = `${CONSTANTS.validatorProofKey}:${gindex}:${latestEpoch}`; + return this.client.json_get(key, hashKey) as any; } async notifyAboutNewProof(): Promise { @@ -28,69 +95,85 @@ export class Redis implements IRedis { this.pubSub.publish('proofs_channel', 'proof'); } - async getValidatorsBatched(ssz, batchSize = 1000) { + async getValidatorsBatched(ssz: any, epoch: bigint, batchSize = 1000): Promise { await this.waitForConnection(); - const keys = await this.redisClient.keys( - `${validator_commitment_constants.validatorKey}:*`, - ); + let keys = (await this.client.keys( + `${CONSTANTS.validatorKey}:*:[0-9]*`, + )) + .filter(key => !key.includes(CONSTANTS.validatorRegistryLimit.toString())) + .reduce((acc, key) => { + const split = key.split(':'); + const index = Number(split[1]); + const keyEpoch = Number(split[2]); + + let latestEpoch = 0; + if (keyEpoch <= epoch) { + latestEpoch = keyEpoch; + } - if (keys.length === 0) { - return []; - } + if (acc[index] && acc[index] > latestEpoch) { + latestEpoch = acc[index]; + } + + acc[index] = latestEpoch; + return acc; + }, new Array()) + .map((epoch, index) => `validator:${index}:${epoch}`); let allValidators: Validator[] = new Array(keys.length); - for (let i = 0; i < keys.length; i += batchSize) { - const batchKeys = keys.slice(i, i + batchSize); - const batchValidators = await this.redisClient.mGet(batchKeys); + for (const [keyBatchIndex, batchKeys] of splitIntoBatches(keys, batchSize).entries()) { + const res = await this.client.json_mget(batchKeys, '$'); + if (res === null) { + continue; + } + const batchValidators = (res as any[]).filter((v) => v !== null).flat(); - for (let j = 0; j < batchValidators.length; j++) { - const redisValidatorJSON = JSON.parse(batchValidators[j]!); + for (const [index, redisValidator] of batchValidators.entries()) { try { - let validatorJSON: Validator = { - pubkey: hexToBytes(redisValidatorJSON.pubkey), + const validator: Validator = { + pubkey: hexToBytes(redisValidator.pubkey), withdrawalCredentials: hexToBytes( - redisValidatorJSON.withdrawalCredentials, + redisValidator.withdrawalCredentials, ), effectiveBalance: ssz.phase0.Validator.fields.effectiveBalance.deserialize( - hexToBytes(redisValidatorJSON.effectiveBalance).slice(0, 8), + hexToBytes(redisValidator.effectiveBalance).slice(0, 8), ), slashed: ssz.phase0.Validator.fields.slashed.deserialize( - hexToBytes(redisValidatorJSON.slashed).slice(0, 1), + hexToBytes(redisValidator.slashed).slice(0, 1), ), activationEligibilityEpoch: ssz.phase0.Validator.fields.activationEligibilityEpoch.deserialize( - hexToBytes(redisValidatorJSON.activationEligibilityEpoch).slice( + hexToBytes(redisValidator.activationEligibilityEpoch).slice( 0, 8, ), ), activationEpoch: ssz.phase0.Validator.fields.activationEpoch.deserialize( - hexToBytes(redisValidatorJSON.activationEpoch).slice(0, 8), + hexToBytes(redisValidator.activationEpoch).slice(0, 8), ), exitEpoch: ssz.phase0.Validator.fields.exitEpoch.deserialize( - hexToBytes(redisValidatorJSON.exitEpoch).slice(0, 8), + hexToBytes(redisValidator.exitEpoch).slice(0, 8), ), withdrawableEpoch: ssz.phase0.Validator.fields.withdrawableEpoch.deserialize( - hexToBytes(redisValidatorJSON.withdrawableEpoch).slice(0, 8), + hexToBytes(redisValidator.withdrawableEpoch).slice(0, 8), ), }; - const index = Number(batchKeys[j].split(':')[1]); - - allValidators[index] = validatorJSON; + const validatorIndex = Number(batchKeys[index].split(':')[1]); + allValidators[validatorIndex] = validator; } catch (e) { - console.log(e); + console.error(e); continue; } - } - console.log(`Loaded batch, ${i / batchSize}/${keys.length / batchSize}`); + } + console.log(`Loaded batch ${chalk.bold.yellowBright(keyBatchIndex + 1)}/${chalk.bold.yellow(Math.ceil(keys.length / batchSize))}`); } return allValidators; @@ -99,46 +182,52 @@ export class Redis implements IRedis { async isZeroValidatorEmpty() { await this.waitForConnection(); - const result = await this.redisClient.get( - `${validator_commitment_constants.validatorKey}:${validator_commitment_constants.validatorRegistryLimit}`, + const result = await this.client.keys( + `${CONSTANTS.validatorKey}:${CONSTANTS.validatorRegistryLimit}:*`, ); - return result == null; + return result.length === 0; } async isZeroBalanceEmpty() { await this.waitForConnection(); - const result = await this.redisClient.get( - `${validator_commitment_constants.validatorBalanceInputKey}:${validator_commitment_constants.validatorRegistryLimit}`, + const result = await this.client.json_get( + `${CONSTANTS.validatorBalanceInputKey}:${CONSTANTS.validatorRegistryLimit}`, ); return result == null; } - async saveValidators( - validatorsWithIndices: { index: number; validator: string }[], - ) { + async saveValidators(validatorsWithIndices: { index: number; data: any }[], epoch: bigint) { await this.waitForConnection(); - const result: [string, string][] = validatorsWithIndices.map(vi => [ - `${validator_commitment_constants.validatorKey}:${vi.index}`, - vi.validator, - ]); - await this.redisClient.mSet(result); + const args = await Promise.all(validatorsWithIndices.map(async (validator) => { + await this.addToEpochLookup(`${CONSTANTS.validatorKey}:${validator.index}`, epoch); + return [ + `${CONSTANTS.validatorKey}:${validator.index}:${epoch}`, + '$', + JSON.stringify(validator.data), + ]; + })); + + await this.client.sendCommand(new RedisReJSON.Command('JSON.MSET', args)); } async saveValidatorBalancesInput( - inputsWithIndices: { index: number; input: string }[], + inputsWithIndices: { index: number; input: any }[], ) { await this.waitForConnection(); - const result: [string, string][] = inputsWithIndices.map(ii => [ - `${validator_commitment_constants.validatorBalanceInputKey}:${ii.index}`, - ii.input, - ]); + const args = inputsWithIndices.map(ii => { + return [ + `${CONSTANTS.validatorBalanceInputKey}:${ii.index}`, + '$', + JSON.stringify(ii.input), + ]; + }); - await this.redisClient.mSet(result); + await this.client.sendCommand(new RedisReJSON.Command('JSON.MSET', args)); } async saveFinalProofInput(input: { @@ -152,15 +241,16 @@ export class Redis implements IRedis { }) { await this.waitForConnection(); - await this.redisClient.set( - validator_commitment_constants.finalProofInputKey, - JSON.stringify(input), + await this.client.json_set( + CONSTANTS.finalProofInputKey, + "$", + input as any ); } async saveValidatorProof( - depth: bigint, - index: bigint, + gindex: bigint, + epoch: bigint, proof: ValidatorProof = { needsChange: true, proofIndex: '', @@ -169,17 +259,24 @@ export class Redis implements IRedis { }, ): Promise { await this.waitForConnection(); + await this.client.json_set(`${CONSTANTS.validatorProofKey}:${gindex}:${epoch}`, "$", proof as any); + } - await this.redisClient.set( - `${ - validator_commitment_constants.validatorProofKey - }:${depth.toString()}:${index.toString()}`, - JSON.stringify(proof), - ); + async saveZeroValidatorProof( + depth: bigint, + proof: ValidatorProof = { + needsChange: true, + proofIndex: "invalid", + poseidonHash: [], + sha256Hash: [], + }, + ): Promise { + await this.waitForConnection(); + await this.client.json_set(`${CONSTANTS.validatorProofKey}:zeroes:${depth}`, "$", proof as any); } async saveBalanceProof( - depth: bigint, + level: bigint, index: bigint, proof: BalanceProof = { needsChange: true, @@ -188,28 +285,28 @@ export class Redis implements IRedis { proofIndex: '', balancesHash: [], withdrawalCredentials: '0', + currentEpoch: '0', }, ): Promise { await this.waitForConnection(); - await this.redisClient.set( - `${ - validator_commitment_constants.balanceVerificationProofKey - }:${depth.toString()}:${index.toString()}`, - JSON.stringify(proof), + await this.client.json_set( + `${CONSTANTS.balanceVerificationProofKey}:${level}:${index}`, + '$', + proof as any, ); } async getNextProof(slot: number): Promise { await this.waitForConnection(); - const keys = await this.redisClient.keys(`proof:${slot}:*`); + const keys = await this.client.keys(`proof:${slot}:*`); if (keys.length == 0) { return null; } - return JSON.parse((await this.redisClient.get(keys[0]))!); + return JSON.parse((await this.client.get(keys[0]))!); } async getProof( @@ -218,7 +315,7 @@ export class Redis implements IRedis { ): Promise { await this.waitForConnection(); - let proof = await this.redisClient.get(`proof:${prevSlot}:${nextSlot}`); + let proof = await this.client.get(`proof:${prevSlot}:${nextSlot}`); if (proof == null) { return null; @@ -230,13 +327,13 @@ export class Redis implements IRedis { async get(key: string): Promise { await this.waitForConnection(); - return await this.redisClient.get(key); + return await this.client.get(key); } async set(key: string, value: string): Promise { await this.waitForConnection(); - await this.redisClient.set(key, value); + await this.client.set(key, value); } async saveProof( @@ -246,9 +343,10 @@ export class Redis implements IRedis { ): Promise { await this.waitForConnection(); - await this.redisClient.set( + await this.client.json_set( `proof:${prevSlot}:${nextSlot}`, - JSON.stringify(proof), + '$', + proof as any, ); } @@ -261,8 +359,8 @@ export class Redis implements IRedis { } private async waitForConnection() { - if (!this.redisClient.isOpen) { - await this.redisClient.connect(); + if (!["connect", "connecting", "ready"].includes(this.client.status)) { + await this.client.connect(); } if (!this.pubSub.isOpen) { diff --git a/relay/package.json b/relay/package.json index e86a528be..42dd2b0d3 100644 --- a/relay/package.json +++ b/relay/package.json @@ -21,8 +21,11 @@ "@lodestar/types": "^1.16.0", "@noble/bls12-381": "^1.4.0", "bullmq": "^5.3.1", + "chalk": "^5.3.0", "discord.js": "^14.12.1", "ethers": "^5.7.0", + "eventsource": "^2.0.2", + "ioredis": "^5.3.2", "redis": "^4.6.10", "snarkjs": "^0.7.3", "ts-node": "^10.9.1", @@ -32,6 +35,7 @@ "yargs": "^17.7.1" }, "devDependencies": { + "@types/ioredis": "^4.27.6", "@types/node": "^20.11.19", "@types/snarkjs": "^0.7.8", "typescript": "5.2.2" diff --git a/relay/types/types.ts b/relay/types/types.ts index b8385cb99..eda289681 100644 --- a/relay/types/types.ts +++ b/relay/types/types.ts @@ -177,4 +177,10 @@ export interface BalanceProof { proofIndex: string; balancesHash: number[]; withdrawalCredentials: string; + currentEpoch: string; +} + +export interface IndexedValidator { + index: number; + validator: Validator; } diff --git a/yarn-project.nix b/yarn-project.nix index 2e0d7abe2..e35893d56 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -52,7 +52,7 @@ let rm $out/.gitignore ''; outputHashMode = "recursive"; - outputHash = "sha512-KVWM4JHduHTscwl6wKXPvbGMj7SZ7TQfO6ndyoEmapoRw8a9QX19wHXXyi26yOlKiYi50BNzxMGpzg4GJHmNFQ=="; + outputHash = "sha512-FVfi4ywTv5kc5/djQntwIDhtvT18Rt2zxq5ak2l4jOBap5PVweALCQHwRcFkma+VXip3R48aaShYjdCOMQA/9A=="; }; # Create a derivation that builds a module in isolation. diff --git a/yarn.lock b/yarn.lock index c97afc538..d02358be7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3324,15 +3324,6 @@ __metadata: languageName: node linkType: hard -"@types/colors@npm:^1.2.1": - version: 1.2.1 - resolution: "@types/colors@npm:1.2.1" - dependencies: - colors: "npm:*" - checksum: 10/6602c4805242bd9197de50559883980ec7c58f440ceb6b74d5fc8e85a0992b5fc765e208ce94b3455789f00e33f75d8f8000ac8e597295e2f1bf86de2c161b94 - languageName: node - linkType: hard - "@types/concat-stream@npm:^1.6.0": version: 1.6.1 resolution: "@types/concat-stream@npm:1.6.1" @@ -3386,6 +3377,15 @@ __metadata: languageName: node linkType: hard +"@types/ioredis@npm:^4.27.6": + version: 4.28.10 + resolution: "@types/ioredis@npm:4.28.10" + dependencies: + "@types/node": "npm:*" + checksum: 10/c160dccab11b9bdc49e753a8fb4c18ccd0dd97c9b5aa966514cdc3f3fb6cd007e421f1de6044565446acd59059b18c8d8f6ae878c013d623a24ed196adead6f3 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" @@ -3725,18 +3725,18 @@ __metadata: "@nomiclabs/hardhat-ethers": "npm:^2.1.1" "@nomiclabs/hardhat-etherscan": "npm:^3.1.0" "@nomiclabs/hardhat-waffle": "npm:^2.0.3" - "@types/colors": "npm:^1.2.1" "@types/glob": "npm:^7.2.0" "@types/jest": "npm:^29.5.12" "@types/mocha": "npm:^10.0.6" "@types/node": "npm:^18.0.0" bullmq: "npm:^3.7.1" + chalk: "npm:^4.1.2" circom_tester: "npm:^0.0.14" circomlibjs: "npm:^0.1.7" - colors: "npm:^1.4.0" crypto-js: "npm:^4.1.1" dotenv: "npm:^16.0.2" ethers: "npm:^5.7.0" + eventsource: "npm:^2.0.2" express: "npm:^4.18.2" ffjavascript: "npm:^0.2.59" glob: "npm:^8.0.3" @@ -3747,7 +3747,7 @@ __metadata: prettier: "npm:^2.6.2" prom-client: "npm:^14.2.0" r1csfile: "npm:^0.0.40" - redis: "npm:^4.6.5" + redis: "npm:^4.6.10" redis-commander: "npm:^0.8.0" snarkit2: "npm:^0.2.0" snarkjs: "github:metacraft-labs/snarkjs" @@ -3775,11 +3775,15 @@ __metadata: "@effect/schema": "npm:^0.33.0" "@lodestar/types": "npm:^1.16.0" "@noble/bls12-381": "npm:^1.4.0" + "@types/ioredis": "npm:^4.27.6" "@types/node": "npm:^20.11.19" "@types/snarkjs": "npm:^0.7.8" bullmq: "npm:^5.3.1" + chalk: "npm:^5.3.0" discord.js: "npm:^14.12.1" ethers: "npm:^5.7.0" + eventsource: "npm:^2.0.2" + ioredis: "npm:^5.3.2" redis: "npm:^4.6.10" snarkjs: "npm:^0.7.3" ts-node: "npm:^10.9.1" @@ -5069,7 +5073,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0": +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -5079,6 +5083,13 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^5.3.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 10/6373caaab21bd64c405bfc4bd9672b145647fc9482657b5ea1d549b3b2765054e9d3d928870cdf764fb4aad67555f5061538ff247b8310f110c5c888d92397ea + languageName: node + linkType: hard + "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -5523,7 +5534,7 @@ __metadata: languageName: node linkType: hard -"colors@npm:*, colors@npm:1.4.0, colors@npm:^1.1.2, colors@npm:^1.4.0": +"colors@npm:1.4.0, colors@npm:^1.1.2": version: 1.4.0 resolution: "colors@npm:1.4.0" checksum: 10/90b2d5465159813a3983ea72ca8cff75f784824ad70f2cc2b32c233e95bcfbcda101ebc6d6766bc50f57263792629bfb4f1f8a4dfbd1d240f229fc7f69b785fc @@ -6809,6 +6820,13 @@ __metadata: languageName: node linkType: hard +"eventsource@npm:^2.0.2": + version: 2.0.2 + resolution: "eventsource@npm:2.0.2" + checksum: 10/e1c4c3664cebf9efdd55c90818ef847099f298bf521768d479cf22d8a681e666b3042de85327711ba6a8414ac6a04c70d2aeb4f405bba8239a8c36e06a019374 + languageName: node + linkType: hard + "evp_bytestokey@npm:^1.0.3": version: 1.0.3 resolution: "evp_bytestokey@npm:1.0.3" From c1a71678aeac827c21c8f0ae3b765d774388380e Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Fri, 23 Feb 2024 20:08:27 +0200 Subject: [PATCH 49/59] fix(commitment_mapper): take the correct bit from the slashed ssz leaf Co-authored-by: Aneta Tsvetkova --- .../plonky2/circuits/src/validator_commitment_mapper.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs b/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs index e399b719b..cc8626564 100644 --- a/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs +++ b/beacon-light-client/plonky2/circuits/src/validator_commitment_mapper.rs @@ -68,7 +68,7 @@ pub fn validator_commitment_mapper, const D: usize> builder, &validator.activation_eligibility_epoch[0..64], ), - slashed: validator.slashed[0], + slashed: validator.slashed[7], effective_balance: ssz_num_from_bits(builder, &validator.effective_balance[0..64]), activation_epoch: ssz_num_from_bits(builder, &validator.activation_epoch[0..64]), exit_epoch: ssz_num_from_bits(builder, &validator.exit_epoch[0..64]), From 92286b11190c50c8196f9c5ec883060a4fa3dd5f Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Mon, 26 Feb 2024 15:29:48 +0200 Subject: [PATCH 50/59] refactor(redis): call quit instead of disconnect Co-authored-by: Aneta Tsvetkova --- .../plonky2/get_balances_input/get_balances_input.ts | 2 +- .../validators_commitment_mapper_tree/delete_old_data.ts | 3 ++- .../get_validator_merkle_path.ts | 2 +- .../plonky2/validators_commitment_mapper_tree/scheduler.ts | 2 +- relay/implementations/redis.ts | 6 +++--- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts index 12f148d46..df30e08ca 100644 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -296,7 +296,7 @@ let TAKE: number; console.log(chalk.bold.greenBright('Done')); - await redis.disconnect(); + await redis.quit(); })(); function getZeroValidator() { diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts index 278116f98..81a1f050c 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts @@ -38,5 +38,6 @@ import yargs from 'yargs'; const deleted = await Promise.all(keys.map(async (key) => redis.pruneOldEpochs(key, options['oldest-epoch']))); const deletedCount = deleted.reduce((sum, value) => sum + value); console.log(`Deleted ${deletedCount} database entries`); - await redis.disconnect(); + + await redis.quit(); })(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_validator_merkle_path.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_validator_merkle_path.ts index 76ac09e52..81b895c38 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_validator_merkle_path.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_validator_merkle_path.ts @@ -95,5 +95,5 @@ function bitArrayToByteArray(hash: number[]): Uint8Array { console.log(path) - await redis.disconnect(); + await redis.quit(); })(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts index fff92d904..4e3634d1f 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts @@ -48,7 +48,7 @@ export class CommitmentMapperScheduler { } async dispose() { - return this.redis.disconnect(); + return this.redis.quit(); } async start(runOnce: boolean = false) { diff --git a/relay/implementations/redis.ts b/relay/implementations/redis.ts index fc2658680..91a9d9188 100644 --- a/relay/implementations/redis.ts +++ b/relay/implementations/redis.ts @@ -29,10 +29,10 @@ export class Redis implements IRedis { }); } - async disconnect() { + async quit() { await this.waitForConnection(); - await this.pubSub.disconnect(); - this.client.disconnect(); + await this.pubSub.quit(); + this.client.quit(); } async addToEpochLookup(key: string, epoch: bigint) { From 01585d640a1afe3724b414c749573746a6d5067e Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Mon, 26 Feb 2024 15:57:06 +0200 Subject: [PATCH 51/59] feat(proof_storage): implement proof storage in typescript fix data commitment mapper old epoch deletion Co-authored-by: Aneta Tsvetkova --- .../plonky2/proof_storage/proof_storage.ts | 72 +++++++++++++++++++ .../delete_old_data.ts | 26 +++++-- .../scheduler.ts | 8 +-- relay/implementations/redis.ts | 36 +++++++--- 4 files changed, 126 insertions(+), 16 deletions(-) create mode 100644 beacon-light-client/plonky2/proof_storage/proof_storage.ts diff --git a/beacon-light-client/plonky2/proof_storage/proof_storage.ts b/beacon-light-client/plonky2/proof_storage/proof_storage.ts new file mode 100644 index 000000000..30d91d0bd --- /dev/null +++ b/beacon-light-client/plonky2/proof_storage/proof_storage.ts @@ -0,0 +1,72 @@ +import path from 'path'; +import { Redis } from '../../../relay/implementations/redis'; +import fs from 'fs/promises' + +export interface IProofStorage { + getProof(key: string): Promise; + setProof(key: string, proof: Buffer): Promise; + delProof(key: string): Promise; + quit(): Promise; +} + +export function createProofStorage(options: any): IProofStorage { + const type = options['proof-storage-type']; + if (type === 'redis') { + return new RedisStorage(options['redis-host'], options['redis-port']); + } else if (type === 'file') { + const folder = options['folder-name']; + if (folder === undefined) { + throw new Error('folder-name was not provided'); + + } + return new FileStorage(folder); + } else { + throw new Error(`Proof storage type not supported: ${type}`); + } +} + +export class FileStorage implements IProofStorage { + constructor(private folderName: string) { } + + getPathFromKey(key: string): string { + return path.join(this.folderName, key) + '.bin'; + } + + getProof(key: string): Promise { + return fs.readFile(this.getPathFromKey(key)); + } + + setProof(key: string, proof: Buffer): Promise { + return fs.writeFile(this.getPathFromKey(key), proof); + } + + delProof(key: string): Promise { + return fs.unlink(this.getPathFromKey(key)); + } + + async quit(): Promise { } +} + +export class RedisStorage implements IProofStorage { + private connection: Redis; + + constructor(host: string, port: number) { + this.connection = new Redis(host, port); + } + + async getProof(key: string): Promise { + return this.connection.getBuffer(key); + } + + setProof(key: string, proof: Buffer): Promise { + return this.connection.setBuffer(key, proof); + } + + async delProof(key: string): Promise { + await this.connection.del(key); + } + + async quit(): Promise { + this.connection.client.quit(); + } +} diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts index 81a1f050c..62e77a82c 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts @@ -2,6 +2,7 @@ import { Redis as RedisLocal } from '../../../relay/implementations/redis'; import validator_commitment_constants from '../constants/validator_commitment_constants.json'; import yargs from 'yargs'; +import { createProofStorage } from '../proof_storage/proof_storage'; (async () => { const options = yargs @@ -30,14 +31,31 @@ import yargs from 'yargs'; }).argv; const redis = new RedisLocal(options['redis-host'], options['redis-port']); + const proofStorage = createProofStorage(options) - const validatorKeys = await redis.getAllKeys(`${validator_commitment_constants.validatorKey}:*:${validator_commitment_constants.epochLookupKey}`); - const validatorProofKeys = await redis.getAllKeys(`${validator_commitment_constants.validatorProofKey}:*:${validator_commitment_constants.epochLookupKey}`); - const keys = [...validatorKeys, ...validatorProofKeys].map((key) => key.substring(0, key.lastIndexOf(':'))); + let validatorKeys = await redis.getAllKeys(`${validator_commitment_constants.validatorKey}:*:${validator_commitment_constants.epochLookupKey}`); + let validatorProofKeys = await redis.getAllKeys(`${validator_commitment_constants.validatorProofKey}:*:${validator_commitment_constants.epochLookupKey}`); + + validatorKeys = validatorKeys.map((key) => key.substring(0, key.lastIndexOf(':'))); + validatorProofKeys = validatorProofKeys.map((key) => key.substring(0, key.lastIndexOf(':'))); + + // delete proofs + const proofKeys = validatorProofKeys.map(key => validator_commitment_constants.validatorProofStorage + key.slice(key.indexOf(':'))) + await Promise.all(proofKeys.map(async (proofKey, index) => { + const outdatedEpochs = await redis.collectOutdatedEpochs(validatorProofKeys[index], options['oldest-epoch']) + const keysToDelete = outdatedEpochs.map(epoch => `${proofKey}:${epoch}`); + return Promise.all(keysToDelete.map(key => proofStorage.delProof(key))); + })); + + // delete redis data + const redisKeys = [...validatorKeys, ...validatorProofKeys]; + const deleted = await Promise.all(redisKeys.map(async (key) => { + return redis.pruneOldEpochs(key, options['oldest-epoch']); + })); - const deleted = await Promise.all(keys.map(async (key) => redis.pruneOldEpochs(key, options['oldest-epoch']))); const deletedCount = deleted.reduce((sum, value) => sum + value); console.log(`Deleted ${deletedCount} database entries`); + await proofStorage.quit(); await redis.quit(); })(); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts index 4e3634d1f..c954e942c 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/scheduler.ts @@ -66,8 +66,8 @@ export class CommitmentMapperScheduler { console.error( chalk.red( 'Error: Unexpectedly small beacon state file.\n' + - 'Please ensure Git LFS is enabled and run the following:\n' + - chalk.bold('git lfs fetch; git lfs checkout'), + 'Please ensure Git LFS is enabled and run the following:\n' + + chalk.bold('git lfs fetch; git lfs checkout'), ), ); return; @@ -76,7 +76,7 @@ export class CommitmentMapperScheduler { this.validators = this.ssz.capella.BeaconState.deserialize(serializedState).validators; } - + console.log(`Loaded ${chalk.bold.yellow(this.validators.length)} validators from database`); if (await this.redis.isZeroValidatorEmpty()) { @@ -99,7 +99,7 @@ export class CommitmentMapperScheduler { this.headEpoch = BigInt(JSON.parse(event.data).slot) / 32n; await this.syncEpoch(); }); - } + } } async scheduleZeroTasks() { diff --git a/relay/implementations/redis.ts b/relay/implementations/redis.ts index 91a9d9188..35093835d 100644 --- a/relay/implementations/redis.ts +++ b/relay/implementations/redis.ts @@ -51,16 +51,23 @@ export class Redis implements IRedis { return BigInt(values[0]); } - async pruneOldEpochs(key: string, newOldestEpoch: bigint): Promise { + async collectOutdatedEpochs(key: string, newOldestEpoch: bigint): Promise { await this.waitForConnection(); const latestEpoch = await this.getLatestEpoch(key, newOldestEpoch); if (latestEpoch !== null) { - const range = await this.client.zrange(`${key}:${CONSTANTS.epochLookupKey}`, 0, (latestEpoch - 1n).toString(), 'BYSCORE'); - if (range.length !== 0) { - await this.client.zrem(`${key}:${CONSTANTS.epochLookupKey}`, range); - return await this.client.del(range.map((suffix) => `${key}:${suffix}`)); - } + return (await this.client.zrange(`${key}:${CONSTANTS.epochLookupKey}`, 0, (latestEpoch - 1n).toString(), 'BYSCORE')).map(Number); + } + return []; + } + + async pruneOldEpochs(key: string, newOldestEpoch: bigint): Promise { + await this.waitForConnection(); + + const epochs = await this.collectOutdatedEpochs(key, newOldestEpoch); + if (epochs.length !== 0) { + await this.client.zrem(`${key}:${CONSTANTS.epochLookupKey}`, epochs); + return this.client.del(epochs.map((suffix) => `${key}:${suffix}`)); } return 0; } @@ -326,16 +333,29 @@ export class Redis implements IRedis { async get(key: string): Promise { await this.waitForConnection(); + return this.client.get(key); + } - return await this.client.get(key); + async getBuffer(key: string): Promise { + await this.waitForConnection(); + return this.client.getBuffer(key); } - async set(key: string, value: string): Promise { + async setBuffer(key: string, buffer: Buffer): Promise { await this.waitForConnection(); + await this.client.set(key, buffer); + } + async set(key: string, value: string): Promise { + await this.waitForConnection(); await this.client.set(key, value); } + async del(key: string): Promise { + await this.waitForConnection(); + return this.client.del(key); + } + async saveProof( prevSlot: number, nextSlot: number, From 5c5273f2731346b05a6e3ce15bf6e78609e402d3 Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Tue, 27 Feb 2024 16:45:52 +0200 Subject: [PATCH 52/59] feat(proof_storage): implement aws proof storage in typescript Co-authored-by: Aneta Tsvetkova --- .../crud/proof_storage/file_proof_storage.rs | 12 +- .../proof_storage/aws_proof_storage.ts | 67 + .../proof_storage/azure_proof_storage.ts | 47 + .../proof_storage/file_proof_storage.ts | 25 + .../plonky2/proof_storage/proof_storage.ts | 93 +- .../proof_storage/redis_proof_storage.ts | 26 + package.json | 5 +- yarn-project.nix | 14 +- yarn.lock | 1849 +++++++++++++++-- 9 files changed, 1934 insertions(+), 204 deletions(-) create mode 100644 beacon-light-client/plonky2/proof_storage/aws_proof_storage.ts create mode 100644 beacon-light-client/plonky2/proof_storage/azure_proof_storage.ts create mode 100644 beacon-light-client/plonky2/proof_storage/file_proof_storage.ts create mode 100644 beacon-light-client/plonky2/proof_storage/redis_proof_storage.ts diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs index 2831a9919..df3d9f47b 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/file_proof_storage.rs @@ -21,25 +21,21 @@ impl FileStorage { #[async_trait(?Send)] impl ProofStorage for FileStorage { async fn get_proof(&mut self, identifier: String) -> Result> { - let result = fs::read(format!("{}/{}.{}", self.folder_name, identifier, "bin")).unwrap(); + let result = fs::read(format!("{}/{}", self.folder_name, identifier)).unwrap(); Ok(result) } async fn set_proof(&mut self, identifier: String, proof: &[u8]) -> Result<()> { - fs::write( - format!("{}/{}.{}", self.folder_name, identifier, "bin"), - proof, - ) - .unwrap(); + fs::write(format!("{}/{}", self.folder_name, identifier), proof).unwrap(); Ok(()) } async fn del_proof(&mut self, identifier: String) -> Result<()> { Ok(fs::remove_file(format!( - "{}/{}.{}", - self.folder_name, identifier, "bin" + "{}/{}", + self.folder_name, identifier ))?) } diff --git a/beacon-light-client/plonky2/proof_storage/aws_proof_storage.ts b/beacon-light-client/plonky2/proof_storage/aws_proof_storage.ts new file mode 100644 index 000000000..48f7d2e99 --- /dev/null +++ b/beacon-light-client/plonky2/proof_storage/aws_proof_storage.ts @@ -0,0 +1,67 @@ +import { S3Client, GetObjectCommand, PutObjectCommand, DeleteObjectCommand } from "@aws-sdk/client-s3"; +import { IProofStorage } from "./proof_storage"; +import { Readable } from "stream"; + +export class S3Storage implements IProofStorage { + private s3: S3Client; + private bucketName: string; + + constructor(endpoint: string, region: string, bucketName: string) { + this.s3 = new S3Client({ + region, + endpoint, + credentials: { + accessKeyId: process.env.AWS_ACCESS_KEY_ID || "unset", + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || "unset", + }, + }); + this.bucketName = bucketName; + } + + async getProof(key: string): Promise { + try { + const params = { + Bucket: this.bucketName, + Key: key, + }; + + const response = await this.s3.send(new GetObjectCommand(params)); + const bodyStream = response.Body as Readable; + const chunks: Uint8Array[] = []; + + for await (const chunk of bodyStream) { + chunks.push(chunk); + } + + return Buffer.concat(chunks); + } catch (error: any) { + if (error.name === 'NoSuchKey') { + return null; + } + throw error; + } + } + + async setProof(key: string, proof: Buffer): Promise { + const params = { + Bucket: this.bucketName, + Key: key, + Body: proof, + }; + + await this.s3.send(new PutObjectCommand(params)); + } + + async delProof(key: string): Promise { + const params = { + Bucket: this.bucketName, + Key: key, + }; + + await this.s3.send(new DeleteObjectCommand(params)); + } + + async quit(): Promise { + // Additional cleanup logic can be added if needed. + } +} diff --git a/beacon-light-client/plonky2/proof_storage/azure_proof_storage.ts b/beacon-light-client/plonky2/proof_storage/azure_proof_storage.ts new file mode 100644 index 000000000..262fd5ce0 --- /dev/null +++ b/beacon-light-client/plonky2/proof_storage/azure_proof_storage.ts @@ -0,0 +1,47 @@ +import { BlobServiceClient, ContainerClient } from "@azure/storage-blob"; +import { IProofStorage } from "./proof_storage"; + +export class AzureStorage implements IProofStorage { + private containerClient: ContainerClient; + + constructor(connectionString: string, containerName: string) { + const blobServiceClient = BlobServiceClient.fromConnectionString(connectionString); + this.containerClient = blobServiceClient.getContainerClient(containerName); + } + + async getProof(key: string): Promise { + const blobClient = this.containerClient.getBlockBlobClient(key); + + try { + const downloadResponse = await blobClient.download(); + const buffer = Buffer.from(await streamToBuffer(downloadResponse.readableStreamBody!)); + return buffer; + } catch (error: any) { + if (error.statusCode === 404) { + return null; + } + throw error; + } + } + + async setProof(key: string, proof: Buffer): Promise { + const blockBlobClient = this.containerClient.getBlockBlobClient(key); + await blockBlobClient.uploadData(proof, { blobHTTPHeaders: { blobContentType: 'application/octet-stream' } }); + } + + async delProof(key: string): Promise { + const blobClient = this.containerClient.getBlockBlobClient(key); + await blobClient.delete(); + } + + async quit(): Promise { } +} + +async function streamToBuffer(readableStream: NodeJS.ReadableStream): Promise { + return new Promise((resolve, reject) => { + const chunks: any[] = []; + readableStream.on('data', (data) => chunks.push(data instanceof Buffer ? data : Buffer.from(data))); + readableStream.on('end', () => resolve(Buffer.concat(chunks))); + readableStream.on('error', reject); + }); +} diff --git a/beacon-light-client/plonky2/proof_storage/file_proof_storage.ts b/beacon-light-client/plonky2/proof_storage/file_proof_storage.ts new file mode 100644 index 000000000..39af86345 --- /dev/null +++ b/beacon-light-client/plonky2/proof_storage/file_proof_storage.ts @@ -0,0 +1,25 @@ +import path from "path"; +import { IProofStorage } from "./proof_storage"; +import fs from 'fs/promises'; + +export class FileStorage implements IProofStorage { + constructor(private folderName: string) { } + + getPathFromKey(key: string): string { + return path.join(this.folderName, key); + } + + getProof(key: string): Promise { + return fs.readFile(this.getPathFromKey(key)); + } + + setProof(key: string, proof: Buffer): Promise { + return fs.writeFile(this.getPathFromKey(key), proof); + } + + delProof(key: string): Promise { + return fs.unlink(this.getPathFromKey(key)); + } + + async quit(): Promise { } +} diff --git a/beacon-light-client/plonky2/proof_storage/proof_storage.ts b/beacon-light-client/plonky2/proof_storage/proof_storage.ts index 30d91d0bd..f98eb9505 100644 --- a/beacon-light-client/plonky2/proof_storage/proof_storage.ts +++ b/beacon-light-client/plonky2/proof_storage/proof_storage.ts @@ -1,6 +1,8 @@ -import path from 'path'; -import { Redis } from '../../../relay/implementations/redis'; -import fs from 'fs/promises' +import { S3Storage } from './aws_proof_storage'; +import { AzureStorage } from './azure_proof_storage'; +import { FileStorage } from './file_proof_storage'; +import { RedisStorage } from './redis_proof_storage'; + export interface IProofStorage { getProof(key: string): Promise; @@ -11,62 +13,51 @@ export interface IProofStorage { export function createProofStorage(options: any): IProofStorage { const type = options['proof-storage-type']; - if (type === 'redis') { - return new RedisStorage(options['redis-host'], options['redis-port']); - } else if (type === 'file') { - const folder = options['folder-name']; - if (folder === undefined) { - throw new Error('folder-name was not provided'); + + switch (type) { + case 'redis': return new RedisStorage(options['redis-host'], options['redis-port']); + case 'file': { + const folder = options['folder-name']; + if (folder === undefined) { + throw new Error('folder-name was not provided'); + } + return new FileStorage(folder); } - return new FileStorage(folder); - } else { - throw new Error(`Proof storage type not supported: ${type}`); - } -} + case 'azure': { + const account = options['azure-account']; + const container = options['azure-container']; + if (account === undefined) { + throw new Error('azure-account was not provided'); + } + if (container === undefined) { + throw new Error('azure-container was not provided'); + } + + return new AzureStorage('placeholder', 'placeholder'); -export class FileStorage implements IProofStorage { - constructor(private folderName: string) { } + } + case 'aws': { + const endpoint = options['aws-endpoint-url']; + const region = options['aws-region']; + const bucket = options['aws-bucket-name']; - getPathFromKey(key: string): string { - return path.join(this.folderName, key) + '.bin'; - } + if (endpoint === undefined) { + throw new Error('aws-endpoint-url was not provided'); + } - getProof(key: string): Promise { - return fs.readFile(this.getPathFromKey(key)); - } + if (region === undefined) { + throw new Error('aws-region was not provided'); + } - setProof(key: string, proof: Buffer): Promise { - return fs.writeFile(this.getPathFromKey(key), proof); - } + if (bucket === undefined) { + throw new Error('aws-bucket-name was not provided'); + } - delProof(key: string): Promise { - return fs.unlink(this.getPathFromKey(key)); + return new S3Storage(options['aws-endopoint-url'], options['aws-region'], options['aws-bucket-name']); + } + default: throw new Error(`Proof storage type not supported: ${type}`); } - - async quit(): Promise { } } -export class RedisStorage implements IProofStorage { - private connection: Redis; - constructor(host: string, port: number) { - this.connection = new Redis(host, port); - } - - async getProof(key: string): Promise { - return this.connection.getBuffer(key); - } - - setProof(key: string, proof: Buffer): Promise { - return this.connection.setBuffer(key, proof); - } - - async delProof(key: string): Promise { - await this.connection.del(key); - } - - async quit(): Promise { - this.connection.client.quit(); - } -} diff --git a/beacon-light-client/plonky2/proof_storage/redis_proof_storage.ts b/beacon-light-client/plonky2/proof_storage/redis_proof_storage.ts new file mode 100644 index 000000000..2bcce731d --- /dev/null +++ b/beacon-light-client/plonky2/proof_storage/redis_proof_storage.ts @@ -0,0 +1,26 @@ +import { Redis } from "../../../relay/implementations/redis"; +import { IProofStorage } from "./proof_storage"; + +export class RedisStorage implements IProofStorage { + private connection: Redis; + + constructor(host: string, port: number) { + this.connection = new Redis(host, port); + } + + async getProof(key: string): Promise { + return this.connection.getBuffer(key); + } + + setProof(key: string, proof: Buffer): Promise { + return this.connection.setBuffer(key, proof); + } + + async delProof(key: string): Promise { + await this.connection.del(key); + } + + async quit(): Promise { + this.connection.client.quit(); + } +} diff --git a/package.json b/package.json index e45a6e978..618e35249 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,8 @@ "build-plonky-2": "tsc -p beacon-light-client/plonky2/tsconfig.json" }, "dependencies": { + "@aws-sdk/client-s3": "^3.521.0", + "@azure/storage-blob": "^12.17.0", "@chainsafe/bls": "^6.0.3", "@chainsafe/blst": "^0.2.4", "@chainsafe/persistent-merkle-tree": "^0.6.1", @@ -71,6 +73,7 @@ "@nomiclabs/hardhat-ethers": "^2.1.1", "@nomiclabs/hardhat-etherscan": "^3.1.0", "@nomiclabs/hardhat-waffle": "^2.0.3", + "aws-sdk": "^2.1566.0", "bullmq": "^3.7.1", "chalk": "^4.1.2", "circom_tester": "^0.0.14", @@ -92,7 +95,7 @@ "snarkjs": "github:metacraft-labs/snarkjs", "uuid": "^9.0.0", "winston": "^3.10.0", - "yargs": "^17.7.1" + "yargs": "^17.7.2" }, "bin": { "get-balances-input": "dist/beacon-light-client/plonky2/get_balances_input/get_balances_input.js", diff --git a/yarn-project.nix b/yarn-project.nix index e35893d56..5a10185a9 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -52,7 +52,7 @@ let rm $out/.gitignore ''; outputHashMode = "recursive"; - outputHash = "sha512-FVfi4ywTv5kc5/djQntwIDhtvT18Rt2zxq5ak2l4jOBap5PVweALCQHwRcFkma+VXip3R48aaShYjdCOMQA/9A=="; + outputHash = "sha512-mIEp92lVXHwH/jacK2v9GFraHTrVE01WLBlTF7BaAJlGOwbBryKJyd8EQ+BkkSCCwhF/mFa4jz8XkCmXBKSYxw=="; }; # Create a derivation that builds a module in isolation. @@ -130,11 +130,6 @@ let "blake-hash@npm:2.0.0" \ ${isolated."blake-hash@npm:2.0.0"} \ ".yarn/unplugged/blake-hash-npm-2.0.0-c63b9a2c2d/node_modules/blake-hash" - echo 'injecting build for bcrypt' - yarn nixify inject-build \ - "bcrypt@npm:5.0.1" \ - ${isolated."bcrypt@npm:5.0.1"} \ - ".yarn/unplugged/bcrypt-npm-5.0.1-6815be1cfe/node_modules/bcrypt" echo 'injecting build for bcrypto' yarn nixify inject-build \ "bcrypto@npm:5.4.0" \ @@ -190,6 +185,11 @@ let "utf-8-validate@npm:5.0.10" \ ${isolated."utf-8-validate@npm:5.0.10"} \ ".yarn/unplugged/utf-8-validate-npm-5.0.10-93e9b6f750/node_modules/utf-8-validate" + echo 'injecting build for bcrypt' + yarn nixify inject-build \ + "bcrypt@npm:5.0.1" \ + ${isolated."bcrypt@npm:5.0.1"} \ + ".yarn/unplugged/bcrypt-npm-5.0.1-6815be1cfe/node_modules/bcrypt" echo 'injecting build for redis-commander' yarn nixify inject-build \ "redis-commander@npm:0.8.0" \ @@ -254,7 +254,6 @@ let isolated."msgpackr-extract@npm:3.0.0" = optionalOverride (args.overrideMsgpackrExtractAttrs or null) (mkIsolatedBuild { pname = "msgpackr-extract"; version = "3.0.0"; reference = "npm:3.0.0"; }); isolated."blake-hash@npm:2.0.0" = optionalOverride (args.overrideBlakeHashAttrs or null) (mkIsolatedBuild { pname = "blake-hash"; version = "2.0.0"; reference = "npm:2.0.0"; }); -isolated."bcrypt@npm:5.0.1" = optionalOverride (args.overrideBcryptAttrs or null) (mkIsolatedBuild { pname = "bcrypt"; version = "5.0.1"; reference = "npm:5.0.1"; }); isolated."bcrypto@npm:5.4.0" = optionalOverride (args.overrideBcryptoAttrs or null) (mkIsolatedBuild { pname = "bcrypto"; version = "5.4.0"; reference = "npm:5.4.0"; }); isolated."keccak@npm:3.0.3" = optionalOverride (args.overrideKeccakAttrs or null) (mkIsolatedBuild { pname = "keccak"; version = "3.0.3"; reference = "npm:3.0.3"; }); isolated."secp256k1@npm:4.0.3" = optionalOverride (args.overrideSecp256k1Attrs or null) (mkIsolatedBuild { pname = "secp256k1"; version = "4.0.3"; reference = "npm:4.0.3"; }); @@ -266,5 +265,6 @@ isolated."utf-8-validate@npm:5.0.7" = optionalOverride (args.overrideUtf8Validat isolated."msgpackr-extract@npm:3.0.2" = optionalOverride (args.overrideMsgpackrExtractAttrs or null) (mkIsolatedBuild { pname = "msgpackr-extract"; version = "3.0.2"; reference = "npm:3.0.2"; }); isolated."bufferutil@npm:4.0.7" = optionalOverride (args.overrideBufferutilAttrs or null) (mkIsolatedBuild { pname = "bufferutil"; version = "4.0.7"; reference = "npm:4.0.7"; }); isolated."utf-8-validate@npm:5.0.10" = optionalOverride (args.overrideUtf8ValidateAttrs or null) (mkIsolatedBuild { pname = "utf-8-validate"; version = "5.0.10"; reference = "npm:5.0.10"; }); +isolated."bcrypt@npm:5.0.1" = optionalOverride (args.overrideBcryptAttrs or null) (mkIsolatedBuild { pname = "bcrypt"; version = "5.0.1"; reference = "npm:5.0.1"; }); isolated."redis-commander@npm:0.8.0" = optionalOverride (args.overrideRedisCommanderAttrs or null) (mkIsolatedBuild { pname = "redis-commander"; version = "0.8.0"; reference = "npm:0.8.0"; }); in overriddenProject diff --git a/yarn.lock b/yarn.lock index d02358be7..f0440d95e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,6 +22,824 @@ __metadata: languageName: node linkType: hard +"@aws-crypto/crc32@npm:3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/crc32@npm:3.0.0" + dependencies: + "@aws-crypto/util": "npm:^3.0.0" + "@aws-sdk/types": "npm:^3.222.0" + tslib: "npm:^1.11.1" + checksum: 10/672d593fd98a88709a1b488db92aabf584b6dad3e8099e04b6d2870e34a2ee668cbbe0e5406e60c0d776b9c34a91cfc427999230ad959518fed56a3db037704c + languageName: node + linkType: hard + +"@aws-crypto/crc32c@npm:3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/crc32c@npm:3.0.0" + dependencies: + "@aws-crypto/util": "npm:^3.0.0" + "@aws-sdk/types": "npm:^3.222.0" + tslib: "npm:^1.11.1" + checksum: 10/3e604ad7a8d3fb10e5fe11597d593d0ae8e1d6dc06a06b8d882d5732a6e181f6a77fd4f92fb3ae9002a2007121d49e40bc6b78d83af62d36deb1b457b7f1d977 + languageName: node + linkType: hard + +"@aws-crypto/ie11-detection@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/ie11-detection@npm:3.0.0" + dependencies: + tslib: "npm:^1.11.1" + checksum: 10/f5aee4a11a113ab9640474e75d398c99538aa30775f484cd519f0de0096ae0d4a6b68d2f0c685f24bd6f2425067c565bc20592c36c0dc1f4d28c1b4751a40734 + languageName: node + linkType: hard + +"@aws-crypto/sha1-browser@npm:3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/sha1-browser@npm:3.0.0" + dependencies: + "@aws-crypto/ie11-detection": "npm:^3.0.0" + "@aws-crypto/supports-web-crypto": "npm:^3.0.0" + "@aws-crypto/util": "npm:^3.0.0" + "@aws-sdk/types": "npm:^3.222.0" + "@aws-sdk/util-locate-window": "npm:^3.0.0" + "@aws-sdk/util-utf8-browser": "npm:^3.0.0" + tslib: "npm:^1.11.1" + checksum: 10/8c30fa1e427bf2c295077b007835b0dd9af6beb6250e0aa775cecd42a1f517ef211751e7e12c2423f39d9b1c6748b99eb7b73207eb69165abc696cc470d8659e + languageName: node + linkType: hard + +"@aws-crypto/sha256-browser@npm:3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/sha256-browser@npm:3.0.0" + dependencies: + "@aws-crypto/ie11-detection": "npm:^3.0.0" + "@aws-crypto/sha256-js": "npm:^3.0.0" + "@aws-crypto/supports-web-crypto": "npm:^3.0.0" + "@aws-crypto/util": "npm:^3.0.0" + "@aws-sdk/types": "npm:^3.222.0" + "@aws-sdk/util-locate-window": "npm:^3.0.0" + "@aws-sdk/util-utf8-browser": "npm:^3.0.0" + tslib: "npm:^1.11.1" + checksum: 10/4e075906c48a46bbb8babb60db3e6b280db405a88c68b77c1496c26218292d5ea509beae3ccc19366ca6bc944c6d37fe347d0917909900dbac86f054a19c71c7 + languageName: node + linkType: hard + +"@aws-crypto/sha256-js@npm:3.0.0, @aws-crypto/sha256-js@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/sha256-js@npm:3.0.0" + dependencies: + "@aws-crypto/util": "npm:^3.0.0" + "@aws-sdk/types": "npm:^3.222.0" + tslib: "npm:^1.11.1" + checksum: 10/f9fc2d51631950434d0f91f51c2ce17845d4e8e75971806e21604987e3186ee1e54de8a89e5349585b91cb36e56d5f058d6a45004e1bfbce1351dbb40f479152 + languageName: node + linkType: hard + +"@aws-crypto/supports-web-crypto@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/supports-web-crypto@npm:3.0.0" + dependencies: + tslib: "npm:^1.11.1" + checksum: 10/8a48788d2866e391354f256aa79b577b2ba1474b50184cbe690467de7e64a79928afece95007ab69a1556f99da97ea129487db091d94489847e14decdc7c9a6f + languageName: node + linkType: hard + +"@aws-crypto/util@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/util@npm:3.0.0" + dependencies: + "@aws-sdk/types": "npm:^3.222.0" + "@aws-sdk/util-utf8-browser": "npm:^3.0.0" + tslib: "npm:^1.11.1" + checksum: 10/92c835b83d7a888b37b2f2a37c82e58bb8fabb617e371173c488d2a71b916c69ee566f0ea0b3f7f4e16296226c49793f95b3d59fc07a7ca00af91f8f9f29e6c4 + languageName: node + linkType: hard + +"@aws-sdk/client-s3@npm:^3.521.0": + version: 3.523.0 + resolution: "@aws-sdk/client-s3@npm:3.523.0" + dependencies: + "@aws-crypto/sha1-browser": "npm:3.0.0" + "@aws-crypto/sha256-browser": "npm:3.0.0" + "@aws-crypto/sha256-js": "npm:3.0.0" + "@aws-sdk/client-sts": "npm:3.523.0" + "@aws-sdk/core": "npm:3.523.0" + "@aws-sdk/credential-provider-node": "npm:3.523.0" + "@aws-sdk/middleware-bucket-endpoint": "npm:3.523.0" + "@aws-sdk/middleware-expect-continue": "npm:3.523.0" + "@aws-sdk/middleware-flexible-checksums": "npm:3.523.0" + "@aws-sdk/middleware-host-header": "npm:3.523.0" + "@aws-sdk/middleware-location-constraint": "npm:3.523.0" + "@aws-sdk/middleware-logger": "npm:3.523.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.523.0" + "@aws-sdk/middleware-sdk-s3": "npm:3.523.0" + "@aws-sdk/middleware-signing": "npm:3.523.0" + "@aws-sdk/middleware-ssec": "npm:3.523.0" + "@aws-sdk/middleware-user-agent": "npm:3.523.0" + "@aws-sdk/region-config-resolver": "npm:3.523.0" + "@aws-sdk/signature-v4-multi-region": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@aws-sdk/util-endpoints": "npm:3.523.0" + "@aws-sdk/util-user-agent-browser": "npm:3.523.0" + "@aws-sdk/util-user-agent-node": "npm:3.523.0" + "@aws-sdk/xml-builder": "npm:3.523.0" + "@smithy/config-resolver": "npm:^2.1.3" + "@smithy/core": "npm:^1.3.4" + "@smithy/eventstream-serde-browser": "npm:^2.1.3" + "@smithy/eventstream-serde-config-resolver": "npm:^2.1.3" + "@smithy/eventstream-serde-node": "npm:^2.1.3" + "@smithy/fetch-http-handler": "npm:^2.4.3" + "@smithy/hash-blob-browser": "npm:^2.1.3" + "@smithy/hash-node": "npm:^2.1.3" + "@smithy/hash-stream-node": "npm:^2.1.3" + "@smithy/invalid-dependency": "npm:^2.1.3" + "@smithy/md5-js": "npm:^2.1.3" + "@smithy/middleware-content-length": "npm:^2.1.3" + "@smithy/middleware-endpoint": "npm:^2.4.3" + "@smithy/middleware-retry": "npm:^2.1.3" + "@smithy/middleware-serde": "npm:^2.1.3" + "@smithy/middleware-stack": "npm:^2.1.3" + "@smithy/node-config-provider": "npm:^2.2.3" + "@smithy/node-http-handler": "npm:^2.4.1" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/smithy-client": "npm:^2.4.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/url-parser": "npm:^2.1.3" + "@smithy/util-base64": "npm:^2.1.1" + "@smithy/util-body-length-browser": "npm:^2.1.1" + "@smithy/util-body-length-node": "npm:^2.2.1" + "@smithy/util-defaults-mode-browser": "npm:^2.1.3" + "@smithy/util-defaults-mode-node": "npm:^2.2.2" + "@smithy/util-endpoints": "npm:^1.1.3" + "@smithy/util-retry": "npm:^2.1.3" + "@smithy/util-stream": "npm:^2.1.3" + "@smithy/util-utf8": "npm:^2.1.1" + "@smithy/util-waiter": "npm:^2.1.3" + fast-xml-parser: "npm:4.2.5" + tslib: "npm:^2.5.0" + checksum: 10/d56700703683b3bba705321d011177fe3ef066571c7517043b1f52e5e59da8ef98ba9612df08e8182485039b3344e60178fdc747a1aaea550412b6b757d78f86 + languageName: node + linkType: hard + +"@aws-sdk/client-sso-oidc@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.523.0" + dependencies: + "@aws-crypto/sha256-browser": "npm:3.0.0" + "@aws-crypto/sha256-js": "npm:3.0.0" + "@aws-sdk/client-sts": "npm:3.523.0" + "@aws-sdk/core": "npm:3.523.0" + "@aws-sdk/middleware-host-header": "npm:3.523.0" + "@aws-sdk/middleware-logger": "npm:3.523.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.523.0" + "@aws-sdk/middleware-user-agent": "npm:3.523.0" + "@aws-sdk/region-config-resolver": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@aws-sdk/util-endpoints": "npm:3.523.0" + "@aws-sdk/util-user-agent-browser": "npm:3.523.0" + "@aws-sdk/util-user-agent-node": "npm:3.523.0" + "@smithy/config-resolver": "npm:^2.1.3" + "@smithy/core": "npm:^1.3.4" + "@smithy/fetch-http-handler": "npm:^2.4.3" + "@smithy/hash-node": "npm:^2.1.3" + "@smithy/invalid-dependency": "npm:^2.1.3" + "@smithy/middleware-content-length": "npm:^2.1.3" + "@smithy/middleware-endpoint": "npm:^2.4.3" + "@smithy/middleware-retry": "npm:^2.1.3" + "@smithy/middleware-serde": "npm:^2.1.3" + "@smithy/middleware-stack": "npm:^2.1.3" + "@smithy/node-config-provider": "npm:^2.2.3" + "@smithy/node-http-handler": "npm:^2.4.1" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/smithy-client": "npm:^2.4.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/url-parser": "npm:^2.1.3" + "@smithy/util-base64": "npm:^2.1.1" + "@smithy/util-body-length-browser": "npm:^2.1.1" + "@smithy/util-body-length-node": "npm:^2.2.1" + "@smithy/util-defaults-mode-browser": "npm:^2.1.3" + "@smithy/util-defaults-mode-node": "npm:^2.2.2" + "@smithy/util-endpoints": "npm:^1.1.3" + "@smithy/util-middleware": "npm:^2.1.3" + "@smithy/util-retry": "npm:^2.1.3" + "@smithy/util-utf8": "npm:^2.1.1" + tslib: "npm:^2.5.0" + peerDependencies: + "@aws-sdk/credential-provider-node": ^3.523.0 + checksum: 10/61676d319097f0c29e1a741783f00476b444f0884c02e92f6f0312815c86944772215f9d9603d3532eb13837811daadb1b537d4564c266c7aea63384cc432565 + languageName: node + linkType: hard + +"@aws-sdk/client-sso@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/client-sso@npm:3.523.0" + dependencies: + "@aws-crypto/sha256-browser": "npm:3.0.0" + "@aws-crypto/sha256-js": "npm:3.0.0" + "@aws-sdk/core": "npm:3.523.0" + "@aws-sdk/middleware-host-header": "npm:3.523.0" + "@aws-sdk/middleware-logger": "npm:3.523.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.523.0" + "@aws-sdk/middleware-user-agent": "npm:3.523.0" + "@aws-sdk/region-config-resolver": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@aws-sdk/util-endpoints": "npm:3.523.0" + "@aws-sdk/util-user-agent-browser": "npm:3.523.0" + "@aws-sdk/util-user-agent-node": "npm:3.523.0" + "@smithy/config-resolver": "npm:^2.1.3" + "@smithy/core": "npm:^1.3.4" + "@smithy/fetch-http-handler": "npm:^2.4.3" + "@smithy/hash-node": "npm:^2.1.3" + "@smithy/invalid-dependency": "npm:^2.1.3" + "@smithy/middleware-content-length": "npm:^2.1.3" + "@smithy/middleware-endpoint": "npm:^2.4.3" + "@smithy/middleware-retry": "npm:^2.1.3" + "@smithy/middleware-serde": "npm:^2.1.3" + "@smithy/middleware-stack": "npm:^2.1.3" + "@smithy/node-config-provider": "npm:^2.2.3" + "@smithy/node-http-handler": "npm:^2.4.1" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/smithy-client": "npm:^2.4.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/url-parser": "npm:^2.1.3" + "@smithy/util-base64": "npm:^2.1.1" + "@smithy/util-body-length-browser": "npm:^2.1.1" + "@smithy/util-body-length-node": "npm:^2.2.1" + "@smithy/util-defaults-mode-browser": "npm:^2.1.3" + "@smithy/util-defaults-mode-node": "npm:^2.2.2" + "@smithy/util-endpoints": "npm:^1.1.3" + "@smithy/util-middleware": "npm:^2.1.3" + "@smithy/util-retry": "npm:^2.1.3" + "@smithy/util-utf8": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/19b257dcdd7f284ef980b164a212ed7c9e993aa3b4d00f82219b50a5dd2cffa006e6ec6451dd7408e576d96ce097696f7500c9f9d17aeb5474c9cd4fab152152 + languageName: node + linkType: hard + +"@aws-sdk/client-sts@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/client-sts@npm:3.523.0" + dependencies: + "@aws-crypto/sha256-browser": "npm:3.0.0" + "@aws-crypto/sha256-js": "npm:3.0.0" + "@aws-sdk/core": "npm:3.523.0" + "@aws-sdk/middleware-host-header": "npm:3.523.0" + "@aws-sdk/middleware-logger": "npm:3.523.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.523.0" + "@aws-sdk/middleware-user-agent": "npm:3.523.0" + "@aws-sdk/region-config-resolver": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@aws-sdk/util-endpoints": "npm:3.523.0" + "@aws-sdk/util-user-agent-browser": "npm:3.523.0" + "@aws-sdk/util-user-agent-node": "npm:3.523.0" + "@smithy/config-resolver": "npm:^2.1.3" + "@smithy/core": "npm:^1.3.4" + "@smithy/fetch-http-handler": "npm:^2.4.3" + "@smithy/hash-node": "npm:^2.1.3" + "@smithy/invalid-dependency": "npm:^2.1.3" + "@smithy/middleware-content-length": "npm:^2.1.3" + "@smithy/middleware-endpoint": "npm:^2.4.3" + "@smithy/middleware-retry": "npm:^2.1.3" + "@smithy/middleware-serde": "npm:^2.1.3" + "@smithy/middleware-stack": "npm:^2.1.3" + "@smithy/node-config-provider": "npm:^2.2.3" + "@smithy/node-http-handler": "npm:^2.4.1" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/smithy-client": "npm:^2.4.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/url-parser": "npm:^2.1.3" + "@smithy/util-base64": "npm:^2.1.1" + "@smithy/util-body-length-browser": "npm:^2.1.1" + "@smithy/util-body-length-node": "npm:^2.2.1" + "@smithy/util-defaults-mode-browser": "npm:^2.1.3" + "@smithy/util-defaults-mode-node": "npm:^2.2.2" + "@smithy/util-endpoints": "npm:^1.1.3" + "@smithy/util-middleware": "npm:^2.1.3" + "@smithy/util-retry": "npm:^2.1.3" + "@smithy/util-utf8": "npm:^2.1.1" + fast-xml-parser: "npm:4.2.5" + tslib: "npm:^2.5.0" + peerDependencies: + "@aws-sdk/credential-provider-node": ^3.523.0 + checksum: 10/e081852955b161fd14dace185ead82d6a36f3266a98aa24695bad12b3d6b0ac956b93d3af9721afb3b890f95e6bd8b145b488cf4ef7d0e37dba205fd11660e0a + languageName: node + linkType: hard + +"@aws-sdk/core@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/core@npm:3.523.0" + dependencies: + "@smithy/core": "npm:^1.3.4" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/signature-v4": "npm:^2.1.3" + "@smithy/smithy-client": "npm:^2.4.1" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/6380dcd9872c85243392ec8e0d623cdcda119311b2fe753296a9b488cd548aa0bf67bd3e5073c4a0c6c46d7270de2eac8c94db220b40099aca5160d4e6076ba0 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-env@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/bd59b5a80dbe6382881c6a5abd462613940d9cf0e78f9fa4b549f344212e91cae4d588b8ddd5fa2aa69822bebbfa39f9965343a34641c81674e3693bd4f6bad5 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-http@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/fetch-http-handler": "npm:^2.4.3" + "@smithy/node-http-handler": "npm:^2.4.1" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/smithy-client": "npm:^2.4.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-stream": "npm:^2.1.3" + tslib: "npm:^2.5.0" + checksum: 10/1ae84e7ebf1be15c38de43e79fbc0c662252f48396c1f4fabb388c2f2d301b55f8cf75e90fb773c1eed847d6c5dedbf70c403ee4c6643b90e24c1cce7daae890 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-ini@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.523.0" + dependencies: + "@aws-sdk/client-sts": "npm:3.523.0" + "@aws-sdk/credential-provider-env": "npm:3.523.0" + "@aws-sdk/credential-provider-process": "npm:3.523.0" + "@aws-sdk/credential-provider-sso": "npm:3.523.0" + "@aws-sdk/credential-provider-web-identity": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@smithy/credential-provider-imds": "npm:^2.2.3" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/shared-ini-file-loader": "npm:^2.3.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/951d8148762da9e7bc20785da76eb494c62600ac9e705c637bb56db7782000128cf34b1217750dc9b788ca02a88df86b23d957b79718421809861b907824c73c + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-node@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.523.0" + dependencies: + "@aws-sdk/credential-provider-env": "npm:3.523.0" + "@aws-sdk/credential-provider-http": "npm:3.523.0" + "@aws-sdk/credential-provider-ini": "npm:3.523.0" + "@aws-sdk/credential-provider-process": "npm:3.523.0" + "@aws-sdk/credential-provider-sso": "npm:3.523.0" + "@aws-sdk/credential-provider-web-identity": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@smithy/credential-provider-imds": "npm:^2.2.3" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/shared-ini-file-loader": "npm:^2.3.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/5a890a1e9bfed577b9b538b9f29921a44659cb98582d227e729e61be840cfcd97606f7c88db27c45c8b23e80d9b3172e7cb14c94f8043c478494376a1afea405 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-process@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/shared-ini-file-loader": "npm:^2.3.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/af716832f0df8d11288e9877ed9f0c6c838da378e25d2740fa56e199a54c3aa9ddcffccd74647557f2abc1e8c7279fe83766bb62671482a0b561fde8522b67a3 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-sso@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.523.0" + dependencies: + "@aws-sdk/client-sso": "npm:3.523.0" + "@aws-sdk/token-providers": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/shared-ini-file-loader": "npm:^2.3.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/518c5d563130a7eb15fad22d454518526d3a4635b1d7d3c36061f7c46f145c50a2fefdea46ac62365efc9b69fda746d0d740d7474bf0dea485c1cf9c26348e9a + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-web-identity@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.523.0" + dependencies: + "@aws-sdk/client-sts": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/12274f5958b34369ef987468f68d2a297f93bc9f770781c6bf0f2a7a3116abb8bc6b6d6fca6d267a72dead68e2d98a01592005b720fa466d2f4451b9cfc3887d + languageName: node + linkType: hard + +"@aws-sdk/middleware-bucket-endpoint@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@aws-sdk/util-arn-parser": "npm:3.495.0" + "@smithy/node-config-provider": "npm:^2.2.3" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-config-provider": "npm:^2.2.1" + tslib: "npm:^2.5.0" + checksum: 10/952387c6489d1c71efc4c9506f14e9b6c48204a8ffb2c16d4688cae5a109b239915e427d020d5ab300b1373ef1741763839f850432960ef218f1d6533fe52b4b + languageName: node + linkType: hard + +"@aws-sdk/middleware-expect-continue@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-expect-continue@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/12dbf8b7830161e4228b48054065f677e396a519bf852a013e0e6d5bd2fb0abb7b898182f73b1b3491919fb4b50ba11caa8234ee6a1d468efee92c0ea248e341 + languageName: node + linkType: hard + +"@aws-sdk/middleware-flexible-checksums@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.523.0" + dependencies: + "@aws-crypto/crc32": "npm:3.0.0" + "@aws-crypto/crc32c": "npm:3.0.0" + "@aws-sdk/types": "npm:3.523.0" + "@smithy/is-array-buffer": "npm:^2.1.1" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-utf8": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/b23350a372bd62230ca01e43e8716559a6aa89f843259a9ab6b437c92c22e2915047e4305324d221ac4ab1be33095df5738211cdb69b6a8e3f75b62215537687 + languageName: node + linkType: hard + +"@aws-sdk/middleware-host-header@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/b766afdcb34c5f1779555015da397007d395e3509ad6b29ac3fb43191040b9cbcb23d349a97d690bf52149c6b69c72619a86007b37739dc3539e552286b48347 + languageName: node + linkType: hard + +"@aws-sdk/middleware-location-constraint@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-location-constraint@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/18cdd541124ea0657b0b31ae86c570e8269dff3475e5565b9e38a6a12c064c7162e478b01ec7a355a740f493f1d6db51faf0b4fec93d8afd7a0f72f23112da94 + languageName: node + linkType: hard + +"@aws-sdk/middleware-logger@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-logger@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/5ddde11184a2d255772ec443caf54f25a97edf8e2045e5f0772e2796b0fc0e30ba08c76820ddd3dbe978d7b4146f2c2ba01048b41025564bac18565d97a53118 + languageName: node + linkType: hard + +"@aws-sdk/middleware-recursion-detection@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/b8d7f72f6bd7a9a6bcfd71e7dd94fc4f25c9cb7c020ef63fc985f71da2a88a8c2103ce21b4e289a4babec1a7173163fd693b23a23cfe5b857e0b0d1d07aace3d + languageName: node + linkType: hard + +"@aws-sdk/middleware-sdk-s3@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-sdk-s3@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@aws-sdk/util-arn-parser": "npm:3.495.0" + "@smithy/node-config-provider": "npm:^2.2.3" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/signature-v4": "npm:^2.1.3" + "@smithy/smithy-client": "npm:^2.4.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-config-provider": "npm:^2.2.1" + tslib: "npm:^2.5.0" + checksum: 10/e07c6fc1a5c3ec65a7930c7ca5e5b8c848467d076c6756fa4a7822be1d6d4ba28e88bd88d2b705d31125fa34e1c99dd749d089db6d2e0a8eb7087d3d21f1d107 + languageName: node + linkType: hard + +"@aws-sdk/middleware-signing@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-signing@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/signature-v4": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-middleware": "npm:^2.1.3" + tslib: "npm:^2.5.0" + checksum: 10/1db5544534cd0b3aa8231f766349195ea3b36bba5edc67027dd4d1f74e99edc620eba3bb3b4a98954db822150c9e461bd34d1b64818b4b1313f735f9552e126a + languageName: node + linkType: hard + +"@aws-sdk/middleware-ssec@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-ssec@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/7fde5c6d496b8ad3abeed0ce58eb32ada62675a79855a3da6fae9daa1649af442363393ba9d183c1f96d45cc4f6656f947c87b32417c899ab40436b36c19ec5b + languageName: node + linkType: hard + +"@aws-sdk/middleware-user-agent@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@aws-sdk/util-endpoints": "npm:3.523.0" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/695665002b8244b7182f6f7e97852d831ecf00e82bd12173acd0c3913a0060441d27000d05071bc67843f9be1b41f936aa42d99462cf30726e320134a514cec1 + languageName: node + linkType: hard + +"@aws-sdk/region-config-resolver@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/node-config-provider": "npm:^2.2.3" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-config-provider": "npm:^2.2.1" + "@smithy/util-middleware": "npm:^2.1.3" + tslib: "npm:^2.5.0" + checksum: 10/8ccdaf0563907661c0b41cb8d1a9d7671d76b4d884465999783fe2b7a1c08762a2c1cb4cece17b9cfe3057e1f19c72524dab2d0ce61189d6dc66976d6ea8ed98 + languageName: node + linkType: hard + +"@aws-sdk/signature-v4-multi-region@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/signature-v4-multi-region@npm:3.523.0" + dependencies: + "@aws-sdk/middleware-sdk-s3": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/signature-v4": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/9259a0f7ca1ae1cda4197eaaff5b413cc19c1b3f1b36cb43bb0a0ecb34419495a58847f82fe434388276b69df6db6890cdbe32ae74ba2447a3be35e91d26530f + languageName: node + linkType: hard + +"@aws-sdk/token-providers@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/token-providers@npm:3.523.0" + dependencies: + "@aws-sdk/client-sso-oidc": "npm:3.523.0" + "@aws-sdk/types": "npm:3.523.0" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/shared-ini-file-loader": "npm:^2.3.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/a6074d9d6e0c24cfc4a0a711fff3a46939e88f171934f0b532dfc3b903be57e005cd9a5e221eff9f53c4bb7aa1891074d7029b58627c5ef5fe6255932a99daf2 + languageName: node + linkType: hard + +"@aws-sdk/types@npm:3.523.0, @aws-sdk/types@npm:^3.222.0": + version: 3.523.0 + resolution: "@aws-sdk/types@npm:3.523.0" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/2a33cc1a68d259de199526efde22da2551bd4b6f0f1265d4d378a83b87a22eb88fb3c5b26aa6d649392c04e22aadfd88e56e86d37c304260a6ccb7275d76ed27 + languageName: node + linkType: hard + +"@aws-sdk/util-arn-parser@npm:3.495.0": + version: 3.495.0 + resolution: "@aws-sdk/util-arn-parser@npm:3.495.0" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10/8f8574376e21ae90f2e5ee0ddf6516e8fb31ac433989f7015f0feed185b518108c7c65fc346c64924feb917daed6bfd7ede0c6cf047b64f09cff0125041162b6 + languageName: node + linkType: hard + +"@aws-sdk/util-endpoints@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/util-endpoints@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-endpoints": "npm:^1.1.3" + tslib: "npm:^2.5.0" + checksum: 10/9e4e28ff67391ef153c9e27f1bbde159f73c58ad8119b5e9ec6dc553ec4d3283ef817a3758b421f19eb68e66e4fb11864cebd741f355aa25806ed4a3e6c44f0a + languageName: node + linkType: hard + +"@aws-sdk/util-locate-window@npm:^3.0.0": + version: 3.495.0 + resolution: "@aws-sdk/util-locate-window@npm:3.495.0" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10/8823f6b91ff5d314bb04f156289623fa1a66909ec15363c4b3d2a3e91590bed1cf9b40d55444535ee4fa790a93e17ee86c7a7ac98731e9cbc2708bebd835922c + languageName: node + linkType: hard + +"@aws-sdk/util-user-agent-browser@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/types": "npm:^2.10.1" + bowser: "npm:^2.11.0" + tslib: "npm:^2.5.0" + checksum: 10/b9c4fab28ab24c340d85e905daf48db56d6a181bfdd10a16e3bd60c6b24d495a81dad24a99f149b8cca5cccd739f5c1738d782b3291d16f1f2769b12ed16bde7 + languageName: node + linkType: hard + +"@aws-sdk/util-user-agent-node@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.523.0" + dependencies: + "@aws-sdk/types": "npm:3.523.0" + "@smithy/node-config-provider": "npm:^2.2.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + checksum: 10/14302b773a8e2a2ee9d38bf81ff3d93c9a0e7be7e9fba159c38e2f4f051434cf78aad0defb710e144ca2b91beee19b83d3ea2784968e37076912543b9a0cb66d + languageName: node + linkType: hard + +"@aws-sdk/util-utf8-browser@npm:^3.0.0": + version: 3.259.0 + resolution: "@aws-sdk/util-utf8-browser@npm:3.259.0" + dependencies: + tslib: "npm:^2.3.1" + checksum: 10/bdcf29a92a9a1010b44bf8bade3f1224cb6577a6550b39df97cc053d353f2868d355c25589d61e1da54691d65350d8578a496840ad770ed916a6c3af0971f657 + languageName: node + linkType: hard + +"@aws-sdk/xml-builder@npm:3.523.0": + version: 3.523.0 + resolution: "@aws-sdk/xml-builder@npm:3.523.0" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/adec2f9e17acb1b4022a9bddab378f9cfe63141ef5a7c8b1de7fddf31decb0cc5a1941d51a127abe75c6b9a7b7538c9f958db7b7b2c2651a6246e0248d836a2c + languageName: node + linkType: hard + +"@azure/abort-controller@npm:^1.0.0": + version: 1.1.0 + resolution: "@azure/abort-controller@npm:1.1.0" + dependencies: + tslib: "npm:^2.2.0" + checksum: 10/1efe8735cfe6411f42ab9dda86be627073e0e3345a89bd5d0560175523ab3939db2c82fd17965a49fc70513377866539c91a5c73c871b5a0d771329ffae87dda + languageName: node + linkType: hard + +"@azure/abort-controller@npm:^2.0.0": + version: 2.0.0 + resolution: "@azure/abort-controller@npm:2.0.0" + dependencies: + tslib: "npm:^2.2.0" + checksum: 10/fdb37cb91ef9a88bc9cc96a955d3033e2d563569ea9ec9e0f3cf6ff9d4d7a1e647f238c9848299a9bf86a2d8cf5007e738100e408e7343da58a41ae1016ae1fd + languageName: node + linkType: hard + +"@azure/core-auth@npm:^1.3.0": + version: 1.6.0 + resolution: "@azure/core-auth@npm:1.6.0" + dependencies: + "@azure/abort-controller": "npm:^2.0.0" + "@azure/core-util": "npm:^1.1.0" + tslib: "npm:^2.2.0" + checksum: 10/227747bc790c8d73c2910d0982e459fb33a2bfffee297c12b230fadd7a4f2cf8ad6cdcc1d56bbf4b9ef8b18558deca8f5af301ee7930123e7b1153f039340644 + languageName: node + linkType: hard + +"@azure/core-http@npm:^3.0.0": + version: 3.0.4 + resolution: "@azure/core-http@npm:3.0.4" + dependencies: + "@azure/abort-controller": "npm:^1.0.0" + "@azure/core-auth": "npm:^1.3.0" + "@azure/core-tracing": "npm:1.0.0-preview.13" + "@azure/core-util": "npm:^1.1.1" + "@azure/logger": "npm:^1.0.0" + "@types/node-fetch": "npm:^2.5.0" + "@types/tunnel": "npm:^0.0.3" + form-data: "npm:^4.0.0" + node-fetch: "npm:^2.6.7" + process: "npm:^0.11.10" + tslib: "npm:^2.2.0" + tunnel: "npm:^0.0.6" + uuid: "npm:^8.3.0" + xml2js: "npm:^0.5.0" + checksum: 10/0429c422f59feb18a91486263acdca5ab8bf37b83271cb3088a6d14c1e7580130037e66ad060945520de093b3b92bf4c882d1102d340b816f2616c6bc9925e68 + languageName: node + linkType: hard + +"@azure/core-lro@npm:^2.2.0": + version: 2.6.0 + resolution: "@azure/core-lro@npm:2.6.0" + dependencies: + "@azure/abort-controller": "npm:^2.0.0" + "@azure/core-util": "npm:^1.2.0" + "@azure/logger": "npm:^1.0.0" + tslib: "npm:^2.2.0" + checksum: 10/ee3afef53cec997f0fb0b536b95c4542c917570a3c56d5333bf146a459a24111cfa7147cf18d65bf7de8e3f24787271a8ffe3f7cc07d7af6fd1493f553585280 + languageName: node + linkType: hard + +"@azure/core-paging@npm:^1.1.1": + version: 1.5.0 + resolution: "@azure/core-paging@npm:1.5.0" + dependencies: + tslib: "npm:^2.2.0" + checksum: 10/b02bbd7b3b00e7bb86f7c1e1e4542d5fb6ebadd7bb33a03112a0b0608dc43a936e271d8a3535ba548f617fc675393bc3d2882e54979e9a05baa321cd109585fc + languageName: node + linkType: hard + +"@azure/core-tracing@npm:1.0.0-preview.13": + version: 1.0.0-preview.13 + resolution: "@azure/core-tracing@npm:1.0.0-preview.13" + dependencies: + "@opentelemetry/api": "npm:^1.0.1" + tslib: "npm:^2.2.0" + checksum: 10/7a1832fdc7e3a6330a7714b68dcfc210258e52e1f003aaeb8174e0d6675466caf9bb11d977891d0445808119df4ab9045fb6d2888be4a4b6efa1404f02af5a9d + languageName: node + linkType: hard + +"@azure/core-util@npm:^1.1.0, @azure/core-util@npm:^1.1.1, @azure/core-util@npm:^1.2.0": + version: 1.7.0 + resolution: "@azure/core-util@npm:1.7.0" + dependencies: + "@azure/abort-controller": "npm:^2.0.0" + tslib: "npm:^2.2.0" + checksum: 10/40fe7e9d22eb0f43c68320393890df73fb7bb8e67a4de71c4a74307252a81da456f8c56e76c03cd1d5da460bba345c409d555913ea6aba5de09b445f0d2f36e7 + languageName: node + linkType: hard + +"@azure/logger@npm:^1.0.0": + version: 1.0.4 + resolution: "@azure/logger@npm:1.0.4" + dependencies: + tslib: "npm:^2.2.0" + checksum: 10/146359bf94d0049ae5da94f71b045a14fbd8e656db39639a57d0dda0f4dcd3c1cfdf9436f27e8ac9acd3b654d9d81d8dca437f13f78822b79e1b7d46d589ce9d + languageName: node + linkType: hard + +"@azure/storage-blob@npm:^12.17.0": + version: 12.17.0 + resolution: "@azure/storage-blob@npm:12.17.0" + dependencies: + "@azure/abort-controller": "npm:^1.0.0" + "@azure/core-http": "npm:^3.0.0" + "@azure/core-lro": "npm:^2.2.0" + "@azure/core-paging": "npm:^1.1.1" + "@azure/core-tracing": "npm:1.0.0-preview.13" + "@azure/logger": "npm:^1.0.0" + events: "npm:^3.0.0" + tslib: "npm:^2.2.0" + checksum: 10/6a9279103dae129bd0374a59e2468f45e09e11491b2fdede737956f53c0d42e9e9e06db23d3e619033cfa459a786418d84adaf440b767ea3ea03f5bfd206c8af + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6": version: 7.18.6 resolution: "@babel/code-frame@npm:7.18.6" @@ -2718,6 +3536,13 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/api@npm:^1.0.1": + version: 1.8.0 + resolution: "@opentelemetry/api@npm:1.8.0" + checksum: 10/62f0c42711b9f0c56ea9527c2e6e609e371bfb47d0b78956c91fe27365b4744d7dcc407636ef5b19a24a1d5e2c3cfa79c1b715deca829074e24e3ffba1315ba2 + languageName: node + linkType: hard + "@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/aspromise@npm:1.1.2" @@ -2926,210 +3751,774 @@ __metadata: languageName: node linkType: hard -"@resolver-engine/imports@npm:^0.3.3": - version: 0.3.3 - resolution: "@resolver-engine/imports@npm:0.3.3" +"@resolver-engine/imports@npm:^0.3.3": + version: 0.3.3 + resolution: "@resolver-engine/imports@npm:0.3.3" + dependencies: + "@resolver-engine/core": "npm:^0.3.3" + debug: "npm:^3.1.0" + hosted-git-info: "npm:^2.6.0" + path-browserify: "npm:^1.0.0" + url: "npm:^0.11.0" + checksum: 10/8d81c2fab14a440d96dfacadc8dff9a3953b266ec48638c586590ea9db35a83d7624c75d4092ba480bc9efe17ddeb2e1444ee4af0a34377479172cda115ca831 + languageName: node + linkType: hard + +"@sapphire/async-queue@npm:^1.5.0": + version: 1.5.0 + resolution: "@sapphire/async-queue@npm:1.5.0" + checksum: 10/d22feb63a226486b4a463df145e7e8a94d7149b0772d485e6d315348c8dd4318c7a1724b0961cc023cae4070c0d7f73cbb914310ccbee330007c9bb54a04ae5f + languageName: node + linkType: hard + +"@sapphire/shapeshift@npm:^3.9.2": + version: 3.9.2 + resolution: "@sapphire/shapeshift@npm:3.9.2" + dependencies: + fast-deep-equal: "npm:^3.1.3" + lodash: "npm:^4.17.21" + checksum: 10/1f268ada96f1716ade47dac5fd5449e29fb2a04a2080f7bba0ea8d94f8fc83b5608e7f9fdbbfd28c0b3921997a8d60c875712f1cf4e14ea96e95b5f72af4d9ea + languageName: node + linkType: hard + +"@sapphire/snowflake@npm:^3.5.1": + version: 3.5.1 + resolution: "@sapphire/snowflake@npm:3.5.1" + checksum: 10/12d09f0e4f52f86bdc330d70e4a3042f212d787c2d40e7bc41769218c8d08649786109aa78d777262a658a8f29f12ef5bacc6188d46fd1dd35a4e1f29d378723 + languageName: node + linkType: hard + +"@scure/base@npm:^1.1.1, @scure/base@npm:~1.1.4": + version: 1.1.5 + resolution: "@scure/base@npm:1.1.5" + checksum: 10/543fa9991c6378b6a0d5ab7f1e27b30bb9c1e860d3ac81119b4213cfdf0ad7b61be004e06506e89de7ce0cec9391c17f5c082bb34c3b617a2ee6a04129f52481 + languageName: node + linkType: hard + +"@scure/base@npm:~1.1.0": + version: 1.1.1 + resolution: "@scure/base@npm:1.1.1" + checksum: 10/9aaa525ac25215cbe1bde00733a2fd25e99f03793aa1fd2961c567bb62b60c8a3a485a7cb5d748c41604fca79d149de19b05e64449b770c0a04b9ae38d0b5b2b + languageName: node + linkType: hard + +"@scure/bip32@npm:1.1.5": + version: 1.1.5 + resolution: "@scure/bip32@npm:1.1.5" + dependencies: + "@noble/hashes": "npm:~1.2.0" + "@noble/secp256k1": "npm:~1.7.0" + "@scure/base": "npm:~1.1.0" + checksum: 10/4c83e943a66e7b212d18f47b4650ed9b1dfeb69d8bdd8b491b12ba70ca8635cda67fb1ac920d642d66c8a3c2c03303b623c1faceafe7141a6f20a7cd7f66191e + languageName: node + linkType: hard + +"@scure/bip32@npm:1.3.3": + version: 1.3.3 + resolution: "@scure/bip32@npm:1.3.3" + dependencies: + "@noble/curves": "npm:~1.3.0" + "@noble/hashes": "npm:~1.3.2" + "@scure/base": "npm:~1.1.4" + checksum: 10/4b8b75567866ff7d6b3ba154538add02d2951e9433e8dd7f0014331ac500cda5a88fe3d39b408fcc36e86b633682013f172b967af022c2e4e4ab07336801d688 + languageName: node + linkType: hard + +"@scure/bip39@npm:1.1.1": + version: 1.1.1 + resolution: "@scure/bip39@npm:1.1.1" + dependencies: + "@noble/hashes": "npm:~1.2.0" + "@scure/base": "npm:~1.1.0" + checksum: 10/08908145e0890e481e3398191424961d9ebfb8913fed6e6cdfc63eb1281bd1895244d46c0e8762b0e30d8dc6f498ed296311382fecbf034253838e3a50f60ca1 + languageName: node + linkType: hard + +"@scure/bip39@npm:1.2.2": + version: 1.2.2 + resolution: "@scure/bip39@npm:1.2.2" + dependencies: + "@noble/hashes": "npm:~1.3.2" + "@scure/base": "npm:~1.1.4" + checksum: 10/f71aceda10a7937bf3779fd2b4c4156c95ec9813269470ddca464cb8ab610d2451b173037f4b1e6dac45414e406e7adc7b5814c51279f4474d5d38140bbee542 + languageName: node + linkType: hard + +"@sentry/core@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/core@npm:5.30.0" + dependencies: + "@sentry/hub": "npm:5.30.0" + "@sentry/minimal": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/fef7808017cc9581e94c51fbce3ffeb6bdb62b30d94920fae143d298aed194176ac7c026923d569a33606b93a3747b877e78215a1668ed8eb44e5941527e17e0 + languageName: node + linkType: hard + +"@sentry/hub@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/hub@npm:5.30.0" + dependencies: + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/b0e21a7acb1c363a3097c7578dd483b2e534bc62541977da7d3c643703767bbcfd65831b70b102fefa715e6b75004ca1dab680d117e1a7455e839042118c1051 + languageName: node + linkType: hard + +"@sentry/minimal@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/minimal@npm:5.30.0" + dependencies: + "@sentry/hub": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/e74bf519f5e284decb81eea8fd7c75b02827bde36c8ccef5ad0b941043e62a6d6578d7f1ad9dba33e03d240593140990b1999215a35abb344e2b4f3e09b15c90 + languageName: node + linkType: hard + +"@sentry/node@npm:^5.18.1": + version: 5.30.0 + resolution: "@sentry/node@npm:5.30.0" + dependencies: + "@sentry/core": "npm:5.30.0" + "@sentry/hub": "npm:5.30.0" + "@sentry/tracing": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + cookie: "npm:^0.4.1" + https-proxy-agent: "npm:^5.0.0" + lru_map: "npm:^0.3.3" + tslib: "npm:^1.9.3" + checksum: 10/9fa37b3ce646954f68e4b7506d17c67f5779c69cd432801aaf6796f9ecea9632eb8729b77b71a31dcd5a9f57fb7759fd213222955a667d8ad557df6e997a00c4 + languageName: node + linkType: hard + +"@sentry/tracing@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/tracing@npm:5.30.0" + dependencies: + "@sentry/hub": "npm:5.30.0" + "@sentry/minimal": "npm:5.30.0" + "@sentry/types": "npm:5.30.0" + "@sentry/utils": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/7e74a29823b445adb104c323324348882987554d049e83e5d3439149d2677024350974161c28b1a55a2750509b030525f81056a48427be06183f3744220ba4b0 + languageName: node + linkType: hard + +"@sentry/types@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/types@npm:5.30.0" + checksum: 10/3ca60689871b298dbab16c1bb6fb4637f72d3c21820017bac9df1765fd560004862cc9e75fb438e5714048b3a9bc641c396cdbb3c3573ac62481d2ea83f1da6d + languageName: node + linkType: hard + +"@sentry/utils@npm:5.30.0": + version: 5.30.0 + resolution: "@sentry/utils@npm:5.30.0" + dependencies: + "@sentry/types": "npm:5.30.0" + tslib: "npm:^1.9.3" + checksum: 10/4aa8acf7d0d9688c927a620cbb9fd37d6d2738f701863af772be329baca2cede909dcae6c7b4b449474787245c09212909ee740b4cae143d21ddb1fed910cc3a + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^4.0.0, @sindresorhus/is@npm:^4.6.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: 10/e7f36ed72abfcd5e0355f7423a72918b9748bb1ef370a59f3e5ad8d40b728b85d63b272f65f63eec1faf417cda89dcb0aeebe94015647b6054659c1442fe5ce0 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10/a0af217ba7044426c78df52c23cedede6daf377586f3ac58857c565769358ab1f44ebf95ba04bbe38814fba6e316ca6f02870a009328294fc2c555d0f85a7117 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10/78155c7bd866a85df85e22028e046b8d46cf3e840f72260954f5e3ed5bd97d66c595524305a6841ffb3f681a08f6e5cef572a2cce5442a8a232dc29fb409b83e + languageName: node + linkType: hard + +"@smithy/abort-controller@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/abort-controller@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/531ca34c78500bafd1f82da13ecf406dca16b2e720a5e7c96fb73ea0636eb8c0ee428eb9881b338cef51014aef8a44b85bed628761c57a6d726f507fe0a25307 + languageName: node + linkType: hard + +"@smithy/chunked-blob-reader-native@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/chunked-blob-reader-native@npm:2.1.1" + dependencies: + "@smithy/util-base64": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/3e4bfc4afe794e98fd9f0f6d8fa7eceea5fa79c330c42eb96d27d74d81d2fb65d89482e705e20537c68042688aa53c3c7b08743900eb8c06567fd9ac4b2f6368 + languageName: node + linkType: hard + +"@smithy/chunked-blob-reader@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/chunked-blob-reader@npm:2.1.1" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10/130b8181184ed36f89e995870423b10e7730fe5f4ffc9ca3373e22a43f8195dbb5af230cae0bccd7b016d126796f742c3c44f51d21d08f178c541e767b71a9f4 + languageName: node + linkType: hard + +"@smithy/config-resolver@npm:^2.1.3, @smithy/config-resolver@npm:^2.1.4": + version: 2.1.4 + resolution: "@smithy/config-resolver@npm:2.1.4" + dependencies: + "@smithy/node-config-provider": "npm:^2.2.4" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-config-provider": "npm:^2.2.1" + "@smithy/util-middleware": "npm:^2.1.3" + tslib: "npm:^2.5.0" + checksum: 10/b37b89864d2055b0628eda3700281eb95f56c0b4f900c6269afb17afaab5510f59b95a8a17a4550845d41536a23346d8cb1a3700b6ebb415d003f4cb56a13b1f + languageName: node + linkType: hard + +"@smithy/core@npm:^1.3.4": + version: 1.3.5 + resolution: "@smithy/core@npm:1.3.5" + dependencies: + "@smithy/middleware-endpoint": "npm:^2.4.4" + "@smithy/middleware-retry": "npm:^2.1.4" + "@smithy/middleware-serde": "npm:^2.1.3" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/smithy-client": "npm:^2.4.2" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-middleware": "npm:^2.1.3" + tslib: "npm:^2.5.0" + checksum: 10/055ebcd419423706a9b227e84d45fb8ed536c6dfa90c81eb65ede66a117416be40830ba76bd48b1e6a4ffa53833b938b316a1b23d82fdda44c555d298139d086 + languageName: node + linkType: hard + +"@smithy/credential-provider-imds@npm:^2.2.3, @smithy/credential-provider-imds@npm:^2.2.4": + version: 2.2.4 + resolution: "@smithy/credential-provider-imds@npm:2.2.4" + dependencies: + "@smithy/node-config-provider": "npm:^2.2.4" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + "@smithy/url-parser": "npm:^2.1.3" + tslib: "npm:^2.5.0" + checksum: 10/0796ebf303677b4848ba4b511c59a552550007bac6a4e85c703c14cb2361f3ba668e25038edb462846fa5645ec57f56bb9115179d8007475a7ec0b020f52bcc7 + languageName: node + linkType: hard + +"@smithy/eventstream-codec@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/eventstream-codec@npm:2.1.3" + dependencies: + "@aws-crypto/crc32": "npm:3.0.0" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-hex-encoding": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/f8627b09f13777fbac17b754e54459401e873bb8d9bbd3d3dac96249db73f19fefdd6fa085dcf6be8575eb7769ed0ec89b6f48d36536b9c7ffcccbeceb0c0455 + languageName: node + linkType: hard + +"@smithy/eventstream-serde-browser@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/eventstream-serde-browser@npm:2.1.3" + dependencies: + "@smithy/eventstream-serde-universal": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/fa823eb8718ada1b8208744e247562ac33c2314fc945bd0d74a55938cc975dff82bf7f63c708603b10a3e37cb938bb6920b0b5510802fe6e5289c8295cb0c83b + languageName: node + linkType: hard + +"@smithy/eventstream-serde-config-resolver@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/eventstream-serde-config-resolver@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/975da131e604f4e14fff974d1a652506709e5e09436c4ad4144c04e9cafb930f35b2663fd8143cfc92667f72789f4da98b2dc827c4908978412af1393346405f + languageName: node + linkType: hard + +"@smithy/eventstream-serde-node@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/eventstream-serde-node@npm:2.1.3" + dependencies: + "@smithy/eventstream-serde-universal": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/7bb81b0c82353951ed5c0e49403b054c449ef2a158f691cdc87094c5b76e250c86e954235c485a5908fd8486f1c4db1722d06510a8d788a39dec9586835343fc + languageName: node + linkType: hard + +"@smithy/eventstream-serde-universal@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/eventstream-serde-universal@npm:2.1.3" + dependencies: + "@smithy/eventstream-codec": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/d2fd490de5727c59cf9b961a7521b07ef495a5a1dd9fda8ea570927460c2fc0bd70edc1ca629e570808be96c73bf1609caddca004b599e10621f17a592606c43 + languageName: node + linkType: hard + +"@smithy/fetch-http-handler@npm:^2.4.3": + version: 2.4.3 + resolution: "@smithy/fetch-http-handler@npm:2.4.3" + dependencies: + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/querystring-builder": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-base64": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/c45ef3273b42c16d59edfac2c985a720e459a14246e96bca5c2d63d0379a2a224efdd265b9c2b0771dcb805b926667326136b5e1347020cf08386f5d6a327f50 + languageName: node + linkType: hard + +"@smithy/hash-blob-browser@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/hash-blob-browser@npm:2.1.3" + dependencies: + "@smithy/chunked-blob-reader": "npm:^2.1.1" + "@smithy/chunked-blob-reader-native": "npm:^2.1.1" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/cd29791af760090f8cee88c08c48fd2ba9014ebb98b85eac6c743977af6f3fd0cd7729e43c6878e075ddcf2543c0ce6bbd2b315ccc358bd569b73fa8fa39af02 + languageName: node + linkType: hard + +"@smithy/hash-node@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/hash-node@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + "@smithy/util-buffer-from": "npm:^2.1.1" + "@smithy/util-utf8": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/8849b1c012e683f541202512442b3207d2aba17c860df97e675c78442112a7f34fa1f29161c58e398a67e0063d5eb8316a7c91e62e820231ad81b6ed750c7c1c + languageName: node + linkType: hard + +"@smithy/hash-stream-node@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/hash-stream-node@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + "@smithy/util-utf8": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/6db46d882412c9fb1de558fb99877378b54c07ffd02bebdd8be59463480c6e8172f9ba0276c64b199bb7dbe0b6451283b82108161e0f777a117722d9e992a051 + languageName: node + linkType: hard + +"@smithy/invalid-dependency@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/invalid-dependency@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/345a170eae501f2db87d92615c108988885884a6f15f353c2da96feaa69f2b915ed08239e44df3928700d42b076207c1916d4f8dd71bda8625ebc6adc1ef9ae2 + languageName: node + linkType: hard + +"@smithy/is-array-buffer@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/is-array-buffer@npm:2.1.1" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10/0724355a8fa1e61c9fb77c6e6965cc7eae0cd561f158b768f8d1c9a26254db149bb545b318cdd81ebe383bbe5f26f6197b144c69e812dfd55f512e511e0ccbd8 + languageName: node + linkType: hard + +"@smithy/md5-js@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/md5-js@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + "@smithy/util-utf8": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/0d4118084e87b9f857d4857baca711afeeeb3afc2c72167f0073ee375bd2f95028bfbbf0716a62da2ec9d200b36de463d533e8a57799f50a11b3c9f4bbcb792f + languageName: node + linkType: hard + +"@smithy/middleware-content-length@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/middleware-content-length@npm:2.1.3" + dependencies: + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/a9f920f48c98a6aba25586b5d62bece02a73e9464e2a9faa410d25e6ab8e22e62575f3d40922a3564cda438883f5d7566e94f72aeeedc1ce46b8d82af563f496 + languageName: node + linkType: hard + +"@smithy/middleware-endpoint@npm:^2.4.3, @smithy/middleware-endpoint@npm:^2.4.4": + version: 2.4.4 + resolution: "@smithy/middleware-endpoint@npm:2.4.4" + dependencies: + "@smithy/middleware-serde": "npm:^2.1.3" + "@smithy/node-config-provider": "npm:^2.2.4" + "@smithy/shared-ini-file-loader": "npm:^2.3.4" + "@smithy/types": "npm:^2.10.1" + "@smithy/url-parser": "npm:^2.1.3" + "@smithy/util-middleware": "npm:^2.1.3" + tslib: "npm:^2.5.0" + checksum: 10/f7492955e77d27f8132776d23c437058df22e8f17baa49c5d7cca01843f0eff868143f337162cd254eed207951b03ad39877f33d8223d671c0111aeee950c623 + languageName: node + linkType: hard + +"@smithy/middleware-retry@npm:^2.1.3, @smithy/middleware-retry@npm:^2.1.4": + version: 2.1.4 + resolution: "@smithy/middleware-retry@npm:2.1.4" + dependencies: + "@smithy/node-config-provider": "npm:^2.2.4" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/service-error-classification": "npm:^2.1.3" + "@smithy/smithy-client": "npm:^2.4.2" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-middleware": "npm:^2.1.3" + "@smithy/util-retry": "npm:^2.1.3" + tslib: "npm:^2.5.0" + uuid: "npm:^8.3.2" + checksum: 10/9663fda23bae1918d16da4659b82f6a03ebb9f18982fd24077aced6087797d3d2b2c0143454350c63322a8f001885fc5b18155fafdfdbb09154c1fbe86c6d391 + languageName: node + linkType: hard + +"@smithy/middleware-serde@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/middleware-serde@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/2a37f75caae8d2ad7d43af5f78b3d0d7f5940b375dc28e859b38a48044cb458ef0fcc5f626cc29f191675b5da90fbcc2fcfd13c91b31c37ea5fa2349cddddd28 + languageName: node + linkType: hard + +"@smithy/middleware-stack@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/middleware-stack@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/8cb99ca4de30fe567ec4120877f6c9ec622435e1ea7a5dca3aebbd5c6a5abe3ea56cc05b86df2b082c9ea301d00664e489b6b12e3dd86979d27b58f7eed4d8a6 + languageName: node + linkType: hard + +"@smithy/node-config-provider@npm:^2.2.3, @smithy/node-config-provider@npm:^2.2.4": + version: 2.2.4 + resolution: "@smithy/node-config-provider@npm:2.2.4" + dependencies: + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/shared-ini-file-loader": "npm:^2.3.4" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/e1cb87de325d01fd45026aa02698d125fb3b1cdc0b6699bc95aba16de325f5ac5e01a9fd2b8df84959814b305fdc0e8447cb262b3ae64ca8b35b242a5ffc57cb + languageName: node + linkType: hard + +"@smithy/node-http-handler@npm:^2.4.1": + version: 2.4.1 + resolution: "@smithy/node-http-handler@npm:2.4.1" + dependencies: + "@smithy/abort-controller": "npm:^2.1.3" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/querystring-builder": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/0d4a374294fed567940599a12cf49412f2a020145486cca0b8e6337960aebb9bf986e1d6b3f73a65dcd196a619711d131edd0f52ef2890da6b47a7e84cbb2ab3 + languageName: node + linkType: hard + +"@smithy/property-provider@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/property-provider@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/bdd5ca4861b77214a3baa15a04306625395c1035658b65d2a744595483b3a948271e9bc8791745804f6d4885a49fa78d295b0d647de96b316bf5b5b638d37baa + languageName: node + linkType: hard + +"@smithy/protocol-http@npm:^3.2.1": + version: 3.2.1 + resolution: "@smithy/protocol-http@npm:3.2.1" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/3c77032186aaf1e5580863ae9f0c0286cf128e7c399865d976f2c19db693723c851a3088e1228b6318994499dbd7a9515493b457a7c2be49615792ecf764210f + languageName: node + linkType: hard + +"@smithy/querystring-builder@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/querystring-builder@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + "@smithy/util-uri-escape": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/90a9261e446b2a1f067695e3c2b7ce47e3613a62bcf1b6f7039e35c41f51beadfb383fd69aca6b1277e5ec3b6754b8db589927aa3c71a6c4aa015e346081819d + languageName: node + linkType: hard + +"@smithy/querystring-parser@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/querystring-parser@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/8d9f44e7db75d7996b44a51b8398240610b6394b9d68cecd1be62b7d19970db56dbbfef3ea9e3e0e8cfc77f3ca5409df1ec63b8f53d538ee1afc01c1c5a2578a + languageName: node + linkType: hard + +"@smithy/service-error-classification@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/service-error-classification@npm:2.1.3" dependencies: - "@resolver-engine/core": "npm:^0.3.3" - debug: "npm:^3.1.0" - hosted-git-info: "npm:^2.6.0" - path-browserify: "npm:^1.0.0" - url: "npm:^0.11.0" - checksum: 10/8d81c2fab14a440d96dfacadc8dff9a3953b266ec48638c586590ea9db35a83d7624c75d4092ba480bc9efe17ddeb2e1444ee4af0a34377479172cda115ca831 + "@smithy/types": "npm:^2.10.1" + checksum: 10/e4f4730a765b7f39affc1fde4afd8c15454675b661a5468006474b78be1622cbdae6a6673bcfe12e649f25df72a91e0e37af1eaf4d40788baac092409162f51e languageName: node linkType: hard -"@sapphire/async-queue@npm:^1.5.0": - version: 1.5.0 - resolution: "@sapphire/async-queue@npm:1.5.0" - checksum: 10/d22feb63a226486b4a463df145e7e8a94d7149b0772d485e6d315348c8dd4318c7a1724b0961cc023cae4070c0d7f73cbb914310ccbee330007c9bb54a04ae5f +"@smithy/shared-ini-file-loader@npm:^2.3.3, @smithy/shared-ini-file-loader@npm:^2.3.4": + version: 2.3.4 + resolution: "@smithy/shared-ini-file-loader@npm:2.3.4" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/53c242bb4feffb76da56ce876ab686a90643e40e653898e98e3bf3f8d249bf5ceefcd6c940f10a015975813c6cb248ae8a5d6aa13eace6047fdb81c660a65ebc languageName: node linkType: hard -"@sapphire/shapeshift@npm:^3.9.2": - version: 3.9.2 - resolution: "@sapphire/shapeshift@npm:3.9.2" +"@smithy/signature-v4@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/signature-v4@npm:2.1.3" dependencies: - fast-deep-equal: "npm:^3.1.3" - lodash: "npm:^4.17.21" - checksum: 10/1f268ada96f1716ade47dac5fd5449e29fb2a04a2080f7bba0ea8d94f8fc83b5608e7f9fdbbfd28c0b3921997a8d60c875712f1cf4e14ea96e95b5f72af4d9ea + "@smithy/eventstream-codec": "npm:^2.1.3" + "@smithy/is-array-buffer": "npm:^2.1.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-hex-encoding": "npm:^2.1.1" + "@smithy/util-middleware": "npm:^2.1.3" + "@smithy/util-uri-escape": "npm:^2.1.1" + "@smithy/util-utf8": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/749e4b56f552c379dba0327a9c4ef962fdc68a65c1185cc128dda2a40354f7cb406d863f225ff039e796970876d3d8e822d3cd4b12f995e0cf277414d4bc3bcb languageName: node linkType: hard -"@sapphire/snowflake@npm:^3.5.1": - version: 3.5.1 - resolution: "@sapphire/snowflake@npm:3.5.1" - checksum: 10/12d09f0e4f52f86bdc330d70e4a3042f212d787c2d40e7bc41769218c8d08649786109aa78d777262a658a8f29f12ef5bacc6188d46fd1dd35a4e1f29d378723 +"@smithy/smithy-client@npm:^2.4.1, @smithy/smithy-client@npm:^2.4.2": + version: 2.4.2 + resolution: "@smithy/smithy-client@npm:2.4.2" + dependencies: + "@smithy/middleware-endpoint": "npm:^2.4.4" + "@smithy/middleware-stack": "npm:^2.1.3" + "@smithy/protocol-http": "npm:^3.2.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-stream": "npm:^2.1.3" + tslib: "npm:^2.5.0" + checksum: 10/615d7dd283829e9bd8a05212cc6ed6606ebd1a87df25eff116dfed2c445d0ab9c30fc82b01d33e94c73774b28819e24929b980fdb7187804496d990692b0217d languageName: node linkType: hard -"@scure/base@npm:^1.1.1, @scure/base@npm:~1.1.4": - version: 1.1.5 - resolution: "@scure/base@npm:1.1.5" - checksum: 10/543fa9991c6378b6a0d5ab7f1e27b30bb9c1e860d3ac81119b4213cfdf0ad7b61be004e06506e89de7ce0cec9391c17f5c082bb34c3b617a2ee6a04129f52481 +"@smithy/types@npm:^2.10.1": + version: 2.10.1 + resolution: "@smithy/types@npm:2.10.1" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10/1ed2e03899728b0e4424e6d892432c37bc902fc13a224005be95fec8d119725e76761a61571c7274cd04486514abbc0945bd80e8d8d5a49d23f461c942223736 languageName: node linkType: hard -"@scure/base@npm:~1.1.0": - version: 1.1.1 - resolution: "@scure/base@npm:1.1.1" - checksum: 10/9aaa525ac25215cbe1bde00733a2fd25e99f03793aa1fd2961c567bb62b60c8a3a485a7cb5d748c41604fca79d149de19b05e64449b770c0a04b9ae38d0b5b2b +"@smithy/url-parser@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/url-parser@npm:2.1.3" + dependencies: + "@smithy/querystring-parser": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/92913b25875f4548f3266ff1559789a997485cf85a64ea225895114dadd87c9fd4171db9905f14ef3c35e18d781afb26b286b37bd4eac8c7990bb2980b84a785 languageName: node linkType: hard -"@scure/bip32@npm:1.1.5": - version: 1.1.5 - resolution: "@scure/bip32@npm:1.1.5" +"@smithy/util-base64@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/util-base64@npm:2.1.1" dependencies: - "@noble/hashes": "npm:~1.2.0" - "@noble/secp256k1": "npm:~1.7.0" - "@scure/base": "npm:~1.1.0" - checksum: 10/4c83e943a66e7b212d18f47b4650ed9b1dfeb69d8bdd8b491b12ba70ca8635cda67fb1ac920d642d66c8a3c2c03303b623c1faceafe7141a6f20a7cd7f66191e + "@smithy/util-buffer-from": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/379aa5f1f1c4700e561767f8534ff3921bbacc8bb8afd915a22e242641bbb282ea6b5e19944c64ae014af56a7434354fe26f4387f3c75c5e4d692217ec423582 languageName: node linkType: hard -"@scure/bip32@npm:1.3.3": - version: 1.3.3 - resolution: "@scure/bip32@npm:1.3.3" +"@smithy/util-body-length-browser@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/util-body-length-browser@npm:2.1.1" dependencies: - "@noble/curves": "npm:~1.3.0" - "@noble/hashes": "npm:~1.3.2" - "@scure/base": "npm:~1.1.4" - checksum: 10/4b8b75567866ff7d6b3ba154538add02d2951e9433e8dd7f0014331ac500cda5a88fe3d39b408fcc36e86b633682013f172b967af022c2e4e4ab07336801d688 + tslib: "npm:^2.5.0" + checksum: 10/749b3fcc72f5df40be377e997537a90a67b75b304b14cf141112093a587916c670a6e52e1bb663fff74e8f31129884bc78779b00a2f3549f659815562a304e7a languageName: node linkType: hard -"@scure/bip39@npm:1.1.1": - version: 1.1.1 - resolution: "@scure/bip39@npm:1.1.1" +"@smithy/util-body-length-node@npm:^2.2.1": + version: 2.2.1 + resolution: "@smithy/util-body-length-node@npm:2.2.1" dependencies: - "@noble/hashes": "npm:~1.2.0" - "@scure/base": "npm:~1.1.0" - checksum: 10/08908145e0890e481e3398191424961d9ebfb8913fed6e6cdfc63eb1281bd1895244d46c0e8762b0e30d8dc6f498ed296311382fecbf034253838e3a50f60ca1 + tslib: "npm:^2.5.0" + checksum: 10/7e8df29ea7f2c08022c4339480ebde68173fb8147082123309253a6aa9a11055fde649483d743cfbac69f0789630e12e8e5afd276f55efe6a9b20bdf0ec6732d languageName: node linkType: hard -"@scure/bip39@npm:1.2.2": - version: 1.2.2 - resolution: "@scure/bip39@npm:1.2.2" +"@smithy/util-buffer-from@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/util-buffer-from@npm:2.1.1" dependencies: - "@noble/hashes": "npm:~1.3.2" - "@scure/base": "npm:~1.1.4" - checksum: 10/f71aceda10a7937bf3779fd2b4c4156c95ec9813269470ddca464cb8ab610d2451b173037f4b1e6dac45414e406e7adc7b5814c51279f4474d5d38140bbee542 + "@smithy/is-array-buffer": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/5de4cf8b2d9c5347990be5791882947a509ba00a55ee67589f327e4852309dac5278248317929519f5a9d2aa5dc1c11cd54803db962287909e0322b7f73332bc languageName: node linkType: hard -"@sentry/core@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/core@npm:5.30.0" +"@smithy/util-config-provider@npm:^2.2.1": + version: 2.2.1 + resolution: "@smithy/util-config-provider@npm:2.2.1" dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/minimal": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10/fef7808017cc9581e94c51fbce3ffeb6bdb62b30d94920fae143d298aed194176ac7c026923d569a33606b93a3747b877e78215a1668ed8eb44e5941527e17e0 + tslib: "npm:^2.5.0" + checksum: 10/bdca0bdf95cfaf67916e130356f80aa67555c1c423c0b98d283f2852782371b6fa09fee375a0a85eb43732a94733e0da7ad004b01f961dbd88f35a90258f0722 languageName: node linkType: hard -"@sentry/hub@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/hub@npm:5.30.0" +"@smithy/util-defaults-mode-browser@npm:^2.1.3": + version: 2.1.4 + resolution: "@smithy/util-defaults-mode-browser@npm:2.1.4" dependencies: - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10/b0e21a7acb1c363a3097c7578dd483b2e534bc62541977da7d3c643703767bbcfd65831b70b102fefa715e6b75004ca1dab680d117e1a7455e839042118c1051 + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/smithy-client": "npm:^2.4.2" + "@smithy/types": "npm:^2.10.1" + bowser: "npm:^2.11.0" + tslib: "npm:^2.5.0" + checksum: 10/18c1804650ec83fed5e9426520abed62c9772afb0f1bfb0956c032dc1ca71c7580ce4b86daa15ace6fbdc4942ebfb5505bf8ebba6f5b9ae161772f1c9648e6f0 languageName: node linkType: hard -"@sentry/minimal@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/minimal@npm:5.30.0" +"@smithy/util-defaults-mode-node@npm:^2.2.2": + version: 2.2.3 + resolution: "@smithy/util-defaults-mode-node@npm:2.2.3" dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10/e74bf519f5e284decb81eea8fd7c75b02827bde36c8ccef5ad0b941043e62a6d6578d7f1ad9dba33e03d240593140990b1999215a35abb344e2b4f3e09b15c90 + "@smithy/config-resolver": "npm:^2.1.4" + "@smithy/credential-provider-imds": "npm:^2.2.4" + "@smithy/node-config-provider": "npm:^2.2.4" + "@smithy/property-provider": "npm:^2.1.3" + "@smithy/smithy-client": "npm:^2.4.2" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/5dc3c584ffe4978dd2dd052345adf857b0b7dae1582fd7ae5f83657f1c368820cedadd61a69bfa3588610ee1fadbbf598f63d311ef9ed1e09776af759441de73 languageName: node linkType: hard -"@sentry/node@npm:^5.18.1": - version: 5.30.0 - resolution: "@sentry/node@npm:5.30.0" +"@smithy/util-endpoints@npm:^1.1.3": + version: 1.1.4 + resolution: "@smithy/util-endpoints@npm:1.1.4" dependencies: - "@sentry/core": "npm:5.30.0" - "@sentry/hub": "npm:5.30.0" - "@sentry/tracing": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - cookie: "npm:^0.4.1" - https-proxy-agent: "npm:^5.0.0" - lru_map: "npm:^0.3.3" - tslib: "npm:^1.9.3" - checksum: 10/9fa37b3ce646954f68e4b7506d17c67f5779c69cd432801aaf6796f9ecea9632eb8729b77b71a31dcd5a9f57fb7759fd213222955a667d8ad557df6e997a00c4 + "@smithy/node-config-provider": "npm:^2.2.4" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/3c57188e5bc5a46fcb4e124f9940ad442906f94ef41552204f477e4e341c8ebeb57bea0b19b1399838952c1df4037736a8fe468045cc616dd50650a1eaf4cb55 languageName: node linkType: hard -"@sentry/tracing@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/tracing@npm:5.30.0" +"@smithy/util-hex-encoding@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/util-hex-encoding@npm:2.1.1" dependencies: - "@sentry/hub": "npm:5.30.0" - "@sentry/minimal": "npm:5.30.0" - "@sentry/types": "npm:5.30.0" - "@sentry/utils": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10/7e74a29823b445adb104c323324348882987554d049e83e5d3439149d2677024350974161c28b1a55a2750509b030525f81056a48427be06183f3744220ba4b0 + tslib: "npm:^2.5.0" + checksum: 10/df805a72f6d28fc081c4080f0a9c67f1fa3416f40b45f7491990b10b9ee044c3141fb1963bbdfe03cf599c5fe8bd3ed856f1463c6917a0d9f647bd1f37c72514 languageName: node linkType: hard -"@sentry/types@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/types@npm:5.30.0" - checksum: 10/3ca60689871b298dbab16c1bb6fb4637f72d3c21820017bac9df1765fd560004862cc9e75fb438e5714048b3a9bc641c396cdbb3c3573ac62481d2ea83f1da6d +"@smithy/util-middleware@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/util-middleware@npm:2.1.3" + dependencies: + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/cdd89ce3c306ab62537a2267d32822271af77ad08d61b3ba327d4a13dfcd05a252d9ac2ce70d3fda4680541d17238acb0ca79a949bb5fbf27540211f3373b922 languageName: node linkType: hard -"@sentry/utils@npm:5.30.0": - version: 5.30.0 - resolution: "@sentry/utils@npm:5.30.0" +"@smithy/util-retry@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/util-retry@npm:2.1.3" dependencies: - "@sentry/types": "npm:5.30.0" - tslib: "npm:^1.9.3" - checksum: 10/4aa8acf7d0d9688c927a620cbb9fd37d6d2738f701863af772be329baca2cede909dcae6c7b4b449474787245c09212909ee740b4cae143d21ddb1fed910cc3a + "@smithy/service-error-classification": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/75278792d7f1dd981c4a5d71faae003bed4a8ea2973531183ed5480a2a33d8baf8fdb3a348e657b284b25dc35f0f685a076c53ec83828f9e26a34499a7c32c08 languageName: node linkType: hard -"@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d +"@smithy/util-stream@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/util-stream@npm:2.1.3" + dependencies: + "@smithy/fetch-http-handler": "npm:^2.4.3" + "@smithy/node-http-handler": "npm:^2.4.1" + "@smithy/types": "npm:^2.10.1" + "@smithy/util-base64": "npm:^2.1.1" + "@smithy/util-buffer-from": "npm:^2.1.1" + "@smithy/util-hex-encoding": "npm:^2.1.1" + "@smithy/util-utf8": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/6b5065d2b4cd63c4d767082c99c24157fb31ef485eb110e2a186b27c5bb749a300b507bcc9d26322ab19a0441dd1d2859ac85c974623b17b798eee4835016afb languageName: node linkType: hard -"@sindresorhus/is@npm:^4.0.0, @sindresorhus/is@npm:^4.6.0": - version: 4.6.0 - resolution: "@sindresorhus/is@npm:4.6.0" - checksum: 10/e7f36ed72abfcd5e0355f7423a72918b9748bb1ef370a59f3e5ad8d40b728b85d63b272f65f63eec1faf417cda89dcb0aeebe94015647b6054659c1442fe5ce0 +"@smithy/util-uri-escape@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/util-uri-escape@npm:2.1.1" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10/ca232b27b0ef25b3e3eca141454db1cc6d01b999b57b6b176c2af6578c38dbd1df5cb3d6984f0a30c55ea10b4e7d4e7758387da8ee674de91897b2c632a92995 languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.1 - resolution: "@sinonjs/commons@npm:3.0.1" +"@smithy/util-utf8@npm:^2.1.1": + version: 2.1.1 + resolution: "@smithy/util-utf8@npm:2.1.1" dependencies: - type-detect: "npm:4.0.8" - checksum: 10/a0af217ba7044426c78df52c23cedede6daf377586f3ac58857c565769358ab1f44ebf95ba04bbe38814fba6e316ca6f02870a009328294fc2c555d0f85a7117 + "@smithy/util-buffer-from": "npm:^2.1.1" + tslib: "npm:^2.5.0" + checksum: 10/736992921e50c2c96234dc5eab305a30d29b1cfa29ce5ad2ec0e4b3f2e0dc3e2d29303bd1362bd20fa2e66c5fd494c558f4b1050b91ead5e13a479903bb9686f languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" +"@smithy/util-waiter@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/util-waiter@npm:2.1.3" dependencies: - "@sinonjs/commons": "npm:^3.0.0" - checksum: 10/78155c7bd866a85df85e22028e046b8d46cf3e840f72260954f5e3ed5bd97d66c595524305a6841ffb3f681a08f6e5cef572a2cce5442a8a232dc29fb409b83e + "@smithy/abort-controller": "npm:^2.1.3" + "@smithy/types": "npm:^2.10.1" + tslib: "npm:^2.5.0" + checksum: 10/2afcaa900757eae5959b1a7a96ad059fdd32e94d27b14cf8f6a527f0e366ca8735cb9fcc514b8a3b8082ba3a7b1f71f505531d44042e7fa78e0a6cde715aae83 languageName: node linkType: hard @@ -3506,6 +4895,16 @@ __metadata: languageName: node linkType: hard +"@types/node-fetch@npm:^2.5.0": + version: 2.6.11 + resolution: "@types/node-fetch@npm:2.6.11" + dependencies: + "@types/node": "npm:*" + form-data: "npm:^4.0.0" + checksum: 10/c416df8f182ec3826278ea42557fda08f169a48a05e60722d9c8edd4e5b2076ae281c6b6601ad406035b7201f885b0257983b61c26b3f9eb0f41192a807b5de5 + languageName: node + linkType: hard + "@types/node-fetch@npm:^2.6.1": version: 2.6.2 resolution: "@types/node-fetch@npm:2.6.2" @@ -3639,6 +5038,15 @@ __metadata: languageName: node linkType: hard +"@types/tunnel@npm:^0.0.3": + version: 0.0.3 + resolution: "@types/tunnel@npm:0.0.3" + dependencies: + "@types/node": "npm:*" + checksum: 10/53e23a1f9fb14a491c00425b2a4fc443817564d77be5e1b95fcbeb6d009551b62ea82ffc3e5ca0c6b9f6b186824ca6ec46e7450c1bcd6674a46d1325f0116e24 + languageName: node + linkType: hard + "@types/ws@npm:^8.5.5": version: 8.5.5 resolution: "@types/ws@npm:8.5.5" @@ -3708,6 +5116,8 @@ __metadata: version: 0.0.0-use.local resolution: "DendrETH@workspace:." dependencies: + "@aws-sdk/client-s3": "npm:^3.521.0" + "@azure/storage-blob": "npm:^12.17.0" "@chainsafe/bls": "npm:^6.0.3" "@chainsafe/blst": "npm:^0.2.4" "@chainsafe/persistent-merkle-tree": "npm:^0.6.1" @@ -3729,6 +5139,7 @@ __metadata: "@types/jest": "npm:^29.5.12" "@types/mocha": "npm:^10.0.6" "@types/node": "npm:^18.0.0" + aws-sdk: "npm:^2.1566.0" bullmq: "npm:^3.7.1" chalk: "npm:^4.1.2" circom_tester: "npm:^0.0.14" @@ -3756,7 +5167,7 @@ __metadata: typescript: "npm:5.2.2" uuid: "npm:^9.0.0" winston: "npm:^3.10.0" - yargs: "npm:^17.7.1" + yargs: "npm:^17.7.2" bin: get-balances-input: dist/beacon-light-client/plonky2/get_balances_input/get_balances_input.js get-changed-validators: dist/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.js @@ -4254,6 +5665,24 @@ __metadata: languageName: node linkType: hard +"aws-sdk@npm:^2.1566.0": + version: 2.1568.0 + resolution: "aws-sdk@npm:2.1568.0" + dependencies: + buffer: "npm:4.9.2" + events: "npm:1.1.1" + ieee754: "npm:1.1.13" + jmespath: "npm:0.16.0" + querystring: "npm:0.2.0" + sax: "npm:1.2.1" + url: "npm:0.10.3" + util: "npm:^0.12.4" + uuid: "npm:8.0.0" + xml2js: "npm:0.6.2" + checksum: 10/e91ca6a8e258e879de986ba26f537affe21b5c60925d2b4eb8ff04116fcc733aee7b41f625304fcfe2ea8bc4dbe03e8cd7bd4dcd754a511b962d829391df89fb + languageName: node + linkType: hard + "aws-sign2@npm:~0.7.0": version: 0.7.0 resolution: "aws-sign2@npm:0.7.0" @@ -4387,7 +5816,7 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.3.0, base64-js@npm:^1.3.1": +"base64-js@npm:^1.0.2, base64-js@npm:^1.3.0, base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: 10/669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 @@ -4640,6 +6069,13 @@ __metadata: languageName: node linkType: hard +"bowser@npm:^2.11.0": + version: 2.11.0 + resolution: "bowser@npm:2.11.0" + checksum: 10/ef46500eafe35072455e7c3ae771244e97827e0626686a9a3601c436d16eb272dad7ccbd49e2130b599b617ca9daa67027de827ffc4c220e02f63c84b69a8751 + languageName: node + linkType: hard + "boxen@npm:^5.1.2": version: 5.1.2 resolution: "boxen@npm:5.1.2" @@ -4801,6 +6237,17 @@ __metadata: languageName: node linkType: hard +"buffer@npm:4.9.2": + version: 4.9.2 + resolution: "buffer@npm:4.9.2" + dependencies: + base64-js: "npm:^1.0.2" + ieee754: "npm:^1.1.4" + isarray: "npm:^1.0.0" + checksum: 10/4852a455e167bc8ca580c3c585176bbe0931c9929aeb68f3e0b49adadcb4e513fd0922a43efdf67ddb2e8785bbe8254ae17f4b69038dd06329ee9e3283c8508f + languageName: node + linkType: hard + "buffer@npm:^5.0.5, buffer@npm:^5.4.3, buffer@npm:^5.5.0, buffer@npm:^5.6.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -6820,6 +8267,20 @@ __metadata: languageName: node linkType: hard +"events@npm:1.1.1": + version: 1.1.1 + resolution: "events@npm:1.1.1" + checksum: 10/524355c4364b4851d53ccf4fdab9570e3953e1f64ebca15554f33e50bebb4e71ab947ac0dee6f4ed5a567ff2eda54b0489b278b4fb7c8ec1f4982150079dfd40 + languageName: node + linkType: hard + +"events@npm:^3.0.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10/a3d47e285e28d324d7180f1e493961a2bbb4cad6412090e4dec114f4db1f5b560c7696ee8e758f55e23913ede856e3689cd3aa9ae13c56b5d8314cd3b3ddd1be + languageName: node + linkType: hard + "eventsource@npm:^2.0.2": version: 2.0.2 resolution: "eventsource@npm:2.0.2" @@ -7026,6 +8487,17 @@ __metadata: languageName: node linkType: hard +"fast-xml-parser@npm:4.2.5": + version: 4.2.5 + resolution: "fast-xml-parser@npm:4.2.5" + dependencies: + strnum: "npm:^1.0.5" + bin: + fxparser: src/cli/cli.js + checksum: 10/4be7ebe24d6a9a60c278e1423cd86a7da9a77ec64c95563e2c552363caf7a777e0c87c9de1255c2f4e8dea9bce8905dc2bdc58a34e9f2b73c4693654456ad284 + languageName: node + linkType: hard + "fastfile@npm:0.0.18": version: 0.0.18 resolution: "fastfile@npm:0.0.18" @@ -8179,7 +9651,14 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": +"ieee754@npm:1.1.13": + version: 1.1.13 + resolution: "ieee754@npm:1.1.13" + checksum: 10/5c2f365168e629b164f6b8863c399af03e4515cafb690fe143039c9bd76b8f670af6539a43859bbfbe7df707eac755478515319a357a29f8c5f17ec2daa24a4c + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 @@ -8647,7 +10126,7 @@ __metadata: languageName: node linkType: hard -"isarray@npm:~1.0.0": +"isarray@npm:^1.0.0, isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" checksum: 10/f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab @@ -9195,6 +10674,13 @@ __metadata: languageName: node linkType: hard +"jmespath@npm:0.16.0": + version: 0.16.0 + resolution: "jmespath@npm:0.16.0" + checksum: 10/cc8b4a5cd2a22a79fc2695d66e5a43bc0020ec1ebdbe648440e796764751af2f495771ce877dea45ee6545530f0a1528450c3c3026bc0e9d976a93447af9fb74 + languageName: node + linkType: hard + "jquery.json-viewer@npm:1.5.0": version: 1.5.0 resolution: "jquery.json-viewer@npm:1.5.0" @@ -12276,6 +13762,20 @@ __metadata: languageName: node linkType: hard +"sax@npm:1.2.1": + version: 1.2.1 + resolution: "sax@npm:1.2.1" + checksum: 10/d64f65291ce127f191eb2c22012f8f608736e306db6a28306e618bb1324cfbc19f6783c49ce0d88e5628fde30878c29189c8fb3c62c83f079b471734e4df455d + languageName: node + linkType: hard + +"sax@npm:>=0.6.0": + version: 1.3.0 + resolution: "sax@npm:1.3.0" + checksum: 10/bb571b31d30ecb0353c2ff5f87b117a03e5fb9eb4c1519141854c1a8fbee0a77ddbe8045f413259e711833aa03da210887df8527d19cdc55f299822dbf4b34de + languageName: node + linkType: hard + "scrypt-js@npm:2.0.4": version: 2.0.4 resolution: "scrypt-js@npm:2.0.4" @@ -13069,6 +14569,13 @@ __metadata: languageName: node linkType: hard +"strnum@npm:^1.0.5": + version: 1.0.5 + resolution: "strnum@npm:1.0.5" + checksum: 10/d3117975db8372d4d7b2c07601ed2f65bf21cc48d741f37a8617b76370d228f2ec26336e53791ebc3638264d23ca54e6c241f57f8c69bd4941c63c79440525ca + languageName: node + linkType: hard + "supports-color@npm:6.0.0": version: 6.0.0 resolution: "supports-color@npm:6.0.0" @@ -13472,7 +14979,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.9.3": +"tslib@npm:^1.11.1, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb @@ -13486,7 +14993,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.6.1": +"tslib@npm:^2.2.0, tslib@npm:^2.3.1, tslib@npm:^2.5.0, tslib@npm:^2.6.1": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca @@ -13509,6 +15016,13 @@ __metadata: languageName: node linkType: hard +"tunnel@npm:^0.0.6": + version: 0.0.6 + resolution: "tunnel@npm:0.0.6" + checksum: 10/cf1ffed5e67159b901a924dbf94c989f20b2b3b65649cfbbe4b6abb35955ce2cf7433b23498bdb2c5530ab185b82190fce531597b3b4a649f06a907fc8702405 + languageName: node + linkType: hard + "tweetnacl-util@npm:^0.15.1": version: 0.15.1 resolution: "tweetnacl-util@npm:0.15.1" @@ -13796,6 +15310,16 @@ __metadata: languageName: node linkType: hard +"url@npm:0.10.3": + version: 0.10.3 + resolution: "url@npm:0.10.3" + dependencies: + punycode: "npm:1.3.2" + querystring: "npm:0.2.0" + checksum: 10/8c04e30d65907a1e01569cead632c74ea3af99d1b9b63dfbb2cf636640fe210f7a1bc16990aac04914dbb63ad2bd50effee3e782e0170d5938a11e8aa38358a5 + languageName: node + linkType: hard + "url@npm:^0.11.0": version: 0.11.0 resolution: "url@npm:0.11.0" @@ -13867,6 +15391,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:8.0.0": + version: 8.0.0 + resolution: "uuid@npm:8.0.0" + bin: + uuid: dist/bin/uuid + checksum: 10/5086c43bbe11e2337d9bb9a3b3a156311e5f5ba5da2de8152da9e00cfd5fbbf626d36e6a2838dde06e2105ac563bc298470acc0e4800c96fa2d50565c5782f8a + languageName: node + linkType: hard + "uuid@npm:^3.3.2": version: 3.4.0 resolution: "uuid@npm:3.4.0" @@ -13885,7 +15418,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^8.3.2": +"uuid@npm:^8.3.0, uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" bin: @@ -14798,6 +16331,33 @@ __metadata: languageName: node linkType: hard +"xml2js@npm:0.6.2": + version: 0.6.2 + resolution: "xml2js@npm:0.6.2" + dependencies: + sax: "npm:>=0.6.0" + xmlbuilder: "npm:~11.0.0" + checksum: 10/df29de8eeedb762c367d87945c39bcf54db19a2c522607491c266ed6184b5a749e37ff29cfaed0ac149da9ba332ac3dcf8e5ff2bd0a206be3343eca95faa941d + languageName: node + linkType: hard + +"xml2js@npm:^0.5.0": + version: 0.5.0 + resolution: "xml2js@npm:0.5.0" + dependencies: + sax: "npm:>=0.6.0" + xmlbuilder: "npm:~11.0.0" + checksum: 10/27c4d759214e99be5ec87ee5cb1290add427fa43df509d3b92d10152b3806fd2f7c9609697a18b158ccf2caa01e96af067cdba93196f69ca10c90e4f79a08896 + languageName: node + linkType: hard + +"xmlbuilder@npm:~11.0.0": + version: 11.0.1 + resolution: "xmlbuilder@npm:11.0.1" + checksum: 10/c8c3d208783718db5b285101a736cd8e6b69a5c265199a0739abaa93d1a1b7de5489fd16df4e776e18b2c98cb91f421a7349e99fd8c1ebeb44ecfed72a25091a + languageName: node + linkType: hard + "xmlhttprequest@npm:1.8.0": version: 1.8.0 resolution: "xmlhttprequest@npm:1.8.0" @@ -15003,6 +16563,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10/abb3e37678d6e38ea85485ed86ebe0d1e3464c640d7d9069805ea0da12f69d5a32df8e5625e370f9c96dd1c2dc088ab2d0a4dd32af18222ef3c4224a19471576 + languageName: node + linkType: hard + "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1" From ba2828d15b46ea9bd9d214ce9b68009dde66ab7c Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Thu, 29 Feb 2024 14:20:57 +0200 Subject: [PATCH 53/59] refactor(proof_storage): load env from the correct place Co-authored-by: Aneta Tsvetkova --- .../plonky2/circuits_executables/Cargo.lock | 52 +++++++++---------- .../plonky2/circuits_executables/Cargo.toml | 2 +- .../crud/proof_storage/azure_proof_storage.rs | 6 ++- .../src/crud/proof_storage/proof_storage.rs | 23 ++++---- 4 files changed, 43 insertions(+), 40 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.lock b/beacon-light-client/plonky2/circuits_executables/Cargo.lock index fd788e132..f8e3b7d71 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.lock +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.lock @@ -267,9 +267,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5635d8707f265c773282a22abe1ecd4fbe96a8eb2f0f14c0796f8016f11a41a" +checksum = "273fa47dafc9ef14c2c074ddddbea4561ff01b7f68d5091c0e9737ced605c01d" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -279,9 +279,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f82b9ae2adfd9d6582440d0eeb394c07f74d21b4c0cc72bdb73735c9e1a9c0e" +checksum = "6e38bab716c8bf07da24be07ecc02e0f5656ce8f30a891322ecdcb202f943b85" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -303,9 +303,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5076637347e7d0218e61facae853110682ae58efabd2f4e2a9e530c203d5fa7b" +checksum = "93d35d39379445970fc3e4ddf7559fff2c32935ce0b279f9cb27080d6b7c6d94" dependencies = [ "aws-credential-types", "aws-runtime", @@ -399,9 +399,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "404c64a104188ac70dd1684718765cb5559795458e446480e41984e68e57d888" +checksum = "8ada00a4645d7d89f296fe0ddbc3fe3554f03035937c849a05d37ddffc1f29a1" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -428,9 +428,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ec441341e019c441aa78472ed6d206cfe198026c495277a95ac5bebda520742" +checksum = "fcf7f09a27286d84315dfb9346208abb3b0973a692454ae6d0bc8d803fcce3b4" dependencies = [ "futures-util", "pin-project-lite", @@ -439,9 +439,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.60.5" +version = "0.60.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee554133eca2611b66d23548e48f9b44713befdb025ab76bc00185b878397a1" +checksum = "0fd4b66f2a8e7c84d7e97bda2666273d41d2a2e25302605bcf906b7b2661ae5e" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -471,9 +471,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.5" +version = "0.60.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85d6a0619f7b67183067fa3b558f94f90753da2df8c04aeb7336d673f804b0b8" +checksum = "b6ca214a6a26f1b7ebd63aa8d4f5e2194095643023f9608edf99a58247b9d80d" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -492,9 +492,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.60.5" +version = "0.60.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1c1b5186b6f5c579bf0de1bcca9dd3d946d6d51361ea1d18131f6a0b64e13ae" +checksum = "1af80ecf3057fb25fe38d1687e94c4601a7817c6a1e87c1b0635f7ecb644ace5" dependencies = [ "aws-smithy-types", ] @@ -511,9 +511,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b36f1f98c8d7b6256b86d4a3c8c4abb120670267baa9712a485ba477eaac9e9" +checksum = "fbb5fca54a532a36ff927fbd7407a7c8eb9c3b4faf72792ba2965ea2cad8ed55" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -536,9 +536,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180898ed701a773fb3fadbd94b9e9559125cf88eeb1815ab99e35d4f5f34f7fb" +checksum = "22389cb6f7cac64f266fb9f137745a9349ced7b47e0d2ba503e9e40ede4f7060" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -553,9 +553,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897f1db4020ad91f2c2421945ec49b7e3eb81cc3fea99e8b5dd5be721e697fed" +checksum = "f081da5481210523d44ffd83d9f0740320050054006c719eae0232d411f024d3" dependencies = [ "base64-simd", "bytes", @@ -576,18 +576,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.5" +version = "0.60.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16f94c9673412b7a72e3c3efec8de89081c320bf59ea12eed34c417a62ad600" +checksum = "0fccd8f595d0ca839f9f2548e66b99514a85f92feb4c01cf2868d93eb4888a42" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fbb5d48aae496f628e7aa2e41991dd4074f606d9e3ade1ce1059f293d40f9a2" +checksum = "d07c63521aa1ea9a9f92a701f1a08ce3fd20b46c6efc0d5c8947c1fd879e3df1" dependencies = [ "aws-credential-types", "aws-smithy-async", diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.toml b/beacon-light-client/plonky2/circuits_executables/Cargo.toml index 003fe5876..3197f31f0 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.toml +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.toml @@ -25,7 +25,7 @@ base64 = "0.21.5" async-trait = "0.1.74" tokio = { version = "1.35.1", features = ["full"] } aws-config = "1.1.1" -aws-sdk-s3 = "1.10.0" +aws-sdk-s3 = "1.17.0" azure_storage_blobs = "0.18.0" azure_core = "0.18.0" azure_storage = "0.18.0" diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs index 172cea2b8..9114891d5 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs @@ -1,3 +1,5 @@ +use std::env; + use super::proof_storage::ProofStorage; use anyhow::Result; use async_trait::async_trait; @@ -10,7 +12,9 @@ pub struct AzureStorage { } impl AzureStorage { - pub fn new(account: String, access_key: String, container: String) -> AzureStorage { + pub fn new(account: String, container: String) -> AzureStorage { + let access_key = env::var("STORAGE_ACCESS_KEY").expect("missing STORAGE_ACCOUNT_KEY"); + let storage_credentials = StorageCredentials::access_key(account.clone(), access_key.clone()); diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs index c840ddd92..a88c92de0 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs @@ -65,23 +65,22 @@ pub async fn create_proof_storage(args: &ArgMatches) -> Box { Box::new(FileStorage::new(folder_name.to_string())) } ProofStorageType::Azure => { - dotenv::dotenv().ok(); - - let access_key = env::var("STORAGE_ACCESS_KEY").expect("missing STORAGE_ACCOUNT_KEY"); - + dotenv::from_path("../.env").ok(); Box::new(AzureStorage::new( args.value_of("azure_account").unwrap().to_string(), - access_key, args.value_of("azure_container").unwrap().to_string(), )) } - ProofStorageType::Aws => Box::new( - AwsStorage::new( - args.value_of("aws_endpoint_url").unwrap().to_string(), - args.value_of("aws_region").unwrap().to_string(), - args.value_of("aws_bucket_name").unwrap().to_string(), + ProofStorageType::Aws => { + dotenv::from_path("../.env").ok(); + Box::new( + AwsStorage::new( + args.value_of("aws_endpoint_url").unwrap().to_string(), + args.value_of("aws_region").unwrap().to_string(), + args.value_of("aws_bucket_name").unwrap().to_string(), + ) + .await, ) - .await, - ), + } } } From de187f945301e44718f9db6e467e9bb611ca43cb Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Thu, 29 Feb 2024 14:23:33 +0200 Subject: [PATCH 54/59] fix(proof_storage): force path style Co-authored-by: Aneta Tsvetkova --- .../proof_storage/aws_proof_storage.ts | 5 ++--- .../plonky2/proof_storage/proof_storage.ts | 20 ++++++++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/beacon-light-client/plonky2/proof_storage/aws_proof_storage.ts b/beacon-light-client/plonky2/proof_storage/aws_proof_storage.ts index 48f7d2e99..fe99759c3 100644 --- a/beacon-light-client/plonky2/proof_storage/aws_proof_storage.ts +++ b/beacon-light-client/plonky2/proof_storage/aws_proof_storage.ts @@ -14,6 +14,7 @@ export class S3Storage implements IProofStorage { accessKeyId: process.env.AWS_ACCESS_KEY_ID || "unset", secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || "unset", }, + forcePathStyle: true, }); this.bucketName = bucketName; } @@ -61,7 +62,5 @@ export class S3Storage implements IProofStorage { await this.s3.send(new DeleteObjectCommand(params)); } - async quit(): Promise { - // Additional cleanup logic can be added if needed. - } + async quit(): Promise { } } diff --git a/beacon-light-client/plonky2/proof_storage/proof_storage.ts b/beacon-light-client/plonky2/proof_storage/proof_storage.ts index f98eb9505..454a903f0 100644 --- a/beacon-light-client/plonky2/proof_storage/proof_storage.ts +++ b/beacon-light-client/plonky2/proof_storage/proof_storage.ts @@ -14,19 +14,33 @@ export interface IProofStorage { export function createProofStorage(options: any): IProofStorage { const type = options['proof-storage-type']; - switch (type) { - case 'redis': return new RedisStorage(options['redis-host'], options['redis-port']); + case 'redis': { + const redisHost = options['redis-host']; + const redisPort = options['redis-port']; + + if (redisHost === undefined) { + throw new Error('redis-host was not provided'); + } + if (redisPort === undefined) { + throw new Error('redis-port was not provided'); + } + + return new RedisStorage(redisHost, redisPort); + } case 'file': { const folder = options['folder-name']; + if (folder === undefined) { throw new Error('folder-name was not provided'); } + return new FileStorage(folder); } case 'azure': { const account = options['azure-account']; const container = options['azure-container']; + if (account === undefined) { throw new Error('azure-account was not provided'); } @@ -54,7 +68,7 @@ export function createProofStorage(options: any): IProofStorage { throw new Error('aws-bucket-name was not provided'); } - return new S3Storage(options['aws-endopoint-url'], options['aws-region'], options['aws-bucket-name']); + return new S3Storage(endpoint, region, bucket); } default: throw new Error(`Proof storage type not supported: ${type}`); } From 1f90ecd09fde3e639d37059d47fb3a4f01c5f50c Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Thu, 29 Feb 2024 14:24:33 +0200 Subject: [PATCH 55/59] feat: implement command-line options builder for common options Co-authored-by: Aneta Tsvetkova --- beacon-light-client/plonky2/cmdline.ts | 90 ++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 beacon-light-client/plonky2/cmdline.ts diff --git a/beacon-light-client/plonky2/cmdline.ts b/beacon-light-client/plonky2/cmdline.ts new file mode 100644 index 000000000..ebb888383 --- /dev/null +++ b/beacon-light-client/plonky2/cmdline.ts @@ -0,0 +1,90 @@ +import yargs from "yargs"; +import config from "./common_config.json"; + +export class CommandLineOptionsBuilder { + usage(description: string) { + yargs.usage(description); + return this; + } + + withRedisOpts() { + yargs + .option('redis-host', { + describe: 'The Redis host', + type: 'string', + default: config['redis-host'], + description: 'Sets a custom redis connection', + }) + .option('redis-port', { + describe: 'The Redis port', + type: 'number', + default: Number(config['redis-port']), + description: 'Sets a custom redis connection', + }); + return this; + } + + withFileSStorageOps() { + yargs + .option('folder_name', { + describe: 'Sets the name of the folder proofs will be stored in', + type: 'string', + }); + + return this; + } + + withS3StorageOpts() { + yargs + .option('aws-endpoint-url', { + describe: 'The aws enpoint url', + type: 'string', + }) + .option('aws-region', { + describe: 'The aws region', + type: 'string', + }) + .option('aws-bucket-name', { + describe: 'The name of the aws bucket', + type: 'string', + }); + + return this; + } + + withAzureBlobStorageOpts() { + yargs + .option('azure-account-name', { + describe: 'Sets the name of the azure account', + type: 'string', + }) + .option('azure-container-name', { + describe: 'Sets the name of the azure container', + type: 'string', + }) + + return this; + + } + + withProofStorageOpts() { + return this + .option('proof_storage_type', { + describe: 'Sets the type of proof storage', + type: 'string', + }) + .withRedisOpts() + .withFileSStorageOps() + .withS3StorageOpts() + .withAzureBlobStorageOpts(); + } + + option(opt: string, settings: any) { + yargs.option(opt, settings); + return this; + } + + build() { + return yargs.argv; + } +} From 6be80c1988e74ee9a4a75f601fefe19ef1c0f9d8 Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Thu, 29 Feb 2024 14:29:01 +0200 Subject: [PATCH 56/59] refactor: command-line options in typescript scripts Co-authored-by: Aneta Tsvetkova --- .../get_balances_input/get_balances_input.ts | 27 ++++---------- .../delete_old_data.ts | 28 +++++---------- .../get_changed_validators.ts | 35 ++++--------------- 3 files changed, 22 insertions(+), 68 deletions(-) diff --git a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts index df30e08ca..1766a330f 100644 --- a/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts +++ b/beacon-light-client/plonky2/get_balances_input/get_balances_input.ts @@ -15,6 +15,7 @@ import { computeEpochAt } from '../../../libs/typescript/ts-utils/ssz-utils'; import validator_commitment_constants from '../constants/validator_commitment_constants.json'; import config from "../common_config.json"; import { Validator } from '../../../relay/types/types'; +import { CommandLineOptionsBuilder } from '../cmdline'; const CIRCUIT_SIZE = 8; let TAKE: number; @@ -22,24 +23,9 @@ let TAKE: number; (async () => { const { ssz } = await import('@lodestar/types'); - const options = yargs - .usage( - 'Usage: -redis-host -redis-port -take ', - ) - .option('redis-host ', { - alias: 'redis-host', - describe: 'The Redis host', - type: 'string', - default: config['redis-host'], - description: 'Sets a custom redis connection', - }) - .option('redis-port', { - alias: 'redis-port', - describe: 'The Redis port', - type: 'number', - default: Number(config['redis-port']), - description: 'Sets a custom redis connection', - }) + const options = new CommandLineOptionsBuilder() + .usage('Usage: -redis-host -redis-port -take ') + .withRedisOpts() .option('beacon-node', { alias: 'beacon-node', describe: 'The beacon node url', @@ -68,12 +54,13 @@ let TAKE: number; default: false, description: 'Runs the tool without doing actual calculations.', }) - .options('offset', { + .option('offset', { alias: 'offset', describe: 'Index offset in the validator set', type: 'number', default: undefined, - }).argv; + }) + .build(); const redis = new RedisLocal(options['redis-host'], options['redis-port']); diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts index 62e77a82c..d6806396c 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/delete_old_data.ts @@ -1,34 +1,22 @@ import { Redis as RedisLocal } from '../../../relay/implementations/redis'; import validator_commitment_constants from '../constants/validator_commitment_constants.json'; -import yargs from 'yargs'; import { createProofStorage } from '../proof_storage/proof_storage'; +import { CommandLineOptionsBuilder } from '../cmdline'; + +require('dotenv').config({ path: '../.env' }); (async () => { - const options = yargs - .usage( - 'Usage: -redis-host -redis-port -take ', - ) - .option('redis-host ', { - alias: 'redis-host', - describe: 'The Redis host', - type: 'string', - default: '127.0.0.1', - description: 'Sets a custom redis connection', - }) - .option('redis-port', { - alias: 'redis-port', - describe: 'The Redis port', - type: 'number', - default: 6379, - description: 'Sets a custom redis connection', - }) + const options = new CommandLineOptionsBuilder() + .usage('Usage: -redis-host -redis-port -take ') + .withProofStorageOpts() .option('oldest-epoch', { alias: 'oldest-epoch', describe: 'The oldest epoch for which we keep data', type: 'number', demandOption: true, - }).argv; + }) + .build(); const redis = new RedisLocal(options['redis-host'], options['redis-port']); const proofStorage = createProofStorage(options) diff --git a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts index b801e2333..e132f0bc2 100644 --- a/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts +++ b/beacon-light-client/plonky2/validators_commitment_mapper_tree/get_changed_validators.ts @@ -1,67 +1,46 @@ -import yargs from 'yargs'; -import config from "../common_config.json"; +import { CommandLineOptionsBuilder } from '../cmdline'; import { CommitmentMapperScheduler } from './scheduler'; +import config from "../common_config.json"; (async () => { - const options = yargs - .usage( - 'Usage: -redis-host -redis-port -take ', - ) - .option('redis-host ', { - alias: 'redis-host', - describe: 'The Redis host', - type: 'string', - default: config['redis-host'], - description: 'Sets a custom redis connection', - }) - .option('redis-port', { - alias: 'redis-port', - describe: 'The Redis port', - type: 'number', - default: Number(config['redis-port']), - description: 'Sets a custom redis connection', - }) + const options = new CommandLineOptionsBuilder() + .usage('Usage: -redis-host -redis-port -take ') + .withRedisOpts() .option('beacon-node', { - alias: 'beacon-node', describe: 'The beacon node url', type: 'string', default: config['beacon-node'], description: 'Sets a custom beacon node url', }) .option('sync-epoch', { - alias: 'sync-epoch', describe: 'The sync epoch', type: 'number', default: undefined, description: 'Starts syncing from this epoch', }) - .options('offset', { - alias: 'offset', + .option('offset', { describe: 'Index offset in the validator set', type: 'number', default: undefined, }) .option('take', { - alias: 'take', describe: 'The number of validators to take', type: 'number', default: Infinity, description: 'Sets the number of validators to take', }) .option('mock', { - alias: 'mock', describe: 'Runs the tool without doing actual calculations', type: 'boolean', default: false, description: 'Runs the tool without doing actual calculations.', }) .option('run-once', { - alias: 'run-once', describe: 'Should run script for one epoch', type: 'boolean', default: false, }) - .argv; + .build(); const scheduler = new CommitmentMapperScheduler(); await scheduler.init(options); From fbd1336ab3388b73fdf5ebf750aa395ccee4cab4 Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Thu, 29 Feb 2024 19:53:29 +0200 Subject: [PATCH 57/59] wip Co-authored-by: Aneta Tsvetkova --- .yarnrc.yml | 4 +- .../plonky2/circuits/Cargo.toml | 2 +- .../plonky2/circuits_executables/Cargo.lock | 2 - .../plonky2/circuits_executables/Cargo.toml | 2 +- .../circuits_executables/src/crud/common.rs | 54 ++++++++++--------- beacon-light-client/plonky2/tsconfig.json | 3 ++ relay/implementations/redis.ts | 51 +++++++++--------- yarn-project.nix | 12 ++--- 8 files changed, 69 insertions(+), 61 deletions(-) diff --git a/.yarnrc.yml b/.yarnrc.yml index 8b76735e6..9525ac22e 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -8,8 +8,8 @@ logFilters: - code: YN0007 level: discard -# nodeLinker: node-modules -nodeLinker: pnp +nodeLinker: node-modules +# nodeLinker: pnp isolatedNixBuilds: ["classic-level", "sqlite3", "bcrypt", "bcrypto", "leveldown", "redis-commander", "secp256k1", "blake-hash", "@chainsafe/blst", "keccak", "@trufflesuite/bigint-buffer", "msgpackr-extract", "bufferutil", "bufferutil", "utf-8-validate", "leveldown"] plugins: diff --git a/beacon-light-client/plonky2/circuits/Cargo.toml b/beacon-light-client/plonky2/circuits/Cargo.toml index e63dcc2cd..2562faa3d 100644 --- a/beacon-light-client/plonky2/circuits/Cargo.toml +++ b/beacon-light-client/plonky2/circuits/Cargo.toml @@ -21,6 +21,6 @@ num = { version = "0.4.0", default-features = false } log = "0.4.14" redis-work-queue = "0.1.3" futures-lite = "1" -redis = { version = "0.23", features = ["json", "aio", "tokio-comp"] } +redis = { version = "0.23", features = ["aio", "tokio-comp"] } typenum = "1.16.0" diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.lock b/beacon-light-client/plonky2/circuits_executables/Cargo.lock index f8e3b7d71..13c8520a6 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.lock +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.lock @@ -2536,8 +2536,6 @@ dependencies = [ "percent-encoding", "pin-project-lite", "ryu", - "serde", - "serde_json", "sha1_smol", "socket2 0.4.10", "tokio", diff --git a/beacon-light-client/plonky2/circuits_executables/Cargo.toml b/beacon-light-client/plonky2/circuits_executables/Cargo.toml index 3197f31f0..efef65b63 100644 --- a/beacon-light-client/plonky2/circuits_executables/Cargo.toml +++ b/beacon-light-client/plonky2/circuits_executables/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" circuits = { path = "../circuits" } num = { version = "0.4.0", features = ["serde"] } plonky2 = { git = "https://github.com/metacraft-labs/plonky2" } -redis = { version = "0.23", features = ["json", "aio", "tokio-comp"] } +redis = { version = "0.23", features = ["aio", "tokio-comp"] } serde = "1.0.164" serde_json = "1.0.96" anyhow = "1.0.71" diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs index 58fec034e..86ba76aa1 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/common.rs @@ -24,7 +24,7 @@ use plonky2::{ circuit_data::CircuitData, config::PoseidonGoldilocksConfig, proof::ProofWithPublicInputs, }, }; -use redis::{aio::Connection, AsyncCommands, JsonAsyncCommands}; +use redis::{aio::Connection, AsyncCommands}; use serde::{de::DeserializeOwned, Deserialize, Deserializer, Serialize, Serializer}; use super::proof_storage::proof_storage::ProofStorage; @@ -180,12 +180,11 @@ pub async fn fetch_validator_balance_input( } pub async fn fetch_final_layer_input(con: &mut Connection) -> Result { - let result: String = con - .json_get(VALIDATOR_COMMITMENT_CONSTANTS.final_proof_input_key, "$") + let json: String = con + .get(VALIDATOR_COMMITMENT_CONSTANTS.final_proof_input_key) .await?; - let result_vec = &serde_json::from_str::>(&result)?; - ensure!(!result_vec.is_empty(), "Could not fetch json object"); - Ok(result_vec[0].clone()) + let result = serde_json::from_str::(&json)?; + Ok(result) } pub async fn save_balance_proof( @@ -214,8 +213,9 @@ pub async fn save_balance_proof( .set_proof(proof_index, &proof.to_bytes()) .await?; - con.json_set( - format!( + save_json_object( + con, + &format!( "{}:{}:{}", VALIDATOR_COMMITMENT_CONSTANTS .balance_verification_proof_key @@ -223,7 +223,6 @@ pub async fn save_balance_proof( level, index ), - "$", &balance_proof, ) .await?; @@ -243,11 +242,9 @@ pub async fn save_final_proof( proof: proof.to_bytes(), }; - con.json_set( - VALIDATOR_COMMITMENT_CONSTANTS - .final_layer_proof_key - .to_owned(), - "$", + save_json_object( + con, + &VALIDATOR_COMMITMENT_CONSTANTS.final_layer_proof_key, &final_proof, ) .await?; @@ -370,15 +367,15 @@ pub async fn save_zero_validator_proof( .set_proof(proof_index, &proof.to_bytes()) .await?; - con.json_set( - format!( + save_json_object( + con, + &format!( "{}:zeroes:{}", VALIDATOR_COMMITMENT_CONSTANTS .validator_proof_key .to_owned(), depth, ), - "$", &validator_proof, ) .await?; @@ -410,8 +407,9 @@ pub async fn save_validator_proof( .set_proof(proof_index, &proof.to_bytes()) .await?; - con.json_set( - format!( + save_json_object( + con, + &format!( "{}:{}:{}", VALIDATOR_COMMITMENT_CONSTANTS .validator_proof_key @@ -419,7 +417,6 @@ pub async fn save_validator_proof( gindex, epoch ), - "$", &validator_proof, ) .await?; @@ -454,10 +451,19 @@ pub async fn fetch_redis_json_object( con: &mut Connection, key: String, ) -> Result { - let result: String = con.json_get(key, "$").await?; - let result_vec = &serde_json::from_str::>(&result)?; - ensure!(!result_vec.is_empty(), "Could not fetch json object"); - Ok(result_vec[0].clone()) + let json: String = con.get(key).await?; + let result = serde_json::from_str::(&json)?; + Ok(result) +} + +pub async fn save_json_object( + con: &mut Connection, + key: &str, + object: &T, +) -> Result<()> { + let json = serde_json::to_string(object)?; + con.set(key, json).await?; + Ok(()) } pub async fn fetch_proof( diff --git a/beacon-light-client/plonky2/tsconfig.json b/beacon-light-client/plonky2/tsconfig.json index 6f83eb665..d05129977 100644 --- a/beacon-light-client/plonky2/tsconfig.json +++ b/beacon-light-client/plonky2/tsconfig.json @@ -1,3 +1,6 @@ { "extends": "../../tsconfig.json", + "compilerOptions": { + "strictPropertyInitialization": false + } } diff --git a/relay/implementations/redis.ts b/relay/implementations/redis.ts index 35093835d..a716993a5 100644 --- a/relay/implementations/redis.ts +++ b/relay/implementations/redis.ts @@ -11,7 +11,7 @@ import { } from '../types/types'; import { RedisClientType, createClient } from 'redis'; import CONSTANTS from '../../beacon-light-client/plonky2/constants/validator_commitment_constants.json'; -import { Redis as RedisClient} from 'ioredis'; +import { Redis as RedisClient } from 'ioredis'; import chalk from 'chalk'; export class Redis implements IRedis { @@ -88,12 +88,21 @@ export class Redis implements IRedis { const latestEpoch = await this.getLatestEpoch(`${CONSTANTS.validatorProofKey}:${gindex}`, BigInt(epoch)); if (latestEpoch === null) { const depth = Math.floor(Math.log2(Number(gindex) + 1)); - const result = await this.client.json_get(`${CONSTANTS.validatorProofKey}:zeroes:${depth}`, hashKey) as any; - return result; + const result = await this.client.get(`${CONSTANTS.validatorProofKey}:zeroes:${depth}`); + if (result === null) { + return null; + } + + return JSON.parse(result)[hashKey]; + } const key = `${CONSTANTS.validatorProofKey}:${gindex}:${latestEpoch}`; - return this.client.json_get(key, hashKey) as any; + const result = await this.client.get(key); + if (result === null) { + return null; + } + return JSON.parse(result)[hashKey]; } async notifyAboutNewProof(): Promise { @@ -131,11 +140,11 @@ export class Redis implements IRedis { let allValidators: Validator[] = new Array(keys.length); for (const [keyBatchIndex, batchKeys] of splitIntoBatches(keys, batchSize).entries()) { - const res = await this.client.json_mget(batchKeys, '$'); + const res = await this.client.mget(batchKeys); if (res === null) { continue; } - const batchValidators = (res as any[]).filter((v) => v !== null).flat(); + const batchValidators = (res.filter((v) => v !== null) as string[]).map((json: any) => JSON.parse(json)); for (const [index, redisValidator] of batchValidators.entries()) { try { @@ -199,10 +208,7 @@ export class Redis implements IRedis { async isZeroBalanceEmpty() { await this.waitForConnection(); - const result = await this.client.json_get( - `${CONSTANTS.validatorBalanceInputKey}:${CONSTANTS.validatorRegistryLimit}`, - ); - + const result = await this.client.get(`${CONSTANTS.validatorBalanceInputKey}:${CONSTANTS.validatorRegistryLimit}`); return result == null; } @@ -213,12 +219,11 @@ export class Redis implements IRedis { await this.addToEpochLookup(`${CONSTANTS.validatorKey}:${validator.index}`, epoch); return [ `${CONSTANTS.validatorKey}:${validator.index}:${epoch}`, - '$', JSON.stringify(validator.data), ]; })); - await this.client.sendCommand(new RedisReJSON.Command('JSON.MSET', args)); + await this.client.mset(args); } async saveValidatorBalancesInput( @@ -229,12 +234,11 @@ export class Redis implements IRedis { const args = inputsWithIndices.map(ii => { return [ `${CONSTANTS.validatorBalanceInputKey}:${ii.index}`, - '$', JSON.stringify(ii.input), ]; }); - await this.client.sendCommand(new RedisReJSON.Command('JSON.MSET', args)); + await this.client.mset(args); } async saveFinalProofInput(input: { @@ -248,10 +252,9 @@ export class Redis implements IRedis { }) { await this.waitForConnection(); - await this.client.json_set( + await this.client.set( CONSTANTS.finalProofInputKey, - "$", - input as any + JSON.stringify(input), ); } @@ -266,7 +269,7 @@ export class Redis implements IRedis { }, ): Promise { await this.waitForConnection(); - await this.client.json_set(`${CONSTANTS.validatorProofKey}:${gindex}:${epoch}`, "$", proof as any); + await this.client.set(`${CONSTANTS.validatorProofKey}:${gindex}:${epoch}`, JSON.stringify(proof)); } async saveZeroValidatorProof( @@ -279,7 +282,7 @@ export class Redis implements IRedis { }, ): Promise { await this.waitForConnection(); - await this.client.json_set(`${CONSTANTS.validatorProofKey}:zeroes:${depth}`, "$", proof as any); + await this.client.set(`${CONSTANTS.validatorProofKey}:zeroes:${depth}`, JSON.stringify(proof)); } async saveBalanceProof( @@ -297,10 +300,9 @@ export class Redis implements IRedis { ): Promise { await this.waitForConnection(); - await this.client.json_set( + await this.client.set( `${CONSTANTS.balanceVerificationProofKey}:${level}:${index}`, - '$', - proof as any, + JSON.stringify(proof), ); } @@ -363,10 +365,9 @@ export class Redis implements IRedis { ): Promise { await this.waitForConnection(); - await this.client.json_set( + await this.client.set( `proof:${prevSlot}:${nextSlot}`, - '$', - proof as any, + JSON.stringify(proof), ); } diff --git a/yarn-project.nix b/yarn-project.nix index 5a10185a9..6a4fb9828 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -130,6 +130,11 @@ let "blake-hash@npm:2.0.0" \ ${isolated."blake-hash@npm:2.0.0"} \ ".yarn/unplugged/blake-hash-npm-2.0.0-c63b9a2c2d/node_modules/blake-hash" + echo 'injecting build for bcrypt' + yarn nixify inject-build \ + "bcrypt@npm:5.0.1" \ + ${isolated."bcrypt@npm:5.0.1"} \ + ".yarn/unplugged/bcrypt-npm-5.0.1-6815be1cfe/node_modules/bcrypt" echo 'injecting build for bcrypto' yarn nixify inject-build \ "bcrypto@npm:5.4.0" \ @@ -185,11 +190,6 @@ let "utf-8-validate@npm:5.0.10" \ ${isolated."utf-8-validate@npm:5.0.10"} \ ".yarn/unplugged/utf-8-validate-npm-5.0.10-93e9b6f750/node_modules/utf-8-validate" - echo 'injecting build for bcrypt' - yarn nixify inject-build \ - "bcrypt@npm:5.0.1" \ - ${isolated."bcrypt@npm:5.0.1"} \ - ".yarn/unplugged/bcrypt-npm-5.0.1-6815be1cfe/node_modules/bcrypt" echo 'injecting build for redis-commander' yarn nixify inject-build \ "redis-commander@npm:0.8.0" \ @@ -254,6 +254,7 @@ let isolated."msgpackr-extract@npm:3.0.0" = optionalOverride (args.overrideMsgpackrExtractAttrs or null) (mkIsolatedBuild { pname = "msgpackr-extract"; version = "3.0.0"; reference = "npm:3.0.0"; }); isolated."blake-hash@npm:2.0.0" = optionalOverride (args.overrideBlakeHashAttrs or null) (mkIsolatedBuild { pname = "blake-hash"; version = "2.0.0"; reference = "npm:2.0.0"; }); +isolated."bcrypt@npm:5.0.1" = optionalOverride (args.overrideBcryptAttrs or null) (mkIsolatedBuild { pname = "bcrypt"; version = "5.0.1"; reference = "npm:5.0.1"; }); isolated."bcrypto@npm:5.4.0" = optionalOverride (args.overrideBcryptoAttrs or null) (mkIsolatedBuild { pname = "bcrypto"; version = "5.4.0"; reference = "npm:5.4.0"; }); isolated."keccak@npm:3.0.3" = optionalOverride (args.overrideKeccakAttrs or null) (mkIsolatedBuild { pname = "keccak"; version = "3.0.3"; reference = "npm:3.0.3"; }); isolated."secp256k1@npm:4.0.3" = optionalOverride (args.overrideSecp256k1Attrs or null) (mkIsolatedBuild { pname = "secp256k1"; version = "4.0.3"; reference = "npm:4.0.3"; }); @@ -265,6 +266,5 @@ isolated."utf-8-validate@npm:5.0.7" = optionalOverride (args.overrideUtf8Validat isolated."msgpackr-extract@npm:3.0.2" = optionalOverride (args.overrideMsgpackrExtractAttrs or null) (mkIsolatedBuild { pname = "msgpackr-extract"; version = "3.0.2"; reference = "npm:3.0.2"; }); isolated."bufferutil@npm:4.0.7" = optionalOverride (args.overrideBufferutilAttrs or null) (mkIsolatedBuild { pname = "bufferutil"; version = "4.0.7"; reference = "npm:4.0.7"; }); isolated."utf-8-validate@npm:5.0.10" = optionalOverride (args.overrideUtf8ValidateAttrs or null) (mkIsolatedBuild { pname = "utf-8-validate"; version = "5.0.10"; reference = "npm:5.0.10"; }); -isolated."bcrypt@npm:5.0.1" = optionalOverride (args.overrideBcryptAttrs or null) (mkIsolatedBuild { pname = "bcrypt"; version = "5.0.1"; reference = "npm:5.0.1"; }); isolated."redis-commander@npm:0.8.0" = optionalOverride (args.overrideRedisCommanderAttrs or null) (mkIsolatedBuild { pname = "redis-commander"; version = "0.8.0"; reference = "npm:0.8.0"; }); in overriddenProject From 5943c6c0fdb780b96caac89614465105b45144a7 Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Fri, 1 Mar 2024 18:04:34 +0200 Subject: [PATCH 58/59] feat(proof_storage): implement get_keys_count for aws s3 Co-authored-by: Aneta Tsvetkova --- .../crud/proof_storage/aws_proof_storage.rs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs index a99bdafdf..a17688264 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/aws_proof_storage.rs @@ -74,7 +74,26 @@ impl ProofStorage for AwsStorage { Ok(()) } - async fn get_keys_count(&mut self, _pattern: String) -> usize { - unimplemented!() + async fn get_keys_count(&mut self, pattern: String) -> usize { + let mut count = 0; + let pattern = glob::Pattern::new(&pattern).unwrap(); + + let mut response = self + .client + .list_objects_v2() + .bucket(self.bucket_name.clone()) + .max_keys(10) // In this example, go 10 at a time. + .into_paginator() + .send(); + + while let Some(Ok(result)) = response.next().await { + count += result + .contents() + .iter() + .filter(|&item| pattern.matches(item.key().unwrap())) + .count(); + } + + count } } From ea0c8cca74a3992ac27b94b7f370ecee27141d50 Mon Sep 17 00:00:00 2001 From: Martin Ivanov Date: Fri, 1 Mar 2024 18:07:30 +0200 Subject: [PATCH 59/59] feat(proof_storage): azure auth and get_keys_count implementation Co-authored-by: Aneta Tsvetkova --- .../crud/proof_storage/azure_proof_storage.rs | 47 ++++++++++++++----- .../src/crud/proof_storage/proof_storage.rs | 5 +- .../proof_storage/azure_proof_storage.ts | 8 ++-- .../plonky2/proof_storage/proof_storage.ts | 12 ++--- 4 files changed, 45 insertions(+), 27 deletions(-) diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs index 9114891d5..b4d1abf37 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/azure_proof_storage.rs @@ -3,8 +3,10 @@ use std::env; use super::proof_storage::ProofStorage; use anyhow::Result; use async_trait::async_trait; -use azure_storage::StorageCredentials; -use azure_storage_blobs::prelude::{ClientBuilder, ContainerClient}; +use azure_storage::ConnectionString; + +use azure_storage_blobs::container::operations::BlobItem; +use azure_storage_blobs::prelude::*; use futures::StreamExt; pub struct AzureStorage { @@ -12,14 +14,18 @@ pub struct AzureStorage { } impl AzureStorage { - pub fn new(account: String, container: String) -> AzureStorage { - let access_key = env::var("STORAGE_ACCESS_KEY").expect("missing STORAGE_ACCOUNT_KEY"); - - let storage_credentials = - StorageCredentials::access_key(account.clone(), access_key.clone()); + pub fn new(container: String) -> AzureStorage { + let connection_string = env::var("AZURE_CONNECTION_STRING").unwrap(); + let account = env::var("STORAGE_ACCOUNT").unwrap(); - let container_client = - ClientBuilder::new(account, storage_credentials).container_client(&container); + let container_client = ClientBuilder::new( + account, + ConnectionString::new(connection_string.as_str()) + .unwrap() + .storage_credentials() + .unwrap(), + ) + .container_client(&container); AzureStorage { container_client } } @@ -60,7 +66,26 @@ impl ProofStorage for AzureStorage { Ok(()) } - async fn get_keys_count(&mut self, _pattern: String) -> usize { - unimplemented!() + async fn get_keys_count(&mut self, pattern: String) -> usize { + let mut count = 0; + let pattern = glob::Pattern::new(&pattern).unwrap(); + let mut iter = self.container_client.list_blobs().into_stream(); + + while let Some(Ok(reponse)) = iter.next().await { + count += reponse + .blobs + .items + .iter() + .filter(|&item| { + if let BlobItem::Blob(blob) = item { + pattern.matches(&blob.name) + } else { + false + } + }) + .count(); + } + + count } } diff --git a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs index a88c92de0..36b1624c5 100644 --- a/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs +++ b/beacon-light-client/plonky2/circuits_executables/src/crud/proof_storage/proof_storage.rs @@ -66,10 +66,7 @@ pub async fn create_proof_storage(args: &ArgMatches) -> Box { } ProofStorageType::Azure => { dotenv::from_path("../.env").ok(); - Box::new(AzureStorage::new( - args.value_of("azure_account").unwrap().to_string(), - args.value_of("azure_container").unwrap().to_string(), - )) + Box::new(AzureStorage::new(env::var("STORAGE_CONTAINER").unwrap())) } ProofStorageType::Aws => { dotenv::from_path("../.env").ok(); diff --git a/beacon-light-client/plonky2/proof_storage/azure_proof_storage.ts b/beacon-light-client/plonky2/proof_storage/azure_proof_storage.ts index 262fd5ce0..3afe218e7 100644 --- a/beacon-light-client/plonky2/proof_storage/azure_proof_storage.ts +++ b/beacon-light-client/plonky2/proof_storage/azure_proof_storage.ts @@ -1,12 +1,12 @@ import { BlobServiceClient, ContainerClient } from "@azure/storage-blob"; import { IProofStorage } from "./proof_storage"; -export class AzureStorage implements IProofStorage { +export class AzureBlobStorage implements IProofStorage { private containerClient: ContainerClient; - constructor(connectionString: string, containerName: string) { - const blobServiceClient = BlobServiceClient.fromConnectionString(connectionString); - this.containerClient = blobServiceClient.getContainerClient(containerName); + constructor(container: string) { + const blobServiceClient = BlobServiceClient.fromConnectionString(process.env.AZURE_CONNECTION_STRING!); + this.containerClient = blobServiceClient.getContainerClient(container); } async getProof(key: string): Promise { diff --git a/beacon-light-client/plonky2/proof_storage/proof_storage.ts b/beacon-light-client/plonky2/proof_storage/proof_storage.ts index 454a903f0..d096e44c4 100644 --- a/beacon-light-client/plonky2/proof_storage/proof_storage.ts +++ b/beacon-light-client/plonky2/proof_storage/proof_storage.ts @@ -1,5 +1,5 @@ import { S3Storage } from './aws_proof_storage'; -import { AzureStorage } from './azure_proof_storage'; +import { AzureBlobStorage } from './azure_proof_storage'; import { FileStorage } from './file_proof_storage'; import { RedisStorage } from './redis_proof_storage'; @@ -38,17 +38,13 @@ export function createProofStorage(options: any): IProofStorage { return new FileStorage(folder); } case 'azure': { - const account = options['azure-account']; - const container = options['azure-container']; + const container = process.env.STORAGE_CONTAINER; - if (account === undefined) { - throw new Error('azure-account was not provided'); - } if (container === undefined) { - throw new Error('azure-container was not provided'); + throw new Error('STORAGE_CONTAINER env var was not provided') } - return new AzureStorage('placeholder', 'placeholder'); + return new AzureBlobStorage(container); } case 'aws': {